打印
[STM32F4]

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

[复制链接]
442|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不正常。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

3983

帖子

1

粉丝