STM32笔记(一)STM32简介与工程建立

STM32简介

STM32从名字上来一个个看,ST指的是生产产商ST意法半导体,其中的M指的是MicroController微控制器,32就表示32位,顾名思义,STM32就是由意法半导体生产的32位微控制器,基于ARMv7架构的Coretex-M3内核,也是一种单片机,区别于51单片机,51是8位微控制器,已是70年代的产物,性能有限,但是简单易用,适合用于入门单片机,而STM32则拥有强大的性能,更低的功耗,拥有比51更多的外设接口,甚至能在上面运行诸如ucos,FreeRtos等操作系统,当然了,性能提升的同时,使用起来也比51复杂的多,寄存器的数量是51的好几倍,但是好在官方为简化开发推出了STM32各种系列的固件库,以及最近几年推广的STM32CubeMX+HAL库等,都极大的降低了操作门槛,使得如今的STM32已经成为一种趋势,一种新潮流。

命名规则

https://imgconvert.csdnimg.cn/aHR0cHM6Ly9hdmF0YXIuY3Nkbi5uZXQvNy83L0IvMV9yYWxmX2h4MTYzY29tLmpwZw

STM32的选型

大方向:

根据项目需求选择合适的MCU芯片,一般初学者都会使用基于Coretex-M3内核的F1系列,如果只是普通应用并不需要高性能进行大量的数据运算,F1系列是个不从的选择,反之,可以选择基于Coretex-M4系列的F4系列芯片

选型细节:

引脚的多少与功能,一般来说根据项目所需要的功能,够用就行,引脚多的功能也越多价格也更贵
FLASH 容量,根据程序的大小,选择64K或512K等等不同容量的芯片型号。

开发环境

用的最多的IDE是Keil5 MDK,除此之外还有ST官方的TrueStudio,以及HAL+STM32CubeMX+Keil5这种组合开发方式,其中STM32CubeMx可以可视化地进行芯片资源和管脚配置,并且生成项目所有源程序,支持导入到keil5中进行后续程序的编写,基于HAL库的开发方式是ST官方目前主推的开发方式,普通的固件库官方已经停止更新了,虽然使用起来比较完善,没有什么问题,但由于STM32上各种IO口的功能较多,功能配置复杂,能用可视化编程工具简化开发过程是再好不过了,需要注意的是对于单独采用Keil5来开发的话,需要下载对应芯片的芯片包,如芯片是STM32F1系列的就下载F1系列的芯片包,F4的就下载F4的芯片包,同时如果是基于固件库开发还要去官网下载额外的固件库,固件库也是分系列下载的,F1的芯片只能下载F1的,不能用F4或者其他系列的固件库函数进行开发。

程序的烧入方式

串口下载:

与51单片机一样,STM32也支持串口下载,在用带有USB转串口的开发板进行开发的时候还需要下载对应的芯片驱动,例如使用的是CH340芯片,那么就要下载一个CH340的驱动,这样电脑才能正常的识别出串口,同时用串口下载还要准备一个烧入软件,比较常用的是Flymcu。

JTAG 调试口下载:

JTAG是一种20针脚的下载接口,可以使用ST-Link,JLINK,ULINK等调试下载器进行连接,通过这些下载器可以直接在keil5上烧入程序,拥有比串口下载更高的速度,当你用串口下载一个用固件库编程的程序时,由于涉及的C文件较多,烧入时间比较长,但是用ST-Link等JTAG接口下载器可以显著缩短下载时间,也可以在单片机上进行实时Debug仿真调试,对于一些大型程序的调试很有帮助。和串口下载类似,用使用JTAG调试口下载也需要安装一个驱动,在keil5中使用前还需要再魔术棒选项卡那里提前配置。

SWD调试口下载:

STM32 支持 SWD调试,传统的JTAG下载需要占用5个IO口,有些时候有可能会造成IO口不够用,而SWD下载只需要占用2个IO口,有利于缩小开发板的体积,而且拥有JTAG的全部功能,两者所达到的效果是一样的,是一种更理想的下载方式。

开发方式的选择

寄存器开发

学过51的朋友都知道,我们主要通过软件编程控制单片机上的各种寄存器,而寄存器相当于一个拥有特殊名称与地址的变量,我们在开发51单片机的时候经常会用sbit重定义寄存器的名称,类似的,在STM32中也有寄存器操作,而且比51单片机多的多,寄存器地址也复杂的多,各个总线如APB1,APB2,AHB总线上有各自的外设与外设寄存器地址,如果单纯的使用寄存器开发,虽然说效率挺高,但是所需要耗费的时间是51单片机所不能比拟的,因此就需要用下面所说的库函数开发来简化。

库函数开发

库函数开发简单来说就是使用官方提前编写好的C库函数,通过调用函数的方式来操作单片机上的各种寄存器,由于库函数经过一系列的包装,使得在利用库函数开发的时候,程序的可读性更强,也更有规律,一般来说学习STM32或者任何单片机,要做到能够深入底层了解各种寄存器的功能与用法,但在实际开发过程中不一定要用到寄存器可以用库函数开发,比较多的人选择的是用库函数开发但是却不深入底层了解各种寄存器,这样学起来基础不扎实,到后期程序复杂的时候,库函数开发就会出现些许BUG,不懂底层

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值