版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qingwufeiyang12346/article/details/85210170
单片机型号:STM32F407VGT6
使用通用串口驱动程序分别运行UART1和UART4,则UART1正常,UART5不正常,本文解释具体原因。
先看STM32F407VGT6的串口配置情况,如下图所示,串口1、2、3、6为USART(同异步串口),串口4、5为UART(异步串口)。
在启动文件startup_stm32f407xx.s定义的中断矢量入口地址不同,可参看下面程序。
DCD USART1_IRQHandler ; USART1
DCD USART2_IRQHandler ; USART2
DCD USART3_IRQHandler ; USART3
DCD UART4_IRQHandler ; UART4
DCD UART5_IRQHandler ; UART5
DCD USART6_IRQHandler ; USART6
所以,我们需要在stm32f4xx_it.h中,按如下方式定义中断服务函数。
void USART1_IRQHandler(void);
void USART2_IRQHandler(void);
void USART3_IRQHandler(void);
void UART4_IRQHandler(void);
void UART5_IRQHandler(void);
void USART6_IRQHandler(void);
这样,程序就可以正常运行了。我开始的时候,就是因为没有注意到这个问题,将UART5_IRQHandler写成USART5_IRQHandler了,导致串口5不正常。
原创性文章,转载请注明出处
CSDN:http://blog.csdn.net/qingwufeiyang12346