摘要
利用 STM32CubeMx 配置 STM32 芯片的功能, 然后将配置后的内容生成代码, 并导出成可以使用 Keil 打开编辑的文件, 在 Keil 中添加控制代码后, 下载到 Proteus 仿真中, 使用仿真观察代码执行结果.
所需软件
1) STM32CubeMx
下载地址: https://www.st.com/en/development-tools/stm32cubemx.html
2) Keil
软件版本: uVision V5.14.2
3) Proteus
软件版本: 8.9 ps2
实现的功能
PA1 接 LED, 实现 LED 闪烁
1 STM32CubeMx 创建 STM32 工程文件
STM32CubeMX 打开界面如图 1-1 所示.
图 1-1 STM32CubeMX 初始界面
1.1 创建工程
使用 File->New Project 创建 STM32 配置工程. 如图 1-2 所示, 然后弹出如图 1-3 所示的 MCU 型号选择窗口.
图 1-2 创建工程
图 1-3 选择 MCU 型号
在图 1-3 的 Part Number Search 窗口输入预选择的型号, 本次选择 STM32F103R6(Proteus 中包含该 IC). 输入 STM32F103R6 后弹出如图 1-4 所示界面.
图 1-4 检索出两款 STM32IC
根据封装不同, 检索出两种类型 STM32F103R6 处理器, 选择 LQFP64 封装的在 2 所示位置双击, 弹出如图 1-5 所示界面.
图 1-5 创建完成的 STM32F103CubeMx 工程
1.2 配置芯片参数
需要配置的参数如下:
系统时钟, 下载方式 (可选, 本次为仿真, 可以不使用 Debug 方式) 以及引脚功能.
1.2.1 配置系统下载方式
选择 Categories 下的 SYS 弹出右图所示的 SYS Mode and Configuration 界面, 在如图 2 所示的地方选择下载 Debug 方式, 本次使用仿真的方式, 所以 Debug 方式可以选择 No Debug.
图 1-6 配置系统下载方式
1.2.2 配置系统时钟
选择 Categories 下的 RCC 选择时钟源, 如图 1-7 所示, 可选择的时钟包括 HSE 和 LSE, 由于本次仿真中仅使用 HSE 时钟, 所以仅对 HSE 时钟进行选择, 选择 Crystal/Ceramic Resonator 外部时钟. 如图 1-7 所示.
图 1-7 系统时钟选择
选完时钟后, 进入 Clock Configuration 界面进行时钟配置, 首先设置外部时钟源输入频率 Input Frequency, 然后选择 PLL Source Mux 的通道, 最后双击 HCLK 频率, 然后系统会自动配置成用于期望的时钟. 配置前的时钟图如图 1-8 所示, 配置完成的时钟图如图 1-9 所示.
图 1-8 系统时钟配置
图 1-9 配置后系统时钟结构
1.2.3 配置 GPIO 口功能
打开如图 1-10 所示的界面, 开始配置 GPIO 口功能, 本例程目标是实现 LED(连接至 PA1)闪烁, 所以需要配置 PA1 为输出功能.
图 1-10 GPIO 功能配置界面
单击对应的引脚 PA1, 然后选择 GPIO 模式为 GPIO_Output. 如图 1-11 所示.
图 1-11 GPIO 功能配置
右击 PA1 引脚, 选择 Enter User Label, 为 GPIO 分配标识, 本次设置为 LED01. 如图 1-12 所示.
图 1-12 GPIO 标识分配
接下来进入如图 1-13 所示的界面配置 GPIO 引脚详细参数. 单击黄色箭头所指 PA1, 弹出如图 1-14 所示界面, 进行 GPIO 详细参数配置.
图 1-13 GPIO 配置界面
如图 1-14, 将 PA1 配置为默认输出高电平, 推挽输出模式, 上拉, 高速输出模式, 引脚标识为 LED01.
图 1-14 GPIO 详细配置界面
至此, STM32 芯片的基本参数已经配置完成了.☆
1.3 输出配置好的工程
进入如图 1-15 所示的 Project Manager 界面进行输出配置, 如图 1-15 所示.
Project Name 输入工程文件名; 本次定义为 Prj_STM32F103_LED
Project Location 输入工程放置路径;
Toolchain/IDE 选择预输出的 IDE 类型; 本次选择 MDK-ARM
Min Verison 选择软件版本号; V5
图 1-15 工程输出配置界面
配置完成的界面如图 1-16 所示.
图 1-16 配置好的输出配置
Code Generator 中选中箭头所示位置. 这样输出文件将包括. c 和. h 文件.
图 1-17 配置 Code Generator
1.4 生成代码
选择如图 1-18 箭头所指的 GENERATE CODE 生成 Keil 代码.
图 1-18 生成代码
图 1-19 生成的 Keil 源代码
2 Proteus 搭建基于 STM32 LED 控制电路图
2.1 创建 Proteus 工程
打开软件, 然后选择 File->New Project 打开如图 2-1 所示界面.
图 2-1 新建工程界面
图 2-2 填写工程名字和路径
填写完毕后, 点击 Next, 进入如图 2-3 所示界面, 根据设计需要选择图纸大小.
图 2-3
选择完毕后点击 Next 进入如图 2-4 所示界面.
2-4
默认, 无需设计 PCB, 所以选择 Next 即可, 进入如图 2-5 所示界面.
2-5
由于使用 CubeMX 和 Keil 联合对 STM32 进行仿真, 所以无需用 Proteus 进行开发, 故直接点击 Next 进入 2-6 所示界面.
2-6
点击 Finish 完成工程创建.
2.2 检索器件
按照如图 2-7 所示的方式添加元器件, 首先选择器件标记, 然后单击 P 进入 Pick Devices 界面, 然后在 Keywords 界面输入要检索的器件, 然后进行选择.
2-7
2.3 放置器件
图 2-8
按照如图 2-8 的方式进行器件的放置操作, 在 2 的位置选中器件, 然后在 3 所示的图纸窗口单击即可.
2.4 放置电源
2-9
2-10
2.5 配置 STM32F103R6 参数
双击图 2-10 界面所示的 STM32F103R6 器件, 弹出如图 2-11 所示界面, 在该界面设置相应的参数, 其中在 Program File 添加程序生成的 HEX 文件, Crystal Frequency 设置系统频率, 这里设置为 72MHz.
3 利用 Keil 添加控制代码
在 Keil 中添加代码需要注意, 用户需要将代码添加到私有代码中如图所示. 添加到其他地方, 会发生生使用 CubeMX 更新后, 代码被清除问题.
图 3-1
在如图 3-2 所示的位置, 添加如图 3-2 所示的 LED 电平翻转代码.
图 3-2
4 仿真结果
<<Pro_STM32F103_LED - Proteus 8 Professional - Schematic Capture 2020-04-12 08-54-18.mp4>>
来源: https://www.cnblogs.com/Mr-Wangblogs/p/12683685.html