异步-stm32F4DISCOVERY串口通信问题

问题描述

stm32F4DISCOVERY串口通信问题

void RCC_Configuration(void)
{
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);

RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART3, ENABLE);
}

void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Configure USART Tx and Rx as alternate function push-pull */
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_Init(GPIOD, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

GPIO_InitStructure.GPIO_Pin =GPIO_Pin_9;
GPIO_Init(GPIOD, &GPIO_InitStructure);

 GPIO_PinAFConfig(GPIOD,GPIO_PinSource8,GPIO_AF_USART3);

GPIO_PinAFConfig(GPIOD,GPIO_PinSource9,GPIO_AF_USART3);

}
void USART_Configuration(void)
{
USART_InitTypeDef USART_InitStructure;

USART_InitStructure.USART_BaudRate = 9600;
USART_InitStructure.USART_WordLength =USART_WordLength_8b;
USART_InitStructure.USART_StopBits = USART_StopBits_1;
USART_InitStructure.USART_Parity = USART_Parity_No ;
USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
USART_Init(USART3,&USART_InitStructure); /* Configure USART1 basic and asynchronous paramters */  

    //USART_ITConfig(USART3,USART_IT_RXNE,ENABLE);
    USART_ITConfig(USART3,USART_IT_TXE,ENABLE);

USART_Cmd(USART3, ENABLE);   /* Enable USART1 */  

    USART_ClearITPendingBit(USART3,USART_IT_TC);

}

void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;//?????

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);

NVIC_InitStructure.NVIC_IRQChannel = USART3_IRQn;

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

NVIC_Init(&NVIC_InitStructure);
}

int main(void)
{
RCC_Configuration();
GPIO_Configuration();
NVIC_Configuration();
USART_Configuration();

while(1);

}

volatile char StringLoop[] = "The quick brown fox jumps over the lazy dog";

void USART3_IRQHandler(void)
{
static int tx_index = 0;

// static int rx_index = 0;

if (USART_GetITStatus(USART3, USART_IT_TXE) != RESET) // Transmit the string in a loop

{

USART_ClearITPendingBit(USART3, USART_IT_TXE);
USART_SendData(USART3, StringLoop[tx_index++]);

if (tx_index >= (sizeof(StringLoop) - 1))
  tx_index = 0;

}
}

就是这个程序为什么会不停的发送数据,PC接收端一直在接收,不是清除了标志位吗,想问问大家啊

解决方案

http://blog.csdn.net/metalseed/article/details/9845815

时间: 2024-09-09 21:14:00

异步-stm32F4DISCOVERY串口通信问题的相关文章

设置-pic16f877a单片机异步串口通信波特率具体算法公式?

问题描述 pic16f877a单片机异步串口通信波特率具体算法公式? 晶振4Mhz,我想设置波特率为38400bps,SPBRG=?

Win10 IoT C#开发 4 - UART 串口通信

原文:Win10 IoT C#开发 4 - UART 串口通信 Windows 10 IoT Core 是微软针对物联网市场的一个重要产品,既可以开发设备UI与用户交互式操作,又可以控制GPIO等接口,使得原来嵌入式繁琐的开发变得简单.通过Remote Debug功能可以进行断点追踪调试.C#语言本身也有很好的用户基础,相信Win10 IoT 不远的将来会火起来.上个月帮朋友解决了关于Win10 IoT 的一些技术问题,当前也有很多公司在尝试采用Win10 IoT进行开发,可能也会遇到这些问题,

《单片机串口通信及测控应用实战详解》——6.3 PC端程序设计

6.3 PC端程序设计 单片机串口通信及测控应用实战详解 6.3.1 采用Visual Basic实现 1.程序界面设计 运行VB 6.0,创建标准的工程项目文件,设计程序窗体. (1)添加1个MSComm控件用于实现PC与单片机串口通信. (2)添加2个按钮控件CommandButton,用于输出指令和关闭程序. (3)添加3个文本控件TextBox,用于输入单片机地址.继电器状态和返回数据. (4)添加5个标签控件Label,用于显示文本框功能等. 2.属性设置 程序窗体.控件对象的主要属性

081_《Delphi串口通信编程》

<Delphi串口通信编程> Delphi 教程 系列书籍 (081) <Delphi串口通信编程> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Part1 Part2 Part3 Part4 作者: 黄军 熊勇 刘燕 刘晓梅 丛书名: 其他 出版社:人民邮电出版社 ISBN:7115095647 上架时间:2001-9-5 出版日期:2001 年8月 页码:348 版次:1-1 内容简介 本书详尽地介绍了Delphi串口通信编程技术,并通过丰富的范例

C# 串口通信 线程关闭问题

问题描述 串口通信大致可分为发送线程.接收线程.数据解析线程,发送和接收线程暂不考虑,以下是我写的一个数据解析线程的程序:DataDealThread=newThread(DataDealMethod);//绑定方法DataDealThread.Start();//线程开始///<summary>///解析接收到的数据///</summary>privatevoidDataDealMethod(){while(true){stringStrRcv=null;try{if(RcvQu

C#的串口通信的datarecieved事件

问题描述 本人初学串口通信,要实现一个实时的轮询和控制系统.要求和我看过的某帖类似,就是1.上位机下发的命令比较密集,以200ms周期发送实时状态轮询命令.2.在状态实时轮询命令中间有操作命令插入.3.不同的命令,接收的应答格式也不同.然后我在不同的获取数据的命令中给datareceived订阅了不同的处理函数,这些处理函数结尾又都解除自身的订阅.想问如果处理函数在200ms内不能完成,上位机的命令又来,datareceived会自动触发吗?此时触发的处理函数又是哪个?是当前仍在运行的处理函数还

我在写串口通信程序遇到的坑

我在做基于HC6800的51单片机上,写串口通信程序遇到了许多坑. 一个大坑:为什么HC6800上U转串口不能发送数据. 因为我们向HC6800烧程序都是使用图1所示的软件,所以我想当然地认为可以直接通过HC6800上的U转串进行串口通信,而我的同学信誓旦旦地告诉我可以.坑爹.并且这个软件好像也在提示可以用直接用U转串,进行串口通信(见图2).但是当我打开串口调试助手的时候(如图3),却发现单片机掉电了(如图4).其实HC6800上有另一个串口的,我们只要把连接图5黄框处串口.并且在图4中的6处

STM8L151G6串口通信问题

问题描述 STM8L151G6串口通信问题 哪位大神用过STM8低功耗的单片机 最近在用这个调到串口通信怎么也调不通了,谁有这个方面经验分享下.感激不尽,坐等回复 解决方案 http://www.pudn.com/downloads554/sourcecode/embedded/detail2285865.html

单片机读写内部的EEPROM怎么操作,串口通信我已经做好了?

问题描述 单片机读写内部的EEPROM怎么操作,串口通信我已经做好了? 我要从PC上把数据发给单片机,单片机接收到后存储到EEPROM,单片机读取EEPROM的数据发送到PC上,我看了手册.网上查过资料,做了好久,没 有实现,单片机是STC15F2K16S2,求指导 解决方案 你没有实现,是卡在什么地方了?PC 与单片机的串口通讯.还是 EEPROM 的读写呢? 解决方案二: 我是卡在了EEPROM的读写了,看了手册.百度过了,还是不能实现EEPROM的读写,我用的单片机是15F2S16S2,用