文章目录
本文是基于stm32CubeMX软件点亮LED流水灯,以下主要分为stm32CubeMX的安装,操作和实践几个部分来进行介绍。
一、JDK的下载、安装和配置
1.JDK的下载
由于STM32CubeMX是Java实现的,所以需要安装jdk环境。
- JDK的可在官网下载。
JDK下载链接:https://www.oracle.com/downloads/
进入该链接下翻,找到如下页面点击JAVA。
在跳转后的网页点击Java (JDK) for Developers。
找到你所需要的操作系统对应的版本,第一个是压缩版,第二个是应用程序,这里我直接下载的是应用程序。
2.JDK的安装
直接双击应用程序一直点击下一步即可,注意保存路径可以进行更改,但路径中不能有中文,这里不过多介绍。
3.JDK的配置
右键点击我的电脑,打开高级系统设置,点击环境变量,双击PATH新建。
把刚刚安装好的JDK路径加在环境变量中即可。
4.测试
win+r打开命令提示符,输入java –version可以查看版本号。
再输入java看看有没有java相关信息。
最后输入javac查看有没有相关信息
二、CubeMX的下载和安装
1.CubeMX的下载
下载网址: https://www.st.com/en/development-tools/stm32cubemx.html#get-software
打开网址下拉选择你需要的操作系统对应版本。
2.CubeMX的安装
下载后打开应用程序,点击next
接着选择默认default,勾选上面选项,选择安装路径,点击next
最后点击done完成安装。
三、利用CubeMX新建工程点亮LED灯
1.题目介绍
安装 stm32CubeMX,配合Keil,使用寄存器方式(汇编或C,不限) 或HAL库这两种方式,完成下列任务:
1、重做上一个LED流水灯作业,即用GPIO端口完成3只LED红绿灯的周期闪烁。
2.在没有示波器条件下,可以使用Keil的软件仿真逻辑分析仪功能观察管脚的时序波形,更方便动态跟踪调试和定位代码故障点。 请用此功能观察第1题中3个GPIO端口的输出波形,和第2题中串口输出波形,并分析其波形反映的时序状态正确与否,高低电平转换周期(LED闪烁周期)实际为多少。
2.CubeMX介绍
相信所有玩过STM32单片机的朋友都知道,以前的时候大家在做开发时基本都是基于官方提供的库函数,当然也有寄存器版本的库函数,两者是类似的,还有大家可能知道的正点原子提供的网络课程基本都是基于这两种库函数的,不过说实话使用起来也算是比较方便,入门也算很快的了。但是,从15、16年开始,ST逐渐停止了对标准外设库的更新和维护,转向了HAL和LL库。
- SPL:Standard Peripheral Library标准外设库
- HAL:Hardware Abstraction Layer硬件抽象层库
- LL:Low-layer底层库
基于这样的背景,STM官方又推出了STMCube这样的IDE工具,进一步简化了开发的难度,使所有的HAL库和LL库开发变得非常容易,可以基于界面话的操作,自动生成,大大提高了开发的效率。
3.CubeMX安装固件库
首先打开CubeMX界面如图所示:
在这里我们可以看到有File,Window和help选项
- 在File中有新建工程New Project,读入工程Load Project,最近工程Recent Project和退出Exit等选项。
- 在Window是对应用界面的设置
- 在Help中有应用的版本更新,设置和关于等选项。
可以看到CubeMX的界面简洁清晰,接下来我们需要安装HAL库。
在Help选项中找到Manage embedded software packages
选择你需要的芯片号,本次实验我们用到的是STM32F103C8T6,所以我们选择STM32F1,然后选择需要的版本,并点击Install Now进行安装,如果你在本地已经下载好有关于该芯片版本的固件库,可以点击左下角From Local这样会免去下载时间。
4.CubeMX新建工程
可以在File中点击New project或者点击ACCESS TO MCU SELECTOR,如图所示:
可以看到在右边有刚刚安装的STM32F1系列的各种芯片版本,我们可以在界面中翻阅查找也可以在左上角的搜索栏中输入你的芯片型号,这里我们选中STM32F103C8,之后点击右上角Start Project进入工程界面如下图所示:
- 可以看到最左面一栏是外设资源选择界面,中间一栏是外设资源配置界面,而右边一栏为预览界面。
- 在Pinout View可以看到芯片对应引脚信息,淡黄色为不可配置的系统引脚,灰色的为可以配置的引脚,如通用I/O的GPIO,配置后的颜色变为绿色;深黄色为已经配置了引脚但没有初始化。
- 在System View可以看到各种引脚和GPIO的状态。
5.引脚配置
根据实验要求和我们上一次实验所设置的引脚,所以我们本次实验同样选用GPIOA,GPIOB和GPIOC对应的0,0,15号管脚对应三种小灯。
我们只需单击右侧预览界面对应的管脚,并选择GPIO_Output。
6.配置外设资源
1.在左侧System Core选项中找到sys,在debug选项中选择Series Wire
2.在左侧System Core选项中找到GPIO进行配置。
GPIO output level:有low和high两种选择,一般选择low
GPIO mode:推挽输出和开漏输出两者模式,两者模式的区别在于推挽输出中1代表VCC,0表示GND;开漏输出中1代表高阻态,0代表GND。
GPIO Pull-up/Pull-down:输入需要上下拉,输出一般没有上下拉
Maxinum output speed:最大的输出速度,一般选择low就可以了。
7.配置时钟源
打开Clock Configuration可以看到默认的时钟源如图所示
如果我们要配置外部时钟源需要对RCC进行配置。
在左侧System Core选项中找到RCC,在High Speed Clock中选择Crystal/Ceramic Resonator
再回到Clock Configuration中将中间蓝色方框中的HCLK修改为72
8.生成相关代码
1.打开Project Manager界面,可以看到界面有三个部分分别为Project,Code Generator和Advanced Settings。
- 首先在Project界面编写工程的名字,选择保存路径。
- 在Toolchain/IDE选项中选择MDK-ARM,Min Version中选择你的软件版本,这里我的Keil版本为5所以我选择V5.
2.打开Code Generator界面
- 最上面的一栏是软件包管理,选择第二个可以使我们的数据占用更小。
- 第二栏根据用户需要自行选择,第一个是每个外设生成.c和.h文件;第二个是重新生成时保留历史文件;第三个是重新生成时保留用户代码;第四个是重新生成时删除以前的文件,这里我选择勾选1,3,4
3.然后点击右上角GENERATE CODE创建好了工程。
点击open project即可打开工程。
9.添加代码
打开工程后的界面在左侧找到main.c文件双击打开。
在main程序中添加如下代码:
HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_0);
HAL_Delay(1000);
HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_0);
HAL_Delay(1000);
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_15);
HAL_Delay(1000);
编译后的结果:
显示没有错误。
10.烧录
将C8T6与USB转TTL相连,接入电脑端,打开FlyMcu进行烧录
11.效果图
四、MDK观察GPIO端口输出波形
1、设置仿真模式
首先点击魔术棒,点击debug选项,选择Use Simulator表示使用仿真。
修改下面的Diolag DLL为DARMSTM.DLL
修改下面的Parameter为-pSTM32F103VC
点击OK完成设置
2.使用逻辑分析仪
1.首先运行仿真,在如下窗口找到逻辑分析仪,点开
2.可以在左下角Command命令行窗口输入dir vtreg指令查找可以添加的管口号
3.打开左上角的setup选项,点击新的插入
添加你想要查看的管脚号,在下面的Display Type中选择输出为Bit
4.设置完成后点击RST右边书页的这个图标
让他运行一段时间可以观察到波形图在变化,运行一段时间后点击运行右边的×,得到波形如图所示:
通过波形上就可以看到LED口电平隔1s翻转一次。说明程序执行成功。