你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32串口通讯的问题

[复制链接]
隐者-423522 提问时间:2014-3-21 15:03 /
STM32串口通讯的问题
                                    在对USART初始化后,每次上电发送的第一个数据总没有,后续的数据全部正常,是否还需要对哪个标志位进行配置呢?
            初始化代码  
             /* USART5 mode config */
             USART_InitStructure.USART_BaudRate = 9600;  //115200
             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(UART5, &USART_InitStructure); 
             USART_Cmd(UART5, ENABLE);
            发送 代码    
            USART_SendData(UART5 , shuju);
                  while( USART_GetFlagStatus(UART5, USART_FLAG_TC) == RESET );
             
            
            
            
STM32串口通讯的问题
                                    在对USART初始化后,每次上电发送的第一个数据总没有,后续的数据全部正常,是否还需要对哪个标志位进行配置呢?
            初始化代码  
             /* USART5 mode config */
             USART_InitStructure.USART_BaudRate = 9600;  //115200
             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(UART5, &USART_InitStructure); 
             USART_Cmd(UART5, ENABLE);
            发送 代码    
            USART_SendData(UART5 , shuju);
                  while( USART_GetFlagStatus(UART5, USART_FLAG_TC) == RESET );
             
            
            
            
在对USART初始化后,每次上电发送的第一个数据总不能用串口工具接收到,后续的数据全部正常,是否还需要对哪个标志位进行配置呢?
初始化代码 
 /* USART5 mode config */
 USART_InitStructure.USART_BaudRate = 9600;  //115200
 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(UART5, &USART_InitStructure);
 USART_Cmd(UART5, ENABLE);
发送 代码   
USART_SendData(UART5 , shuju);
      while( USART_GetFlagStatus(UART5, USART_FLAG_TC) == RESET );
 
收藏 评论4 发布时间:2014-3-21 15:03

举报

4个回答
那片清茶 回答时间:2014-3-21 15:43:48

回复:STM32串口通讯的问题

你把发送 代码改成:
while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
    USART_SendData(USART2, byte);
试试
隐者-423522 回答时间:2014-3-21 16:25:40

RE:STM32串口通讯的问题

仿真了半天,单步执行都可以的。但是循环执行就出错。
改成
while( USART_GetFlagStatus(UART5, USART_FLAG_TC) == RESET );
USART_SendData(UART5 , shuju);
就没有问题了。
隐者-423522 回答时间:2014-3-21 16:26:19

回复:STM32串口通讯的问题

回复第 2 楼 于2014-03-21 15:43:48发表:
你把发送 代码改成:
while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
USART_SendData(USART2, byte);
试试 

请问 判断TXE和TC 有什么区别呢?
那片清茶 回答时间:2014-3-21 17:07:04

回复:STM32串口通讯的问题

  TC不对的原因是没有清除TC标记,,你可以去网上找找关于这个方面的问题,很多人跟你一样的错误。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版