stm32启动时用到的systeminit、__main说明

  1. 先运行systeminit函数,其功能:初始化时钟(SYSCLK, HCLK, PCLK2 and PCLK1 prescalers)、配置中断向量表(中断向量表的定位是在flash还是SRAM)
  2. 再运行__main函数:
  • 作用:Initialization of the execution environment and execution of the application
  • You can customize execution intialization by defining your own __main that branches to __rt_entry.
  • The entry point of a program is at __main in the C library where library code:
  • Copies non-root (RO(不会拷贝,官方提供和实际实践有出入) and RW) execution regions from their load addresses to their execution addresses. Also, if any data sections are compressed, they are decompressed from the load address to the execution address.
  • Zeroes ZI regions.
  • Branches to __rt_entry.
  • If you do not want the library to perform these actions, you can define your own __main that branches to __rt_entry。
  1. 再运行The library function __rt_entry() runs the program as follows:
  • Sets up the stack and the heap by one of a number of means that include calling __user_setup_stackheap(), calling __rt_stackheap_init(), or loading the absolute addresses of scatter-loaded regions.
  • Calls __rt_lib_init() to initialize referenced library functions, initialize the locale and, if necessary, set up argc and argv for main().This function is called immediately after__rt_stackheap_init() and is passed an initial chunk of memory to use as a heap. This function is the standard ARM C library initialization function and it must not be reimplemented.
  • Calls main(), the user-level root of the application.
  • From main(), your program might call, among other things, library functions.
  • Calls exit() with the value returned by main().

因为库函数里面的 ___main函数 和 ____rt_entry函数是弱函数,所有我们可以自己编写__main和__rt_entry

相关推荐
恒锐丰小吕10 分钟前
屹晶微 EG3013S 低压60V半桥驱动芯片技术解析
嵌入式硬件·硬件工程
全栈游侠1 小时前
STM32F103XX 01-存储器和总线架构
stm32·嵌入式硬件·架构
恒锐丰小吕1 小时前
屹晶微 EG2124A 中压260V三相半桥驱动芯片技术解析
嵌入式硬件·硬件工程
来自晴朗的明天2 小时前
5、CBMV321 分压式电压跟随器电路
单片机·嵌入式硬件·硬件工程
羽获飞3 小时前
从零开始学嵌入式之STM32——7.STM32的系统架构
stm32·单片机·嵌入式硬件
范纹杉想快点毕业3 小时前
嵌入式系统架构之道:告别“意大利面条”,拥抱状态机与事件驱动
java·开发语言·c++·嵌入式硬件·算法·架构·mfc
-Springer-3 小时前
STM32 学习 —— 个人学习笔记2-1(软件安装)
笔记·stm32·学习
来自晴朗的明天3 小时前
6、AD7683 单通道 AD 采样电路
单片机·嵌入式硬件·硬件工程
TEL136997627503 小时前
方寸微PT153s千兆网口方案 替代RTL8153b方案
单片机·嵌入式硬件
克莱斯勒ya3 小时前
硬件支持包下载地址
嵌入式硬件