GD32 startup.s

     微控制器(单片机)上电后,是如何寻找到并执行主函数的呢?很显然微控制器无法从硬件上定位主函数的入口地址,因为使用Ç语言作为开发语言后,变量/函数的地址便由编译器在编译时自行分配,这样一来主函数的入口地址在微控制器的内部存储空间中不再是绝对不变的。相信读者都可以回答这个问题,答案也许大同小异,但肯定都有个关键词,叫“启动文件”,用英文单词来描述是“引导程序”。启动文件的作用便是负责执行微控制器从“复位”到“开始执行主函数”中间这段时间(称为启动过程)所必须进行的工作
    .Cortex-M3内核规定,起始地址必须存放堆顶指针,而第二个地址则必须存放复位中断入口向量地址,这样在Cortex-M3的的内核复位后,会自动从起始地址的下一个32位空间取出复位中断入口向量,跳转执行复位中断服务程序。对比ARM7 / 一个RM9内核,Cortex-M3内核则是固定了中断向量表的位置而起始地址是可变化的。

<----------------------- - ------------------------------分割线----------------- - ------------------------------------>
    我所用到的芯片是GD32,GD32是我国兆易创新公司生产的完全兼容STM32系列的Cortex-M3处理器,具有几大亮点: 1,高主频108MHz。性能提升30%以上,可超频到120MHz  2,Flash零等待.STM32的72MHz需要两个等待,其实兆易创新公司本来就是做闪存起家的,具有gFlash专利


3,采用ARM Cortex-M3新内核R2p1 .STM32采用R1p1,带有一些缺陷 4,性价比高.GD32比对应的STM32芯片一般便宜20%,某些芯片便宜30%以上

    一下是相对于STM32的对比:可以参考文档:GD32与STM32区别点击打开链接

    看完这个文档,对于我们新手来说,一定是一头雾水,那么接下来我们来细细研究一下他的启动文件的的的Startup.s。

<------------------------------------------------- -----分割线------------------------------------------- ----------->

一,启动文件的作用
 (关于启动代码的作用,前面已经提到过了,这里再啰嗦一下)
(1)初始堆栈指针SP;
(2)初始化程序计数器指针PC;
(3)设置堆,栈的大小;
(4)设置异常向量表的入口地址;
(5)配置外部SRAM作为数据存储器(这个由用户配置,一般的开发板可没有外部SRAM);
(6)设置Ç库的分支入口__main最终用来调用主函数);
(7)在3.5版的启动文件还调用了system_stm32f10x.c文件中的SystemIni()函数配置系统时钟。

二,启动代码详解

  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值