高级会员

- 积分
- 749
- 金钱
- 749
- 注册时间
- 2020-6-24
- 在线时间
- 311 小时
|
10金钱
本帖最后由 ColeSofCJ 于 2022-1-11 16:21 编辑
如图所示,stm32H750使用LL库做串口通讯,3-5次就会出错一次,基本上都是漏掉几个数据,同一块板子使用HAL库的时候连续通讯200次没有发现这个现象,不知道是啥原因?
(附图连续两次通讯,前一次是好的,收了16个字节,后一次就只收了13个字节,大彩屏EE B1开头,FF FC FF FF结尾,波特率57.6K,IAR C++带FreeRTOS运行)
已找到原因,是18B20程序关中断引起的,屏蔽掉DS18B20的代码后串口正常了,没明白为啥Hal库的代码不受影响,有知道的麻烦告诉一声,谢谢!
解决方法是taskENTER_CRITICAL(); 与 taskEXIT_CRITICAL(); 改为vTaskSuspendAll(); 与 xTaskResumeAll() ,大概3-5次正确的数据会夹杂一次错误的数据,不过比串口丢数据好处理多了。
|
|