rt-thread移植finSH控制台中STM32 HAL库的缺陷

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了rt-thread移植finSH控制台中STM32 HAL库的缺陷相关的知识,希望对你有一定的参考价值。

参考技术A 小小的一个串口居然看了半天,原来对STM32系列的lib库,好像是1.x版本感觉还不错的。后来ST非要整个CUBEMx库,往一个中断接受函数里丢了一堆东西。
在rt-thread官网中给出了nano版本增加控制台的示范例程,主要是增加了一个接受队列。(如果用rt-thread studio配置控制台,接受好像用的是查询模式,如果只是单纯一个控制台,不干其他事情好像也没啥事)

用中断模式+接受队列接受大量数据可能会更健壮可靠些。问题是实验了几次,只要在串口助手中发送了2个字节,中断接受就出现问题,再也进入不了中断函数了。后来关闭了控制台的echo回应功能,居然神奇的好了。

多半定位到是串口发送导致的。原来这是ST的HAL库的bug,在串口发送中进行了互斥操作,导致有接受中断时不能再次启动接受中断。如下

国外论坛也有这个讨论
[ https://community.st.com/s/question/0D50X00009XkeOGSAZ/questions-surrounding-hallock]

在中断回调函数中加入个unlock就好了。
当时是注意到RTT官方的文档中断发送函数中有unlock操作,看来接受 也得加个

以上是关于rt-thread移植finSH控制台中STM32 HAL库的缺陷的主要内容,如果未能解决你的问题,请参考以下文章

RT-Thread 移植到stm32

STM32 Nr shell 命令行移植

STM32 Nr shell 命令行移植

STM32 Nr shell 命令行移植

国产MCU系列在 HK32F030 上移植 RT-Thread Nano

RT-Thread-stm32f103精英开发板-SSD1306使用