[STM32F4] STM32F4 UART4-5移植驱动程序应注意的问题

[复制链接]
615|2
 楼主| 晓伍 发表于 2019-7-4 11:00 | 显示全部楼层 |阅读模式

使用通用串口驱动程序分别运行UART1和UART4,则UART1正常,UART5不正常,本文解释具体原因。

先看STM32F407VGT6的串口配置情况,如下图所示,串口1、2、3、6为USART(同异步串口),串口4、5为UART(异步串口)。


 楼主| 晓伍 发表于 2019-7-4 11:01 | 显示全部楼层
在启动文件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


 楼主| 晓伍 发表于 2019-7-4 11:01 | 显示全部楼层
所以,我们需要在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不正常。


您需要登录后才可以回帖 登录 | 注册

本版积分规则

101

主题

4362

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部