历史上的今天
返回首页

历史上的今天

今天是:2024年12月18日(星期三)

正在发生

2018年12月18日 | 深度讨论32复位及SystemInit函数在程序中的作用

2018-12-18 来源:eefocus

在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()定义即可解决该问题,函数里可以为空。 


这里写图片描述

推荐阅读

史海拾趣

EM Microelectronic-Marin SA公司的发展小趣事

EM Microelectronic-Marin SA,作为斯沃琪集团公司(The Swatch Group)的一部分,自1971年起便开始了对超低功率集成电路的探索。在当时,电子设备的功耗是一个重要的挑战,尤其是在移动和便携式设备中。EM Microelectronic-Marin凭借其前瞻性的技术视野,投入大量资源进行研发,逐渐在行业内建立了低功耗技术的领先地位。

Bytesonic Corporation公司的发展小趣事

进入新世纪,Bytesonic Corporation面临着新的挑战和机遇。为了更好地适应市场变化和提升竞争力,公司在1999年11月进行了改制,资本增加至5700万新台币。这一改制不仅增强了公司的财务实力,也为其在未来的发展中注入了新的活力。

以上是基于已知信息对Bytesonic Corporation公司发展故事的概述。如需更详细、具体的故事内容,建议查阅公司官方资料、新闻报道或行业分析报告,以获取更全面、准确的信息。

FerriShield公司的发展小趣事

为了进一步推动技术创新和产品研发,FerriShield积极寻求与高校和研究机构的合作。公司与多所知名大学建立了产学研合作关系,共同开展新材料、新工艺的研究和开发。这些合作不仅提升了FerriShield的技术实力,还为公司培养了一批高素质的研发人才。

创基(CBI)公司的发展小趣事

面对日益激烈的国际竞争,CBI公司积极实施全球化战略,通过海外投资、并购等方式,不断扩大市场份额。同时,公司还注重本土化运营,根据不同地区的市场需求和消费者习惯,提供定制化的产品和服务。这一策略使CBI在全球范围内建立了完善的销售网络和售后服务体系,进一步巩固了市场地位。

EUCHNER公司的发展小趣事

EUCHNER公司的历史可追溯到1940年,由艾米·安士能先生创立的工程事务所。艾米·安士能先生是一位热衷于机械运动和系统工程领域的创新者。在1952年,他成功发明了世界上第一个组合行程开关,这一创新技术为公司的未来发展奠定了坚实的基础。1953年,EUCHNER公司正式成立,开始专注于机电控制产品的研究与开发。

CDI-DIODE公司的发展小趣事

随着市场竞争的加剧,CDI-DIODE公司意识到传统的营销方式已经无法满足市场需求。于是,公司开始尝试新的营销策略,如线上推广、社交媒体营销等。这些创新的营销方式不仅提升了公司的知名度,也增强了与客户的互动和联系,进一步提升了品牌影响力。

问答坊 | AI 解惑

明天就要开始比赛了。。你们小组准备的怎么样了。。(。。。)

本帖最后由 paulhyde 于 2014-9-15 09:17 编辑 明天就要开始比赛了。。你们小组准备的怎么样了。。(。。。)  …

查看全部问答>

DSP2000的io转换问题

DSP的io的耐压很严格吗 超过3.3就要烧它吗,我看资料极限值是4.75 我想用28030的DSP,不过用了都是16位的外部ADC和DAC,它们都是5V的片子, 这样都行进电压转换是不是很麻烦,必须要进行电压转换吗? 输入是5V转3.3v。输出是3,3转5v??? 还 ...…

查看全部问答>

心电系列维修小常识

1、心电图信号干扰大或基线粗? A、电极安放是否正常; B、检查电缆插头是否插好; C、机器专用地线是否接好; D、电源插座是否有标准接地; E、尽量使用电池供电。 2、动态心电图记录盒数据可以回放,进行心律失常分析出现“非法操作”? A ...…

查看全部问答>

小弟入手m8,想做个m8能用的应用程序作为本科毕业设计,请各位大虾帮忙指点一下题目

小弟学的是计算机科学与技术,有c++,c#开发的基础,但是对wince知之甚少,现在正在苦学。前些时买了魅族的m8,正好要做毕业设计,所以想干脆做个wince的应用程序,因为现在也有了m8的sdk,但是不知做什么题目好,请各位大虾指点迷津!!!小弟不胜 ...…

查看全部问答>

SD卡分区的命名

我的板子有两个SD卡插槽. 插入第一个SD卡时,不论插在哪个插槽,SD卡的名称为: SDMMC. 插入另一个SD卡,则命名为: SDMMC2 现在的问题是:我想指定两个SD卡插槽各自的名称,而不是由插入顺序来决定. 例如: 第一个插槽的名称固定是:SDMMC1 第二个 ...…

查看全部问答>

我是初学者,我用LM3s811编的4*4键盘程序哪位好心人帮修改一下,谢谢了

#include \"hw_ints.h\" #include \"hw_memmap.h\" #include \"hw_types.h\" #include \"gpio.h\" #include \"sysctl.h\" #include #include unsigned long Sysclk = 12000000UL; //  防止JTAG失效 void jtagWait(void) { ...…

查看全部问答>

Uboot命令大全

Printenv 打印环境变量。Uboot> printenv baudrate=115200 ipaddr=192.168.1.1 ethaddr=12:34:56:78:9A:BC serverip=192.168.1.5 Environment size: 80/8188 bytesSetenv 设置新的变量Uboot> setenv myboard AT91RM9200DK Uboot> printenv b ...…

查看全部问答>

有关TI蓝牙调试器购买的问题

本帖最后由 wateras1 于 2014-2-26 16:00 编辑 最近看论坛正在如火如荼的进行着TI的蓝牙无线传感器活动,但是工欲善其事必先利其器,没有一个调试器,有了那个套件也没用,只能大眼睁小眼,瞎耗了。我看了网上卖那个CCDEBUGEER,最低都要98元,对 ...…

查看全部问答>

FSL的imx53的最小系统利用SD卡无法启动,求助!

2块几乎一样的板卡,4G和8G的SD卡能在一张上引导系统,另一张只有4G可以,是什么原因?   我有2块利用FSL的imx53组成的最小系统,2块板卡就只有使用的DDR的厂商和型号不一样的,但是2块上的DDR的容量都是256M一片,且都是DDR3,其余的配 ...…

查看全部问答>