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

stm32L475 串口例程 当大量给串口发数据时,串口出问题

[复制链接]
ticat710 提问时间:2019-7-23 15:57 /
本帖最后由 ticat710 于 2019-7-23 17:16 编辑

      当快速给串口发数据后,发现串口不再相应,即使数据慢下来也是,设断点后发现不在进中断,在串口实例 Uart_Handler中,发现TxXferSize ,RxXferSize有数值,并且Mask(UART Rx RDR register mask) = 0xff,   ErrorCode = 0x00000008 (串口过载错误),

在串口中断中,判断串口过载错并把标志位清除,没有改善,请问怎么解决???
收藏 评论3 发布时间:2019-7-23 15:57

举报

3个回答
ticat710 回答时间:2019-7-23 17:01:20
本帖最后由 ticat710 于 2019-7-23 17:20 编辑

设置断点跟踪到  通用中断处理 HAL_UART_IRQHandler()中,发现发生ore错误后,不但把ErrorCode设置了,而且还关闭了接收中断,导致串口不在接收数据

static void HART_EndRxTransfer()
{
...
  CLEAR_BIT(huart->Instance->CR1.(USART_CR1_RXNEIE | USART_FEIE));

}


在weak HAL_UART_ErrorCallback()函数中可根据相应错误,做出相应修改,虽然能再次触发中断并接收数据,但是由于数据发送太快,不可避免的要丢失数据,只能发送完毕后,稍等再发
慎微 回答时间:2019-7-23 17:41:19
楼主是用中断处理数据接收吧。为啥不用 DMA 环型接收?设置好DMA buffer后,DMA数据搬到 处理buffer 解析啊。
ticat710 回答时间:2019-7-23 18:12:20
没用过,用了下次试试看,谢谢!

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版