单片机型号: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中,按如下方式定义中断服务函数。