你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
积分商城
每日签到
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 (串口过载错误),
在串口中断中,判断串口过载错并把标志位清除,没有改善,请问怎么解决???
赞
0
收藏
0
评论
3
分享
发布时间:2019-7-23 15:57
举报
请先
登录
后回复
3个回答
ticat710
回答时间:2019-7-23 17:01:20
a0a.1 32b0c
本帖最后由 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()函数中可根据相应错误,做出相应修改,虽然能再次触发中断并接收数据,但是由于数据发送太快,不可避免的要丢失数据,只能发送完毕后,稍等再发
赞
0
评论
回复
支持
反对
慎微
回答时间:2019-7-23 17:41:19
a0a.1 32b0c
楼主是用中断处理数据接收吧。为啥不用 DMA 环型接收?设置好DMA buffer后,DMA数据搬到 处理buffer 解析啊。
赞
0
评论
回复
支持
反对
ticat710
回答时间:2019-7-23 18:12:20
a0a.1 32b0c
没用过,用了下次试试看,谢谢!
赞
0
评论
回复
支持
反对
所属标签
相似问题
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表
设置断点跟踪到 通用中断处理 HAL_UART_IRQHandler()中,发现发生ore错误后,不但把ErrorCode设置了,而且还关闭了接收中断,导致串口不在接收数据
static void HART_EndRxTransfer()
{
...
CLEAR_BIT(huart->Instance->CR1.(USART_CR1_RXNEIE | USART_FEIE));
}
在weak HAL_UART_ErrorCallback()函数中可根据相应错误,做出相应修改,虽然能再次触发中断并接收数据,但是由于数据发送太快,不可避免的要丢失数据,只能发送完毕后,稍等再发