[应用方案] 改进之后的EmBITZ新唐M051系列ARM文件向导

[复制链接]
1861|17
 楼主| Lbsonggz 发表于 2017-4-7 09:37 | 显示全部楼层 |阅读模式
修改了main.c文件,增加了#ifndef宏定义,并将初始化函数SystemInit放入其中

/*与启动文件和ld配置文件匹配,SystemInit()函数不可删除*/
#ifndef __NO_SYSTEM_INIT
void SystemInit (void) {}
#endif

这个语句的意思是:ld文件如果没有定义__NO_SYSTEM_INIT,系统则执行SystemInit(),虽然也是一个空函数。

EmBITZ_Nuvoton.zip

24.43 KB, 下载次数: 25

yiyigirl2014 发表于 2017-4-7 11:44 | 显示全部楼层
有了这个空函数,能有什么作用?
yiyigirl2014 发表于 2017-4-7 11:45 | 显示全部楼层
不是很理解,虽然经常见到这种用法。。
 楼主| Lbsonggz 发表于 2017-4-7 12:46 | 显示全部楼层
条件编译。如果ld文件定义了__NO_SYSTEM_INI,就不再编译void SystemInit (void) {}。否则,编译void SystemInit (void) {}函数。
zhuomuniao110 发表于 2017-4-8 11:20 | 显示全部楼层
是不是那个空函数的目的是让自己写代码呢。
 楼主| Lbsonggz 发表于 2017-4-8 12:53 | 显示全部楼层
空函数即可,不用添加任何代码
yiy 发表于 2017-4-8 13:15 | 显示全部楼层
第一次见这个软件,下载看看。
xixi2017 发表于 2017-4-9 15:56 | 显示全部楼层
空函数可以实现什么具体的功能?
稳稳の幸福 发表于 2017-4-9 16:50 | 显示全部楼层
给力,自己编写这个文件的人不多。
 楼主| Lbsonggz 发表于 2017-4-9 17:46 | 显示全部楼层
看函数名字就知道,系统初始化。因为ld文件和启动文件中有这个函数的声明,需要有对应的实现函数,可以把自己的引脚功能定义,定时器初始化等功能放在里面,也可以是空函数,另外写自己的初始化功能。一般把这个函数写成空函数,另外写自己的初始化函数
598330983 发表于 2019-3-20 22:06 | 显示全部楼层
楼主后来搞了哪些优化和贡献,分享分享。是不是这个软件作者停止更新了。
wdliming 发表于 2019-3-21 16:37 | 显示全部楼层
Lbsonggz 发表于 2017-4-9 17:46
看函数名字就知道,系统初始化。因为ld文件和启动文件中有这个函数的声明,需要有对应的实现函数,可以把自 ...

ld文件没有调用SystemInit啊~~~
 楼主| Lbsonggz 发表于 2019-9-23 09:05 | 显示全部楼层
wdliming 发表于 2019-3-21 16:37
ld文件没有调用SystemInit啊~~~

注意startup_ARMCM0.s这个启动文件,里面有这么三句
#ifndef __NO_SYSTEM_INIT
    bl    SystemInit
#endif

意思就是如果没有定义SYSTEM_INIT这个宏,就要在main.c中执行SystemInit()函数。解决的办法有四个:
1.在main.c中定义一个空的SystemInit(),自己另外写初始化函数,作者提供的例程就是这么解决的
2.在main.c中把所有初始化的内容放入SystemInit(),不再定义自己的初始化函数
3. 使用“//”注销这么三句,就无须在main.c中定义SystemInit()函数
4. 在main.c中直接定义 这个宏  #define  SYSTEM_INIT

任选其一即可

评论

谢谢!  发表于 2019-10-10 20:50
幸福小强 发表于 2019-9-24 21:04 | 显示全部楼层
真是666,其他工程的启动文件没法在里面用吧?
yiy 发表于 2019-9-24 23:16 | 显示全部楼层
估计这个软件很难升级了,我看作者写的他工作比较忙

评论

打算参考这个自己写一个  发表于 2019-10-11 18:32
yiy 发表于 2019-10-16 11:41 | 显示全部楼层
楼主到时候别忘了发布啊。或者给个思路,大佬们一起做一个。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

240

帖子

9

粉丝
快速回复 在线客服 返回列表 返回顶部