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

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个回答
kqh1120 回答时间:2015-3-24 21:50:00
不懂帮顶 14.gif
zhangdaijin 回答时间:2015-3-24 22:04:58
路过帮顶!!!
alvin_ 回答时间:2015-3-25 08:44:11
第二次停在了断点1……是不是就说你ORE置位了?
wyxy163@126.com 回答时间:2015-3-25 08:47:23
提示: 作者被禁止或删除 内容自动屏蔽
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;
    }   

这样就可以了.
seven101 回答时间:2017-6-6 20:05:30
支持
epochal 回答时间:2017-6-6 20:47:02
帮顶!!!

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版