【STM32项目笔记】STM32CubeMX+Keil+Proteus联合实现LED闪烁
摘要
利用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
所示位置双击,弹出如图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 仿真结果
最新文章
- org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):
- 127.0.0.1和localhost完全相等吗?
- 搭建hive1.2.1图形界面
- 处理11gR2 RAC集群资源状态异常INTERMEDIATE,CHECK TIMED OUT
- Centos 6.5中安装后不能打开emacs的问题
- 笔记本开通手机WiFI热点
- 创建高性能移动 web 站点【转载】
- 不惧面试:HTTP协议(1) - 基础扫盲
- 如何编写高质量JavaScript代码
- python2和python3的range(100)的区别
- websocket session共享
- socketserver + ftp
- JAVA方法调用中的解析与分派
- Oracle Database(rdbms) 12.2 安装组件
- Delegate比较全面的例子(需整理)
- QT环境下实现UI界面的“拼图游戏”
- Word图片上传控件(WordPaster)更新-2.0.15版本
- Java之集合(十四)Hashtable
- HDU 4707 Pet 邻接表实现
- React项目的最佳实践
热门文章
- 【Vue】---- 手动封装on,emit,off
- Windows下EDK2环境的搭建以及经典的程序设计Print Hello World !-----(Linux下的待后续熟练了再更新)
- 【猫狗数据集】使用top1和top5准确率衡量模型
- mybatis探究之延迟加载和缓存
- React利用Antd的Form组件实现表单功能(转载)
- 记 2020蓝桥杯校内预选赛(JAVA组) 赛后总结
- RabbitMQ消息发布和消费的确认机制
- 图解汉诺塔问题( Java 递归实现)
- JavaScript 模式》读书笔记(3)— 字面量和构造函数3
- vscode不能打开浏览器(Open browser failed!! Please check if you have installed the browser correctly!)