关于STM32 UART4串口通信出现的N个问题的解决
创始人
2024-11-21 02:07:28
0

1.CubeMX生成的代码工程结构是比较合理的,但需要注意HAL库代码中初始化函数的调用顺序。

以串口初始化为例,勾选生成.c/.h文件后,CubeMX会把所有的串口外设放在usart.c中进行初始化,不同的串口间,使用不同的MX_U(S)ARTx_Init对串口外设进行配置,共用弱定义HAL_UART_MspInit进行引脚和中断的底层配置。

调用关系是,MX_UART4_Init-->HAL_RS485Ex_Init-->HAL_UART_MspInit,相当于底层配置和开启中断的操作是在外设初始化进行了一半时开始的。若需要自己实现每个串口一个私有的MspInit,那么初始化的顺序应该是,要把中断的配置和使能,放在最后的部分。

下面只有第一个函数正确。

/*正确的操作:先配置底层IO,再配置外设,最后配置中断*/ void BSP_RS232_Init(void) { 	MX_RS232_MspInit(); 	MX_UART4_Init();      /* UART4 interrupt Init */     HAL_NVIC_SetPriority(UART4_IRQn, 0, 0);     HAL_NVIC_EnableIRQ(UART4_IRQn);  	__HAL_UART_ENABLE_IT(&huart4,UART_IT_RXNE);//接收中断 }   /*错误的操作1:*/ void BSP_RS232_Init(void) { 	MX_RS232_MspInit();//在此开启了中断 	MX_UART4_Init(); }  /*错误的操作2:*/ void BSP_RS232_Init(void) { 	MX_UART4_Init(); 	MX_RS232_MspInit();//在此开启了中断 }

 2.串口RXNE中断里一定不要打印(400M主频,波特率4800时打印才不会影响通信),不然就ORE溢出了,触发ORE中断后也要处理

/**  * 串口4中断服务函数  */ void UART4_IRQHandler(void) {     if(__HAL_UART_GET_FLAG(&huart4,UART_FLAG_RXNE)!=RESET)//接收到数据     {     	RS232_Receive(UART4->RDR);     }     else     {         __HAL_UART_CLEAR_IT(&huart4, UART_CLEAR_OREF);     } }

3.若串口中断里进行上传OS队列等OS相关操作,一定要将串口中断优先级降至可受OS管理的级别,不然会出现不上传队列、丢包的现象

void BSP_RS232_Init(void) { 	MX_RS232_MspInit(); 	MX_UART4_Init();    __HAL_UART_ENABLE_IT(&huart4,UART_IT_RXNE);//接收中断    /* UART4 interrupt Init */   HAL_NVIC_SetPriority(UART4_IRQn, 0x05, 0);//因为会在中断中调用OS相关API,优先级不能高于OS管理的范围   HAL_NVIC_EnableIRQ(UART4_IRQn); } 

相关内容

热门资讯

透视苹果版!pokerworl... 透视苹果版!pokerworld破解版下载,哈糖大菠萝破解器,举措教程(真的有挂)-哔哩哔哩poke...
透视ai代打!poker wo... 透视ai代打!poker world辅助器(透视)好像存在有挂,可靠教程(有挂插件挂)-哔哩哔哩一、...
八分钟揭露!wepoker怎么... 八分钟揭露!wepoker怎么挂飞机(透视)确实真的是有挂,AI教程(有挂实锤)-哔哩哔哩1、八分钟...
透视辅助!如何下载wepoke... 透视辅助!如何下载wepoker安装包,有没有人wepoker,举措教程(确实有挂)-哔哩哔哩如何下...
透视透视!拱趴大菠萝机器人(透... 透视透视!拱趴大菠萝机器人(透视)其实真的有挂,AI教程(有挂技巧)-哔哩哔哩1、拱趴大菠萝机器人透...
第5分钟详细!wepoker私... 第5分钟详细!wepoker私人定制透视(透视)竟然是有挂,必备教程(存在有挂)-哔哩哔哩1、点击下...
透视透视!wpk私人局辅助是真... 透视透视!wpk私人局辅助是真的吗,德普之星私人局辅助免费,方案教程(有人有挂)-哔哩哔哩1、德普之...
透视系统!werplan怎么辅... 透视系统!werplan怎么辅助(透视)切实是真的挂,详细教程(有挂脚本)-哔哩哔哩1、玩家可以在w...
一分钟普及!wepoker轻量... 一分钟普及!wepoker轻量版透视(透视)总是真的有挂,解密教程(真实有挂)-哔哩哔哩;1、游戏颠...
透视挂透视!we poker插... 透视挂透视!we poker插件,aapoker真的假的,策略教程(有挂助手)-哔哩哔哩1、aapo...