STM32学习手记1——简介、固件库

通过库函数方式进行学习

相关软件:MDK5(运行于UV4下)、STM32官方库​、JLINK程序

关于STM32的命名:

STM32系列命名规则

STM32   F   103   C   6   T   7   xxx      

 1            2   3      4    5   6  7   8  

第1部分:产品系列名,固定为STM32  

第2部分:产品类型;F表示这是Flash产品,目前没有其它选项  

第3部分:产品子系列;103表示增强型产品,101表示基本型产品

105表示集成一个全速USB 2.0 Host/Device/OTG接口和两个具有先进过滤功能的CAN2.0B控制器,

107表示在STM32F105系列基础增加一个10/100以太网媒体访问控制器(MAC),互联型产品,  

第4部分:管脚数目;  T=36脚; C=48脚; R=64脚;V=100脚; Z=144脚

第5部分:闪存存储器容量:  6=32K字节; 8=64K字节; B=128K字节; C=256K字节  D=384K字节; E=512K字节  

第6部分:封装信息;  H=BGA;T=LQFP;U=VFQFPN  

第7部分:工作温度范围;  6=工业级,-40~+85°C  7=工业级,-40~+105°C

第8部分:可选项;此部分可以没有,可以用于标示内部固件版本号。

STM32与51相比:

​1. 32位处理器,计算性能更好,系统资源更丰富,内核采用哈佛结构效率更高。

2. 更多更高级的外设(定时器、串行接口、IO口、AD/DA等)

3. 有USB、网口等高级外设。

4. 有库支持直接库函数开发,节省阅读硬件文档的时间。更多的里程和相关资料。

​5. 核心速度更快(72M)

6. ​可以使用JTAG、SWD等高级调试工具,仿真环境更高级、IDE环境功能更强(有自动补齐功能)

7. ​价格近似。

8. 针脚更复杂,画图、焊接更麻烦。

​固件库介绍

库列表 

Libraries文件夹下有CMSIS和Dirver两个文件夹,分别存放了启动文件和固件库的驱动源码。固件库驱动源码包括一一对应的头文件和源文件,分别放置在inc和src文件夹。CMSIS下的Coresupport内是处理器内核的定义文件,提供M3内核接口,不需要修改。Devicesupport内则是一些比较基础的寄存器定义和中断向量定义文件。其中还包括STM32的启动初始化文件:system_stm32f10x.c和对应的头文件system_stm32f10x.h,其功能是设置系统及总线的时钟。具体进行操作的函数是SystemInit()函数,在系统启动时会调用,用来设置整个系统的时钟。还有stm32f10x.h文件,里面含有大量的系统寄存器定义声明以及内存包装操作。在Startup文件夹下,是不同容量的stm32芯片的启动文件。里面的代码主要是进行堆栈初始化、维护中断向量表以及实现中断函数的定义,最后会将系统引导进入main函数。同时在进入main函数之前,会首先调用前面提到的SystemInit函数进行时钟初始化。

Project文件夹下包括了Example(实例,内含官方提供的固件实例源码)和Template(工程模板)两部分内容。

Utilities内则是官方评估板的一些对应源码。​

如何使用固件库

​固件库提供标准化的外设初始化、操作函数。以GPIO为例:

初始化:​GPIO_Init(GPIOA, &GPIO_InitStructure);    //初始化GPIOA,参数使用GPIO_InitStructure

初始化结构体:初始化结构体中含有初始化所需要的一些参数值。

GPIO_InitTypeDef  GPIO_InitStructure;​

 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //LED0-->PA.8需要设置的管脚

 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //工作在推挽输出模式

 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO工作频率50MHz

外设的操作: GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA.8输出高电平

猜你喜欢

转载自blog.csdn.net/laoponline/article/details/111049502