Image
Image

欢乐家园

+ 关注

粉丝 1     |     主题 114     |     回帖 1030

解析 STM32 的启动过程
2021-7-22 22:31
  • ST MCU
  • 46
  • 3168
  至此可以总结一下STM32的启动文件和启动过程。首先对栈和堆的大小进行定义,并在代码区的起始处建立中断向 ...  
  4、 第202行中的__main标号并不表示C程序中的main函数入口地址,因此第204行也并不是跳转至main函数开始执 ...  
  3、 标号:前文多处使用了“标号”一词。标号主要用于表示一片内存空间的某个位置,等价于C语言中的“地址 ...  
  2、 DCD指令:作用是开辟一段空间,其意义等价于C语言中的地址符“&”。因此从第84行开始建立的中断向量表 ...  
  1、 AREA指令:伪指令,用于定义代码段或数据段,后跟属性标号。其中比较重要的一个标号为“READONLY”或者 ...  
  以上便是STM32的启动代码的完整解析,接下来对几个小地方做解释:  
  第224行:程序完毕。  
  第215—218行:分别保存栈顶指针和栈大小,堆始地址和堆大小至R0,R1,R2,R3寄存器。 ...  
  第214行:标号__user_initial_stackheap,表示用户堆栈初始化程序入口。  
  第213行:声明全局标号__user_initial_stackheap,这样外程序也可调用此标号。  
  第212行:定义全局标号__use_two_region_memory。  
  第208—210行:若使用DEF:__MICROLIB,则将__initial_sp,__heap_base,__heap_limit亦即栈顶地址,堆始末 ...  
  第207行:IF…ELSE…ENDIF结构,判断是否使用DEF:__MICROLIB(此处为不使用)。  
  第202行:声明__main标号。 第203—204行:跳转__main地址执行。  
  第165—201行:此部分代码的作用是设置FSMC总线以支持SRAM,因不使用外部SRAM因此此部分代码不会被编译。 ...  
  第164行:IF…ENDIF为预编译结构,判断是否使用外部SRAM,在第1行中已定义为“不使用”。 ...  
  第163行:声明复位中断向量Reset_Handler为全局属性,这样外部文件就可以调用此复位中断服务。 ...  
  第162行:复位中断服务程序,PROC…ENDP结构表示程序的开始和结束。  
STM32 gpio 笔记
2021-7-22 22:53
  • ST MCU
  • 17
  • 1878
  关键是GPIO的引脚速度跟应用匹配(推荐10倍以上?)。比如: 1.1.1 对于串口,假如最大波特率只需11 ...  
  1.1 I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响 ...  
2
3
近期访客