如题,小弟用stm32cube生成了uart1的中断代码,配合一个LED灯指示。生成代码后只在HAL_UART_MspInit()函数和中断处理函数USART1_IRQHandler()里面加了__HAL_UART_ENABLE_IT(&huart1,UART_IT_RXNE)使能串口接收中断,其他地方都没有修改。 在中断处理函数USART1_IRQHandler()中加入HAL_GPIO_TogglePin(indicate_LED_GPIO_Port,indicate_LED_Pin)用来翻转LED。 问题来了,全速跑之后通过PC的串口调试助手发信息,第一次LED翻转了,但是再发就不反转了。使用debug模式下,断点+单步调试发现程序跳转到UART_Receive_IT()函数的时候发现huart->RxState == HAL_UART_STATE_BUSY_RX这个条件不满足,然后就跳出了中断函数,之后就一直就进不去中断函数了。 请问各位大神,问题出在哪里啊? |
评分
查看全部评分
难道官方cube生成的代码有这么大个坑?按道理应该生成的代码能直接用才对啊~~
是软件就会有Bug, 不管是ST的还是ARM的
就ARM 的V6.11编译器我都碰到过有Bug, ST写的就不能有Bug?
查到了官方库没有清RXNE的flag行为,导致再进去就忙~~