STM32: startup_**.s、Core_cm3.c、宏定义、HAL库

.s 启动文件选择

给STM32写程序时,我们需要在工程文件中加入厂家提供的启动文件(这里以STMf10x系列为例),里面包含的是启动代码,启动代码是一段和硬件相关的汇编代码。是必不可少的!这代码主要作用如下:

1、堆栈(SP)的初始化;
2、初始化程序计数器(PC);
3、设置向量表异常事件的入口地址;
4、调用 main 函数。
这些都是准备工作,如果看不懂目前初学也没什么关系,毕竟该文件是用汇编写的。。。。。

下面我们来看看ST公司提供的不同的文件,他们分别用于不同容量的STM32芯片:

startup_stm32f10x_ld_vl.s
startup_stm32f10x_ld.s
startup_stm32f10x_md_vl.s
startup_stm32f10x_md.s
startup_stm32f10x_hd.s
startup_stm32f10x_xl.s
startup_stm32f10x_cl.s
其中,ld.s 适用于小容量 产品;md.s 适用于中等容量产品;hd.s 适用于大容量产品;
LD:表示低密度产品 Flash容量在16k和32k之间的处理器
MD:表示中密度产品 Flash容量在64k和128之间的处理器
HD:表示高密度产品 Flash容量在256k和512k之间的处理器
XL:表示超高密度产品 Flash容量在512k和1024k之间的STM32F101x和STM32F103x处理器
CL:表示的是互联网型的处理器 是指STM32F105X和STM32F107X型处理器
VL:表示超值型的处理器,即STM32F100系列的处理器

  1. Low-density devices (STM32F10nx4 = 16k, STM32F10nx6 = 32k)
  • startup_stm32f10x_ld_vl.s: 小容量超值型。STM32F100xx系列,闪存16k~32k字节
  • startup_stm32f10x_ld.s: 小容量型。STM32F101xx, STM32F102xx, STM32F103xx系列,闪存16k~32k字节。
  1. Medium-density devices (STM32F10nx8 = 64k, STM32F10nxB = 125k)
  • startup_stm32f10x_md_vl.s: 中容量超值型。STM32F100xx系列,闪存64k~128k字节。
  • startup_stm32f10x_md.s: 中容量型。STM32F101xx, STM32F102xx, STM32F103xx系列,闪存64k~128k字节
  1. High-density devices (STM32F10nxC = 256k, STM32F10nxD = 384k, STM32F10nxE = 512k)
  • startup_stm32f10x_hd_vl.s: 大容量超值型。STM32F100xx系列,闪存256k~512k字节。
  • startup_stm32f10x_hd.s: 大容量型。STM32F101xx, STM32F103xx系列,闪存256k~512k字节。
  1. XL-density devices (STM32F10nxF = 768k, STM32F10nxG = 1024k)
  • startup_stm32f10x_xl.s: 超大容量型。S TM32F101xx, STM32F103xx系列,闪存512k~1024k字节。
  1. Connectivity line devices (STM32F105xx, STM32F107xx)
  • startup_stm32f10x_cl.s: 互联型。STM32F105xx, STM32F107xx系列。

Core_cm3.c

CMSIS是Cortex微控制器软件接口标准(Cortex MicroController Software Interface Standard)的缩写,这个是ARM定制的一个用于Cortex-M系列的一个标准,主要是为了提供通用api接口来访问内核和一些片上外设,提高代码的可移植性。
Core_cm3.c内核文件,就是定义了一些Cortex-M3的寄存器和一些函数,包括NVIC,MPU,SCB,SysTick,Debug寄存器。

CMSIS有三个层:核内外设访问层Core Peripheral Access Layer(CPAL),中间件访问层Middleware Access Layer(MWAL),设备访问层(Device Peripheral Access Layer)。
CPAL用于访问内核的寄存器和组件,如NVIC,调试系统等。该层是由ARM实现的。
MWAL用于对中间件的访问,现在该层还未实现。
DPAL用于定义一些硬件寄存器的地址和一些外设访问函数,由芯片制造商实现。
CPAL层的实现就是Core_cm3.c文件,DPAL层的实现就是system_stm32f10x.c文件(似乎还应该加上外设的函数库)。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

宏定义

对于STM32F103VCT6 宏定义中加入:STM32F10X_HD,USE_STDPERIPH_DRIVER
在这里插入图片描述

芯片名称—>容量选择:
在这里插入图片描述
在这里插入图片描述
也可以在确定芯片型号后,在Keil–>Flash download中确定容量;
在这里插入图片描述

补充:
众所周知STM32开发需要用到库函数,意法半导体(ST)的STM32系列MCU,ST为开发者提供了非常方便的开发库。到目前为止,有标准外设库(STD库)、HAL(Hardware Abstraction Layer)库和LL(Low Layer)库三种。前两者都是常用的库,后面的LL库是ST最近才发布的,与HAL源码包一起提供,目前支持的芯片种类也偏少。然而,标准库已经不在更新支持,ST官方推荐使用HAL库。而HAL库开发,比较常见的也是官方推荐使用CubeMx进行初始化的配置,无论是MDK还是IAR只要改一下设置都可以生成工程。
标准库、HAL库、LL库支持的芯片类型:
在这里插入图片描述
例如:STM32F103c8t6的宏定义:
STM32F103xB,USE_HAL_DRIVER
在这里插入图片描述
HAL库宏定义选择:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Chipei Kung

为了曾经那个轻易许下的梦!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值