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

STM32F0串口中断接收的奇怪问题

[复制链接]
eagle0754 提问时间:2015-3-24 21:21 /
本帖最后由 eagle0754 于 2015-3-24 21:22 编辑

现在用STM32F0芯片,做串口接收实验。初始化中只是开了接收中断。接收中断如下所示:
  1. volatile uint8_t Usart1RxTerm = 0;
  2. uint32_t Usart1RxCount = 0;
  3. uint8_t Usart1RxBuffer[256];

  4. void USART1_IRQHandler(void)
  5. {
  6.   if(USART_GetFlagStatus(USART1, USART_FLAG_ORE) != RESET)
  7.   {
  8.     USART_ReceiveData(USART1);  //(1)
  9.   }

  10.   if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
  11.   {
  12.     if (0 == Usart1RxTerm)
  13.     {
  14.       Usart1RxBuffer[Usart1RxCount++] =   SART_ReceiveData(USART1);
  15.     }      

  16.     if(Usart1RxCount==256)
  17.     {
  18.      Usart1RxCount = 0;    //(2)     
  19.      Usart1RxTerm = 1;
  20.     }
  21.   }
  22. }
复制代码

程序运行后,在中断服务程序的(1)和(2)位置设置断点后全速运行。电脑使用串口助手首次发送256个字节到STM32F0可以正常运行到断点(2)。
然后电脑上串口助手再次发送256字节后,就停在断点(1)了。这是为什么?
网上说中断服务中判断到ORE时,读一次接收缓冲就行了。但是没作用啊
  if(USART_GetFlagStatus(USART1, USART_FLAG_ORE) != RESET)
   {
     USART_ReceiveData(USART1);  
}

收藏 评论10 发布时间:2015-3-24 21:21

举报

10个回答
zfz0122 回答时间:2015-3-24 21:50:00
不懂帮顶 14.gif
zhangdaijin 回答时间:2015-3-24 22:04:58
路过帮顶!!!
alvin_ 回答时间:2015-3-25 08:44:11
第二次停在了断点1……是不是就说你ORE置位了?
数码小叶 回答时间:2015-3-25 08:47:23
咋感觉是这个的问题volatile ,不太懂
stary666 回答时间:2015-3-25 10:03:54
帮顶吧,顺便学习学习
回答时间:2015-3-25 10:16:47
先读取数据,然后再清除溢出标志位。
eagle0754 回答时间:2015-3-25 21:22:42
安 发表于 2015-3-25 10:16
先读取数据,然后再清除溢出标志位。

谢谢版主,这个中断没有问题。是外部清接收完标志时出错
回答时间:2015-3-26 10:40:39
if (0 == Usart1RxTerm)

    {

      Usart1RxBuffer[Usart1RxCount++] =   SART_ReceiveData(USART1);

    }      

这里注意,你把Usart1RxTerm = 1;数据不在接收,这里可以改为,
c=SART_ReceiveData(USART1);
if (0 == Usart1RxTerm)

    {

      Usart1RxBuffer[Usart1RxCount++] =   c;
    }   

这样就可以了.
jack2016 回答时间:2017-6-6 20:05:30
支持
12下一页

所属标签

相似问题

官网相关资源

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