摘要

利用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 仿真结果

 
 

 

 

【STM32项目笔记】STM32CubeMX+Keil+Proteus联合实现LED闪烁的更多相关文章

  1. STM32学习笔记(四)——串口控制LED(中断方式)

    目录: 一.时钟使能,包括GPIO的时钟和串口的时钟使能 二.设置引脚复用映射 三.GPIO的初始化配置,注意要设置为复用模式 四.串口参数初始化配置 五.中断分组和中断优先级配置 六.设置串口中断类 ...

  2. Arduino入门笔记(3):单LED闪烁

    转载请注明:@小五义http://www.cnblogs.com/xiaowuyi 欢迎加入讨论群 64770604 在搭建好arduino开发环境(http://www.cnblogs.com/xi ...

  3. STM32学习笔记(二)——串口控制LED

    开发板芯片:STM32F407ZGT6 PA9-USART1_TX,PA10-USART1_RX; PF9-LED0,PF10-LED1; 一.串口1配置过程(不使用串口中断): 1.使能时钟,包括G ...

  4. STM32学习笔记(一)——点亮一个LED

    引言 最近报名了2017全国大学生电子设计竞赛,我们学校是第一次参加这个比赛,由于8/9月份就要比赛了,所以现在准备是比较晚的了,指导老师说只能做控制类的题目了,让我们学习一下STM32单片机,51到 ...

  5. ASP.NET Identity 2集成到MVC5项目--笔记02

    ASP.NET Identity 2集成到MVC5项目--笔记01 ASP.NET Identity 2集成到MVC5项目--笔记02 继上一篇,本篇主要是实现邮件.用户名登陆和登陆前邮件认证. 1. ...

  6. STM32单片机应用与全案例实践 /stm32自学笔记 第二版 pdf

    STM32单片机应用与全案例实践pdf https://pan.baidu.com/s/16WrivuLcHvLTwS__Zcwl6Q 4rj3 stm32自学笔记 第二版 pdf https://p ...

  7. 使用EmBitz开发STM32项目的环境配置

    一.EmBitz软件获取与安装 1.EmBitz软件的获取 EmBitz原名Em::Blocks,是基于Code::Blocks开发的,面向嵌入式的C/C++集成开发环境.支持J-Link和ST-Li ...

  8. 《BI项目笔记》——微软BI项目笔记连载

    本系列文章主要是结合实际项目,加上自己的总结,整理出来的一系列项目笔记,涉及微软SQL Server2008中商务智能开发中的SSAS.SSIS模块:  准备工作: <BI项目笔记>基于雪 ...

  9. STM32学习笔记——OLED屏

    STM32学习笔记--OLED屏 OLED屏的特点: 1.  模块有单色和双色可选,单色为纯蓝色,双色为黄蓝双色(本人选用双色): 2.  显示尺寸为0.96寸 3.  分辨率为128*64 4.   ...

随机推荐

  1. Python实现对excel的操作

    1.操作excel使用第三方库openpyxl安装:pip install openpyxy引入:import openpyxl2.常用简单操作1)打开excel文件获取工作簿wb = openpyx ...

  2. 聊聊order by rand()

    总结写在前面: 1. 不建议直接使用order by rand(),原因是执行代价比较大 2. 介绍了内存临时表,对于内存临时表,由于回表不需要访问磁盘,所以往往是用rowid排序,可以减少参与排序字 ...

  3. vs 如何将dll打包到exe中

    方法如下:首先需要安装NuGet 然后安装Fody.Costura 重新启动vs 编译项目即可 虽然根目录下还生成了dll但是你的程序已经可以脱离dll运行了,其实是将你的dll打入了exe中你可以看 ...

  4. Redis 的键命令、HyperLogLog 命令、脚本命令、连接命令、服务器命令

    Redis 的键命令.HyperLogLog 命令.脚本命令.连接命令.服务器命令 Redis 的键命令 Redis 的键命令主要用于管理 Redis 的键,如删除键.查询键.修改键及设置某个键等. ...

  5. MySQL学习(4)

    一 视图 预先定义一种对应关系,如:temp_table <-----> select * from class where student_id >10,那么这种对应关系叫做视图. ...

  6. django中的缓存以及跨域

    django中的缓存 先来了解以下问题

  7. [单调栈]小A的柱状图

    链接:https://ac.nowcoder.com/acm/problem/23619来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 262144K,其他语言52428 ...

  8. Javascript之封装运动函数

    @ 目录 阶段一.仅适用单位带px属性的匀速运动 阶段二.可适用单位不带px属性(如opacity)的匀速运动 阶段三.适用于多元素单一属性的匀速运动 阶段四.适用于多元素单一属性的匀速或缓冲运动 阶 ...

  9. eNSP之VLAN设计实验

    0.实验目的 1.掌握基于IP地址的VLAN划分: 2.掌握基于交换机端口VLAN划分: 3.通过网关实现不同VLAN间的通讯; 1.实验环境 环境:eNSP模拟器 版本信息:1.3.00.100 V ...

  10. Windows下用Python你会几种copy文件的方法?

    1. [代码]1. os.system ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 import os import temp ...