STM32F103C8T6在DEBUG卡死在 B.

今天在前几天的功能上加上了串口通信的功能,在搬好野火的砖后,很自信的打开了DEBUG,然而…翻车了,程序还没有跑到主程序,在初始化就死掉了
在这里插入图片描述
于是乎看了下代码发现停在了B.这里
在这里插入图片描述
打开度娘,又涨了新知识(B 是跳转的意思,“.”是指当前地址),原来程序死在这里,B.前面的xxxx_TRQHandler,直觉告诉我,是我的中断出现问题了,然后去找串口初始化的问题
在这里插入图片描述
在串口初始化的里开启了接收中断,但是忘记了写中断服务函数,导致程序跳到了B,这里在这里插入图片描述
在加上接收服务中断函数后,终于能够跑进主函数了
在这里插入图片描述
函数正常运行,问题解决!
在这里插入图片描述
但是没有写中断服务函数为什么会跳转到B.呢?这个问题激起了我的好奇心,于是往上找找答案

在这里插入代码片
Default_Handler PROC

....
                EXPORT  USART1_IRQHandler          [WEAK]
                EXPORT  USART2_IRQHandler          [WEAK]
                EXPORT  USART3_IRQHandler          [WEAK]
....
USART1_IRQHandler
USART2_IRQHandler
USART3_IRQHandler
....
                B       .
                ENDP
                ALIGN

通过度娘的帮助,我大概明白了没写中断服务函数在B.死循环的原因了
在这里插入图片描述
EXPORT我把它理解为一个中断,【WEAK】是弱定义,就是在用户没有定义窗口中断服务函数的时候,接收中断的时候就会默认这是中断服务函数,然后就跳到了B.这里进行无限循环。

因为使用串口只是用来发送数据,所以就没考虑要写接收中断服务函数…

出现这个问题还是因为砖版得不够细心

问题得以解决,继续肝… …

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值