深度讨论32复位及SystemInit函数在程序中的作用

在32应用中,我们复位一般有两种方式:1.按复位按键复位程序
2.拔动单片机上的跳冒完成32的复
在以上两种复位方式中,对芯片而言,其实都是引脚接收到一个跳变延信号后触发的程序而已。在keil自带的固件库中,我们可以看到一下程序:这里写图片描述这里是从库中截出的复位程序代码段。EXPORT定义了一个全局变量 Reset_Handler 。IMPORT表示引用了一个函数,这里引进的_main函数的作用是把我们平时写的主函数中的main函数起作用,将C程序与底层汇编程序连接起来,使程序发挥作用。而我们在刚开始学习的时候,经常会发现别人写的环境中,总有一个函数不知道什么意思:SystemInit()。我们看会图片中150行中引入了SystemInit这个函数,在下一行并调用了该函数,然而却没有申明,因此如果我们在写主程序时如果没有在main外面声明一个新的SystemInit函数,编译时程序将报错。这里写图片描述
由图所示写一个空的函数出来即可,目的就是为了骗过编译器不报错。注意此处的函数名不要打错,要和固件库里的函数名一样。
如果你在Keil中遇到这种错误:
..\OBJ\Template.axf: Error: L6218E: Undefined symbol assert_param (referred from misc.o).
就是说明你没有对SystemInit()函数定义,因此在任意的.c函数中对SystemInit()定义即可解决该问题,函数里可以为空。
这里写图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值