初始STM32
一些我想讲的话
首先我来介绍一下自己的一些经历吧:我入行嵌入式这一行大概有一年左右的时间了吧,期间最开始学习的是51单片机,个人呢感觉51单片机还是对新手挺友好的,我之前学习的过程也算是顺利吧,之后也是开始接触了一些STM32,后面发现,自己需要学习的内容还有很多,陆陆续续的也在网上寻找了一些STM32相关的视频学习,不过发现学习的过程中会有遗忘,渐渐的,我对STM32的学习好像越来越慢了。于是,我决定创建《夜深人静学32系列》内容,希望以此来记录我学习STM32的学习工程,同时也是为了督促自己学习,让自己有不断的提升,不断的进步。
我先在这里声明:我是一个小菜鸟,我需要学的东西还很多,可能我写的内容会存在一些问题,希望大家在看到问题的时候,及时指出,评论,我们一起交流学习。毕竟一个人可以走的很快,但一群人才可以走的更远!
补充
我在做这个系列的内容会参照正点原子官方提供的学习视频,大家也可以到网上去看看,毕竟原子哥还是很强的。使用的是HAL库开发,大概率会用到CubeMX这个软件,开发的板子不出意外的话是STM32F411RCT6的板子,但也有可能是STM32H7B3I-DK探索套件(基于STMicroelectronics Arm® Cortex®-M7内核的STM32H7B3LIH6QU微控制器而设计的一个完整的演示和开发平台。),然后的话就没什么了,我们开始学习吧。
初识STM32
什么是STM32?
关于什么是STM32?知乎是这样告诉我的:
对于STM32,从字面意思上来理解,ST是意法半导体,M是Microelectronics的缩写,其中32表示的是32位,那么整合起来理解就是:STM32就是指的ST公司开发的32位微控制器。
大概就是这个意思:STM32就是指的ST公司开发的32位微控制器。
STM32命名规则
对于F4的板子:
以我手上的STM32F411RCT6为例,那么对应的就是:
STM32基础型高性能64引脚256KBFLASH的OFP封装芯片。
对于H7的板子:
对应到STM32H7B3LIH6QU的板子就是:
STM32带高数加速器的高性能225引脚1.4MBRAM空间2MBFlash具有开关模式电源的BGA封装芯片
Cortex—M内核
什么是Cortex—M内核?
Cortex-M是爱特梅尔公司发布的全新 ARM ® ARM D20 微控制器 ,采用的是全球微控制器标准。
Cortex—M内核与芯片之间的关系
MCU厂商,经ARM公司授权,添加不同的外设 ,做出不同型号的芯片,以满足用户的各种要求。
Cortex—M内核的特点
Cortex—M内核是基于ARM架构实现的,时钟频率相对于其他系列的内核而言更低,可以实现低功耗,低成本,高性能的要求,主要运用于工业控制,传感器,消费电子,家用电器,医疗器械灯行业。
初识HAL库
CMSIS&HAL库
CMSIS (微控制器软件接口标准):Cortex Microcontroller Software Interface Standard,是由ARM和与其合作的芯片厂商、软件工具厂商,共同制定的标准。而我们说的HAL库就是ST为了方便用户(遵循CMSIS标准)开发提供的硬件抽象层代码库,用户在使用的过程中,不需要再像51单片机一样对各种各样的寄存器进行配置,而是调用一些库函数对寄存器进行配置,完成对各种硬件的初始化,实现一些功能,极大的减小和STM32的开发难度,为用户提供便捷,保护我们的头发。
除了HAL库开发之外,还有标准库和LL库以及寄存器开发等方式,他们具有以下特点:
类型 | 特点 |
---|---|
寄存器开发 | 代码效率高,时间效率低下 |
标准库开发 | 支持F0~F4/L1系列,目前已经停止维护 |
HAL库开发 | 全系列兼容、ST目前主推的库、兼容性、易移植性、效率低 |
LL库开发 | 全系列兼容、与HAL库捆绑发布、轻量级、效率高、不匹配分复杂外设 |
HAL库文件格式介绍
HAL库接口函数和变量命名规则
HAL库对寄存器位操作的相关宏定义
HAL库回调函数
其中:weak修饰的函数称为弱定义函数,在用户重新定义实现后,再次调用此函数,将调用的用户编写的函数,如果用户没定义该函数,则编译器自动调用weak修饰ide弱函数。
使用HAL库开发时需要注意的几个点
1,使用HAL库出现问题时,需要查阅参考手册,确定问题来源
2,尽量不要因为自己的一些使用习惯去修改HAL库的源文件,避免出现问题
4,由于HAL库文件属于硬件抽象层文件,代码经过层层封装,所以代码效率会更低一些。
总结
本期我们介绍了什么是STM32,Cortex—M内核,以及HAL库的一些相关概念,大家看完之后可能觉得有点空泛,我们也不用过多的深究,做一个初步的了解就好,有不懂的再来查阅就行,毕竟重点是后面的代码编写。本篇中的图片也是大部分来之正点原子官方提供的资料,我只是一个搬运工…………
最后,总结一下STM32HAL库开发的文件结构分布