第一节:用Cube学32之简单IO口操作(点灯及按键)
《用CubeMX学习STM32》
《用CubeMX学习STM32》
注释 点击上面蓝字进入完整专栏,这个系列所有文章都会整合到这个专栏
写在前面: 前天刚刚结束考研,这两天重新整理了一下自己的东西,继续完成自己一直想做的一些事情。先把自己用cubeMX学习STM32的过程分享一下,希望对自己的大学生活做一个总结,如果能帮到一些同学肯定是最好的。一开始简单地的东西会在博客上写,有必要的话会有对应的演示视频,看博客还是比较省流量一些 每一篇这个专栏的博客我都会按照CubeMX配置+IAR(或Keil)编程演示
1、伟大的工程从点灯开始
这里默认STM32CubeMX和Keil或者IAR等平台已经安装好
-
一开始我会用IAR和Keil做演示,习惯了某一个平台之后,其实并没有什么差距,真正还是要懂单片机,不同的开发平台只是一个工具锤子,像单片机或者其他的硬件平台才是要雕琢的玉
1-1. 点亮板载LED灯
Step1 <CubeMX配置>
-
打开CubeMX
-
新建工程
点击之后会出现一个界面然你选择MCU型号
直接搜索你所使用的开发板或者核心板的芯片型号即可
这里我以STM32F407ZG型号的单片机为例进行演示
如下图所示
当我们双击那一行即可进入对各个引脚以及时钟等的配置界面了
-
下面是各个界面配置
引脚配置界面--->时钟树配置界面--->工程管理界面
(1)引脚配置(Pinout & Configuration)
我们要点亮的是板载LED灯,先看一下我所使用的核心板的原理图,找到板载LED灯对应的引脚, 以及其上拉还是下拉, 然后在CubeMX里面对其进行引脚配置
原理图中LED电路
可以看到, 若想要LED0和LED1灯点亮, 需要对应引脚为低电平, 那两个LED灯对应发光二极管才会导通
LED0对应PF10
LED1—>PF9
下面开始配置引脚
-
首先配置时钟及调试方式
-
接着配置LED对应的引脚
配置PF9输出模式 然后PF10也要这样设置, 这两个都要设为GPIO_Output
-
(2) 时钟树配置(Clock Configuration)
STM32F407最高时钟是1668MHZ, 配置时钟选择HSE(高速时钟), 然后在输入频率处填8(即代表8MHZ), 再把HCLK那个框写为168, Enter一下系统自动配置好, 具体的我在下图标注
-
(3)工程配置(Project Manager)
在这里面可以对我们的工程进行命名,以及选择用什么编译器写代码{ 如IAR,MDK(即keil), 还有最近兴起的STM32CubeIDE }, 代码设置等等
工程设置
代码设置
高级设置里面不需要改, 一般直接默认不管他。
Step2 <生成代码框架及代码编写>
点击 Generate Code 生成代码
-
在IAR里面先对开发环境进行设置 这个时候要插上开发板和调试器了
-
下面大概说一下工程目录
-
接下来写代码
CubeMX里面我们把时钟、引脚这些东西都配置了, 所以代码自动就生成了, 只需要安心写主要部分代码即可, 这就是Cube高效的原因, 无须你再去做冗杂的工作, 从而把主要的精力放在关键代码上
在main.c 文件中 , 在int main(void) 函数里面写代码
注意: 代码一定要写在 /* USER CODE BEGIN / 和/ USER CODE END */ 之间, 否则你用Cube对配置修改之后再生成代码, 不在这个之间的代码会被擦除
HAL_GPIO_WritePin() 这个函数是HAL库很基本的一个操作IO的函数
我这句话是点亮LED1, 及给PF9这个引脚写入 RESET, RESET就是拉低这个引脚
根据前面的电路图, LED引脚低电平时, 发光二极管就导通了, LED就亮
先编译下载代码再说一下这个函数, 其他操作的函数使用方法类似
补充 :
Wed Dec 25 10:41:16 CST 2019 补充
对每一个函数都可以右键, go to definition去看一下函数里面的具体代码
以MX_GPIO_Init(), 为例
- IO口的模式有五种 可以边学边了解, 也可以看一下用户手册学习一下
- 那五种模式可以在stm32f4xx_hal_gpio.h这个头文件找到,
下面再简单对LED做另一个好玩的操作, 让两个LED轮流闪烁, 起到流水灯的效果
HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin); // 翻转LED1的引脚状态
HAL_Delay(100); // 延时100ms
HAL_GPIO_TogglePin(LED0_GPIO_Port, LED0_Pin); // 翻转LED0的引脚状态
HAL_Delay(100); // 延时100ms
单片机效果如下面动图所示
每个函数都可以自己Go To Definition 去看一下如果使用, 都有详细注释
keil编程
如果你用的Keil, 也是同样, CubeMX配置不变, 只是选择用MDK-ARM打开
然后对Flash Download选项卡设置
到这里就over了, 开始写代码
keil和IAR不同, 下载代码之后自己就运行了,keil的编译速度也比较IAR要慢很多
点灯操作就到这里, 下面分一篇小篇幅的博客再写按键
人生没有白走的路, 你走的每一步都算数 , 加油
Author : 李光辉
date : Wed Dec 25 13:09:55 CST 2019
blog ID: Kevin_8_Lee
blog site : https://blog.csdn.net/Kevin_8_Lee