Systick_Handler B.卡死处理方法

Systick_Handler B.卡死处理方法

注:鄙人在学习国产GD32芯片和STM32芯片做嵌入式时候出现过单片机卡死在*.s启动文件Systick_Handler B.处
现做系列总结



注:主要总结国产GD32和STM32单片机卡死在*.s启动文件Systick Handler B.处几种情况


问题描述:没什么问题,卡死此处而已!!!
在这里插入图片描述

1.中断开启未处理!

打开了某个中断,但是没有中断处理函数,或者中断处理函数错误(系统未识别),检查中断函数名字是否未按要求书写。例如将出串口中断函数名写错如下:
在这里插入图片描述
注意:后来查阅资料,在启动文件中,初始化中断向量表时候,有这么一段,系统已经完成了中断函数的编写并且已经留了接口([WEAK]表示弱符号,是可以自己重新定义同名函数的),一般情况下出发中断是可以直接进到中断函数SysTick_Handler里面的,如果没有则执行
B .操作,B表示跳转,“点”表示死循环,PROC,ENDP可以理解为函数括号。

SysTick_Handler PROC
                EXPORT  SysTick_Handler            [WEAK]
                B       .
                ENDP

2.引入C/C++代码而未作配置处理

使用Keli做单片机开发工具在引入C/C++代码后需要做相关处理,否则会报错,在keil魔术棒(懂的都懂)中C/C++项中底部Misc Controls中添加–C99或–CPP11标准。
在这里插入图片描述

这时候编译不会报错,但是程序跑不起来,删除–CPP11就OK了,为了保证你的C++代码能嵌入使用,在你的中断处理部分添加如下代码,否则中断服务函数不会链接到下载文件中(我一般加在主要头文件中供其他文件使用)

#ifdef __cplusplus
 extern "C" {
#endif

#ifdef __cplusplus
}
#endif

总结

我遇到的就上面两种情况,如有其他方法欢迎交流,总之祝各位开发顺利

如有错误,欢迎指正,原创不易,转载留名!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值