STM32系列CPU的UART5应用的惨痛教训

在使用STM32F103ZET6进行高速AD采样项目时,作者遇到UART5初始化不稳定的问题。问题在于中断响应函数名的误设,导致编译器未报错但运行时引发混乱。解决办法是确保中断响应函数名称唯一且正确配置。
摘要由CSDN通过智能技术生成

STM32系列CPU的UART5应用的惨痛教训

在使用STM32F103ZET6做一个24位高速AD采样的项目中,用到了串口5,程序启动运行却时好时坏,始终找不到问题所在,每次执行初始化USART5_Init(115200);时程序运行就不稳定。但是每次启动时采样板和电脑通过ULInk或J-Link连接时,却每次都运行正常。
串口5的初始化函数部分是正确的,经一步步屏蔽函数内的程序行,发现屏蔽最后一行的USART_Cmd(UART5, ENABLE); 时程序每次运行均正常。
void USART5_Init(u32 bound)
{

USART_ClearFlag(UART5, USART_FLAG_RXNE);
USART_ITConfig(UART5, USART_IT_RXNE, ENABLE);
USART_Cmd(UART5, ENABLE);
}
然后就去查看startup_stm32f10x_hd.s文件,发现对串口4和串口5,其中断响应函数名的定义是这样的:
DCD UART4_IRQHandler ; UART4
DCD UART5_IRQHandler ; UART5
而我将串口5的中断响应函数名写成了
void USART5_IRQHandler (void)
{

}
但是编译器并没有报错,致使一使能串口5中断时,系统找不到中断的入口,造成程序运行紊乱。
同时也要注意,同一个中断源的中断响应函数只能有一个,不能对同一个中断源写两个或两个以上的中断响应函数。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值