STM32开发笔记64: STM32F4 UART4-5移植驱动程序应注意的问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

 

 

 

猜你喜欢

转载自blog.csdn.net/qingwufeiyang12346/article/details/85210170