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

请教:STM32 串口发送数据给PC机,数据不一致

[复制链接]
Sunrier 提问时间:2011-3-14 11:35 /

int main(void)
{
           #ifdef DEBUG
           debug();
           #endif
  
           /* System clocks configuration ---------------------------------------------*/
               RCC_Configuration();
          /* NVIC configuration ------------------------------------------------------*/
             NVIC_Configuration();
         /* GPIO configuration ------------------------------------------------------*/
            GPIO_Configuration();
  
         /* USARTconfiguration ------------------------------------------------------*/
             USART_Configuration();
           while(1)
           {
                USART_SendData(USART1,0x01);  //--------> 串口工具中接收到的数据又为0xE0
                while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){}
          }
}
端口配置都已经正常,在while里给PC机发送0x01,用串口工具接收到的数据为0xE0,不知道为什么发送和接收到的数据不一致,求各位帮忙.
然后自己查看了USART_SendData()和USART_GetFlagStatus函数:
库中的源代码为:
void USART_SendData(USART_TypeDef* USARTx, u16 Data)
{
     /* Check the parameters */
      assert_param(IS_USART_ALL_PERIPH(USARTx));
      assert_param(IS_USART_DATA(Data));
   
     /* Transmit Data */
        USARTx->DR = (Data & (u16)0x01FF);
}

FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, u16 USART_FLAG)
{
    FlagStatus bitstatus = RESET;
    /* Check the parameters */
     assert_param(IS_USART_ALL_PERIPH(USARTx));
     assert_param(IS_USART_FLAG(USART_FLAG));
     assert_param(IS_USART_PERIPH_FLAG(USARTx, USART_FLAG)); /* The CTS flag is not available for UART4 and UART5 */  
     if ((USARTx->SR & USART_FLAG) != (u16)RESET)
     {
          bitstatus = SET;
     }
     else
     {
         bitstatus = RESET;
     }
      return bitstatus;
}

           while(1)
           {
                USART_SendData(USART1,0x02);     //0x01改为0x02 --------> 串口工具中接收到的数据又为0xE1
                while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){}
          }

           while(1)
           {
                USART_SendData(USART1,0x03);     //0x01改为0x03 --------> 串口工具中接收到的数据又为0xE1
                while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){}
          }
然后试了下把发给PC机的数据0x01改为数据0x02,串口工具中接收到的数据又为0xE1,然后把0x01再改为0x03,串口工具中接收到数据也为0xE1,求助,帮忙看下,为什么发送和接收的数据不一致?
   
收藏 评论21 发布时间:2011-3-14 11:35

举报

21个回答
millysyg 回答时间:2011-3-30 14:40:25

RE:请教:STM32 串口发送数据给PC机,数据不一致

你把USART_Configuration()贴上来看看
zhouke58 回答时间:2011-3-31 09:04:25

RE:请教:STM32 串口发送数据给PC机,数据不一致

出现你这现象我也碰到过,但是我用的是485通信的,就是因为外部设备没有我们STM32的运行速度快,所以在485发送和接收的部分要加上适当延时.
你在发送完后的  
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET){}
在后面加个软件延时就可以了.
dbayj2 回答时间:2011-4-13 11:46:54

RE:请教:STM32 串口发送数据给PC机,数据不一致

我也出了类似的问题,但我的情况不太一样,之前运行正常,突然有一天不正常了,以后就没好过,换过232芯片,不管用,求解。
tlw2007 回答时间:2011-4-14 21:27:11

RE:请教:STM32 串口发送数据给PC机,数据不一致

楼主问题解决了吗,我的也是一样。
halibote523 回答时间:2011-4-15 08:47:59

RE:请教:STM32 串口发送数据给PC机,数据不一致

也有可能是他的3232的问题
瘦猪呆兔 回答时间:2011-4-15 17:45:13

RE:请教:STM32 串口发送数据给PC机,数据不一致

两边的波特率是一样的吗?
wangyin1226 回答时间:2011-4-20 16:39:32

RE:请教:STM32 串口发送数据给PC机,数据不一致

可能是驱动电路有问题,这样会有丢失包的现象
jnwsx123 回答时间:2011-6-1 19:52:42

回复:请教:STM32 串口发送数据给PC机,数据不一致

我也遇到这个问题,没有人解答下吗?
xlb1833 回答时间:2011-6-2 11:03:17

RE:请教:STM32 串口发送数据给PC机,数据不一致

试了下几个可能的原因,全没有完全符合,楼主最好贴出全部代码,大家才好找原因
123下一页
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版