cubeMX生成串口程序遇到的坑!!!

时间:2024-05-18 19:20:21

运行环境:system workbean +STM32芯片

这是一个菜鸟小白转型cubeMX开发时遇到的故事!

对于刚接触cubeMX的小白来说,想必第一个调试的外设,必然是串口吧!下面就由我讲述一下,我在转型路上遇到的坑。

开启串口引脚功能后,由于需要使用到中断,所以便在NVIC选项卡中,开启了中断,想了一想,感觉没有什么问题,于是果断上程序,跑板子!(注意:如果设置了串口功能,又没有在interrupt table中看到相应的串口配置的话,那就要注意show only enable interrupts了)

cubeMX生成串口程序遇到的坑!!!

调试运行,结果压根没有进入到中断函数中。带着一脸懵逼的表情,我有打开了cubeMX,结果睿智的我,马上就发现了问题。在code generation发现了串口配置,果断的能了再说。感觉这次应该没问题了,再次上鸡。

cubeMX生成串口程序遇到的坑!!!

调试运行,依然没有进入串口中断。这是你麻痹什么情况!看来只能求助于百度大佬了。

在百度大佬的帮助下,原来,cubeMX只是板我们开启了串口总中断,具体自己是要开启接受中断还是什么中断的,这个还是需要自己再次开启,于是,在初始化完成之后,加入     __HAL_UART_ENABLE_IT(&huart2,UART_IT_RXNE);    这样便开启了串口2 的中断了!!!

cubeMX生成串口程序遇到的坑!!!

调试运行,现在总算可以进入中断了,事情发展到这里,这个问题算是解决了!!!

不过,在百度的过程中,还发现了一个更加牛逼的函数!!!

HAL_UART_Receive_IT( &huart2 , RxdBuff, Rxdsize);

嗯,就是这个,这个函数的功能是,开启数据接受中断,将数据存储到自定义缓冲区中,这个功能在实际项目中还是很实用的。下面演示一下,这个功能的实现!

定义缓冲区

cubeMX生成串口程序遇到的坑!!!

调用此函数

cubeMX生成串口程序遇到的坑!!!

此代码用于将接收到的串口数据,进行回传cubeMX生成串口程序遇到的坑!!!

注意这行代码,注释了这行代码,会导致只能接收一个缓冲区数据

huart2.pRxBuffPtr -= (Rxdsize -huart2.RxXferCount); //将接收指针放回到开始,否则会一直增加哦