① NVIC 是内核里面用于管理中断的设备。比如用于配置中断优先级
② SysTick 是内核里面的一个定时器,主要是用来给操作系统提供定时服务的。这个STM32是可以加入操作系统的,比如FreeRTOS、UCOS等,如果用了这些操作系统,就需要SysTick提供定时来进行任务切换的功能。对于我们可以用这个定时器来完成Delay函数的功能。
③ RCC 可以对系统的时钟进行配置,还有就是使能各种模块的时钟。在STM32中,其他的这些外设在上电的情况下默认是没有时钟的,不给时钟的情况下,操作外设是无效的,外设也不会工作,这样的目的是降低功耗。所以在操作外设之前,必须要先使能他的时钟,这就需要我们用RCC来完成时钟的使能。
④ GPIO 就是通用的IO口。我们可以用GPIO来点灯,读取按键等
⑤ AFIO 是复用IO口。他可以完成复用功能端口的重定义,还有中断端口的配置
⑥ EXTI 是外部中断。配置好外部中断后,当引脚有电平变化时,就可以触发中断,让CPU来处理任务
⑦ TIM 是定时器。这也是整个STM32最常用、功能最多的外设,TIM分为高级定时器、通用定时器、基本定时器三种类型,其中高级定时器最复杂,常用的是通用定时器,这个定时器不仅可以完成定时中断的任务,还可以完成测频率、生成PWM波形、配置成专用的编码器接口等功能。像PWM波形,就是我们电机驱动、舵机驱动最基本的要求了
⑧ ADC 是模数转换器。这个STM32内置了12位的AD转换器,可以直接读取IO口的模拟电压值,无需外部连接AD芯片,使用非常方便。
⑨ DMA 是直接内存访问。这个可以帮助CPU完成搬运大量数据这样繁杂任务。
⑩ USART 是同步或者异步串口。我们平常用的UART是异步串口的意思,这里的USART是既支持异步串口,也支持同步串口,用异步串口比较多
① I2C和SPI 是非常常用的两种通信协议。STM32也内置了他们的控制器,可以用硬件来输出时序波形,使用起来更高效,当然用通用IO口来模拟时序波形也是没有问题的
② CAN 通信一般用于汽车领域
③ USB 通信在生活中很常见,利用这个STM32的USB外设,可以做一个模拟鼠标、模拟U盘等设备
④ RTC 是实时时钟。在STM32内部完成年月日、时分秒的计时功能,而且可以接外部备用电池,即使掉电也能正常运行
⑤ CRC 校验,是一种数据的校验方式。用于判断数据的正确性,有了这个外设的支持,进行CRC校验就会更加方便一些
⑥ PWR 电源控制。可以让芯片进入睡眠模式等状态,来达到省电的目的
⑦ BKP 备份寄存器。这是一段存储器,当系统掉电时,仍可由备用电池保持数据,这个根据需要,可以完成一些特殊功能
⑧ IWDG和WWDG 是看门狗。当单片机因为电磁干扰死机或者程序设计不合理出现死循环时,看门狗可以及时复位芯片,保证系统的稳定
⑨ DAC 是数模转换器。他可以在IO口直接输出模拟电压,是ADC模数转换的逆过程
⑩ SDIO 是SD卡的接口。可以用来读取SD卡
① FSMC 是可变静态存储控制器。可以用于扩展内存,或者配置成其他总线协议,用于某些硬件的操作
② USB OTG 就是USB主机接口。用OTG功能,可以让STM32作为USB主机去读取其他USB设备
1、安装KELL软件,不要有中文路径;
2、使用注册机注册KELL软件时,一定要使用管理员权限打开KELL软件,否则注册失败。
3、软件安装成功之后,安装对应芯片的固件包;
① 打开KELL文件,找到Pack Installer,点击File,点击Import,然后找到芯片的固件包,进行安装。(法一)
② 找到芯片固件包后,双击即可安装,他会自动寻找KELL路径下固件包应存放的位置。(法二)
4、FlyMCU软件的使用
要先安装CH340驱动软件。使用FlyMCU软件下载HEX文件到单片机时,下载器要连接电脑,保证系统板要通电,否则搜索不到串口。
1、新建一个文件夹,然后这个文件夹里可以存放自己的各种工程项目,也方便管理。
2、打开Keil5软件,点击Project -->New μVision Project,找到之前新建的文件夹打开,然后输入要新创建的工程文件名
5、添加STM32的启动文件
路径:固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm
在文件夹里新添加一个start 文件夹,然后将固件库中的启动文件复制到start文件夹中
启动文件 由汇编语言编写,程序会在运行主函数之前,利用启动代码内的程序、初始化系统软硬件。
ld:低密度产品,FLASH小于64K;
md:中等密度产品,FLASH=64 or 128K;
hd:高密度产品,FLASH大于128K;
6、配置STM32底层时钟
路径:固件库\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x
stm32f10x.h 是STM32的外设寄存器描述文件,用来描述STM32有哪些寄存器和它对应的地址的,包含STM32底层所有的寄存器、结构体、宏定义。两个system文件是用来配置时钟的,STM32主频72MHz 就是system文件里的函数配置的。
7、添加内核寄存器描述文件
路径:固件库\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport
把内核寄存器描述文件复制到start 文件夹下
8、添加中断描述文件
路径:固件库\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template
创建一个user文件夹,把中断描述文件复制到user 文件夹下
conf 文件(configuration)是用来配置库函数头文件的包含关系的,同时里面还有一个用来参数检查的函数定义。两个it 文件是用来存放中断函数的
9、添加库函数文件
路径:固件库\STM32F10x_StdPeriph_Lib_V3.5.0\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver
创建一个Library 文件夹,把库函数文件复制到Library 文件夹下
10、创建存放硬件的文件夹
11、添加文件到工程(文件管理)
另一种添加文件到工程的方式:
Keil5软件左上角点击新建 new(Ctrl+N) ,然后选中新建的空白文档点击保存Ctrl+S,此时弹出一个框,选择你要保存到哪个文件夹下,并命名 xxx.c 或者 xxx.h 文件。
另另一种添加文件到工程的方式:
右击Keil5软件左侧的文件夹,弹出一个对话框后,选择Add New Item to Group(添加新项目到组),然后在弹出的对话框中选择新建的文件类型,然后给文件命名、修改路径。
如果拿到了别人的C文件或者H文件想添加到自己的工程文件夹下,那么就双击Keil5软件左侧的文件夹,弹出一个对话框后,选择你要添加的文件即可。(或者:右击Keil5软件左侧的文件夹,弹出一个对话框后,选择Add Existing File to Group(添加现有文件到组),弹出一个对话框后,选择你要添加的文件即可。)
12、生成HEX文件
13、添加头文件路径
在将文件添加到工程的过程中,一般不添加H文件,通常通过添加头文件路径,去调用H文件。编译后,H文件会自动包含。
14、添加使用库函数的宏定义
15、HEX文件下载设置
关于STM32单片机的具体学习详见B站(通俗易懂带你入门单片机):江科大自化协