碎碎念
这半年忙的很学计系算法计网,外加可以忽略的c++,又基于我的知识储备这种较边缘知识一直顾不上来。眼看到最后期限这课不能再拖了,好歹计系学的差不多比较容易入门了,选择2天学完课开干。emmmm发现课纯理论除了教你怎么装软件,基础上等实验啥都没学。没教就没教咋还要求我们实现示波器、计算器、交通灯。。。真真大学大学,大不了自学,生气,尤其网上资源相当匮乏,而现在的我并不存在大把时间系统学习stm32,真的会笑,继续爬吧,好歹这剩下这个了,算法斗爬完了,我还怕啥。
概览
- 基于Keil MDK或STM32 CubeMX 的开发环境建立;
- 基于工程项目在Proteus中的仿真运行并分析。
原理
-
STM32 CubeMX
基本特点
- 集成了MCU Finder功能,便于用户进行芯片的选型。
- 以图形化的方式进行时钟片内外设的配置,并自动生成初始化代码。
- 可以自动生成工程框架,支持MDK、EWARM等多种集成开发环境。
- 可以提高用户的软件开发效率,聚焦于业务层的设计。
使用流程
STM选型/评估版的选型/MCU的交叉选型
在这个阶段提供了芯片的参考手册、数据手册以及应用文档等相关的资料。
- STM选型
通过芯片的工作频率、芯片片内存储器的容量、芯片的引脚数量等条件来进行芯片的筛选。
- 评估版的选型
主要针对官方的三类开发板进行选择。
- MCU的交叉选型
主要是为初次接触STM32微控制器的工程师进行一个平台切换的便利。
引脚的分配:对引脚的功能进行分配。
外设配置
主要是进行外设的初始化。以串口模块为例,主要是配置串口的通讯波特率以及数据位数等初始化参数。
中间件的配置
除了官方提供的中间件以外,还可以进行第三方插件的安装和配置。这样的话,提升了软件的扩展性。
生成初始化代码及软件工程:借助MCU固件包。
MSU固件包:
例程、中间件、HAL库。
STM32微控制器的各个产品系列,都有自己独立的MSU固件包。以F1为例,它所对应的MCU固件包就是STM32 Cube F1。F4对应STM32 Cube F4。
-
MDK-AEM
由arm公司推出的集成开发环境,是目前产业界使用最广泛的嵌入式开发软件之一。
- 支持源代码的编辑编译,以及程序的下载和调试等多种功能。
- 编译器和器件支持包分离,用户可以根据需求来进行安装,有效地减少了安装软件的大小。
- 提供多种中间件,如实时操作系统和图形用户界面,可以有效地提高用户的开发效率。
- 具有强大的仿真功能。可以仿真微控制器片内的所有资源。
过程及内容
下载安装STM32 CubeMX
- 需要安装Java环境。
- 解压CubeMX 安装包,默认配置。不能有中文路径,建议默认路径。(图表 1)
图表 1 解压CubeMX 安装包
安装MSU固件包
打开STM32 CubeMX,在菜单栏的Help-Manage embedded software packages中的STM32Cube MCU Packages选择STM32F4里的最新版本MCU固件包下载。完成后有绿色标志。(图表 2)
图表 2 安装MCU固件包
MDK-ARM下载安装(图表 3)
默认配置。不能有中文路径,建议默认路径。
图表 3 MDK-ARM下载安装
- 完成软件安装以后,将自动弹出器件支持包的安装工具。我们需要关闭这个安装工具。关闭的方法如下:取消“Show this dialog at startup”,点击OK后关闭。(图表 4)
图表 4 关闭器件支持包安装工具
下载安装器件支持包
STM32F4器件支持包直接安装
下载地址:www.keil.com/dd2/pack,在keil栏下下载STMicroelectronics STM32F4 Series Device Support, Drivers and Examples(图表 5)
图表 5 器件支持包下载
器件包安装在线下载安装
打开keil,点击Pack Installer里左栏Device的STMicroelectronics下的STM32F4 Series,点击右栏的Packs的Keil::STM32F4xx_DFP进行下载。安装成功后如图编程绿色按钮“Up to date”.(图表 6)
图表 6 器件支持包在线安装
STM32CubeMX使用:驱动指示灯
控制开发板上用户指示灯LD2每隔一秒闪烁。建议用户在桌面上新建一个名为CubeMX的文件夹,用于存放例程代码。对于STM32微控制器的外设学习,可以再建立子文件夹:按照外设名称来建立。(英文路径)
目标选择
确定所使用的芯片型号。打开软件点击基于芯片新建工程。(图表 7)
图表 7 基于芯片新建工程
图表 8 选型界面
引脚分配
明确引脚的功能。找到PA5引脚(可搜索)配置为GPIO_Output,用作LD2指示灯输出,配置玩PA5变亮绿色以有对应标签。(图表 9)
图表 9 引脚分配
外设配置
配置外设的初始化参数。以串口为例,主要是要配置通讯的波特率数据格式。
配置RCC,选System Core-RCC,选旁路时钟BYPASS Clock Source。PH0 PH1引脚对应变绿。(图表 10)
图表 10 配置RCC
配置调试串口,选System Core-SYS,选Debug-Serial Wire。PH13 PH14引脚对应变绿。(图表 11)
图表 11 配置调试串口
GPIO配置(图表 12)
图表 12 配置GPIO
时钟配置:
选择时钟源以及确定系统时钟和外设时钟的工作频率。
时钟源频率改为8,选择锁相环输入时钟HSE,选系统时钟源。HCLK时钟频率改为100并回车,软件自动调整。(图表 13)
图表 13 时钟配置
工程配置
确定工程名称(图表 14),选择时钟源以及确定。系统时钟和外设时钟的工作频率。
图表 14 工程配置
程序编写
为了实现仿真,改用STMF401VCT6,STM32CubeIDE编程。Main函数里加入:
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1|GPIO_PIN_2, GPIO_PIN_RESET);
HAL_Delay(100);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_1|GPIO_PIN_2, GPIO_PIN_SET);
HAL_Delay(100);
Proteus仿真
新建工程(图表 15),选择芯片型号(图表 16)
图表 15 新建工程
图表 16 芯片型号
添加器件
加入LED及RES电阻。画图。(图表 17)
图表 17 添加器件