笔者嵌入式基础很差,在学习ROS过程中时,为了防止对底盘硬件造成破坏,一直在寻找一套完整的仿真系统进行练习,所幸接触到了STM32CubeMX,按网上方法做了个初步练习,并做了以下记录。
声明:博客借鉴了不限于一个人的内容,做整理使用。
目标:实现LED的闪烁。
工具:STM32CubeMA, Keil5, Proteus 8
目录:
一、使用STM32CubeMX配置芯片和GPIO口,并生成Keil工程
二丶使用Keil生成HEX文件
三、使用Preteus搭建电路图,实现仿真
一、使用STM32CubeMX配置芯片和GPIO口,并生成Keil工程
1、创建新工程
首先我们打开安装好的STM32CubeMX,并创建一个新工程。
此处选stm32F103R6, 因为proteus提供此芯片的仿真,注意封装选取。
2、芯片配置
设计PA1口控制LED闪烁,LED一侧为高电平,另一侧连接PA1口。因此,当PA1口高电平时,灯泡关断,当PA1口低电平时灯泡打开。
配置如下:
① 设置PA1口为GPIO_OUTput
②选择下载和调试接口,本次使用仿真的方式,所以Debug方式可以选择No Debug。当需要烧录时按需选择。
③选择RCC选择时钟源,如图所示,可选择的时钟包括HSE和LSE,由于本次仿真中仅使用HSE时钟,所以可以仅对HSE时钟进行选择,选择Crystal/Ceramic Resonator外部时钟。
④配置输出模式,点击左侧GPIO来配置我们用到的输出管脚。
GPIO output level: High 的意思是将该串口初始化为高电平,将初始电平拉高,运行时灯泡为关闭。LOW即为低电平,运行时灯泡先打开。
GPIO mode: Outpull Push pull 的意思是选择输出模式为推挽输出模式,还有其他几种输出模式。
GPIO Pull-up/Pull-down: Pull-up 的意思是设置为上拉输出,按逻辑来说是需要给LED给一个上拉电阻才能点亮。
Maximum output speed: Low配置的是输出速度,我们这里配置输出速度为高。
注:此时注意观察
都为绿色表明没有问题,如果是黄色(警告)或者红色(错误),则需要我们重新配置,因为有一些管脚不只是输入输出功能,还具有其他比如ADC转换等功能,如果占用了此管脚的话还想要用这些功能就很麻烦,所以不建议这样配置。
⑤配置时钟树,中间把8改成72并回车。
3、工程导出
配置Project Manager
Project Name输入工程文件名;本次定义为LED
Project Location输入工程放置路径;
Toolchain/IDE选择预输出的IDE类型;本次选择MDK-ARM
Min Verison选择软件版本号;V5
配置Code Generator
点击GENERATE CODE,生成工程并选择Keil5打开
二丶使用Keil生成HEX文件
在while循环中配置相关函数,点击2、3生成HEX文件
HEX文件目录如下
三、使用Preteus搭建电路图,实现仿真
简单搭建电路如下
双击单片机选择HEX文件,配置晶振
配置电源
到此就可以仿真了。在这个基础上可以做更多的实验。