STM32F072 Nucleo学习笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭
本文例子用到:
1. STM32F072 Nucleo开发板
2. STM32CubeMX软件Version4.3.0
3. Keil MDK 软件Version5.12.0.0
下面开始讲解:
1. 打开STM32CuBeMX
2. 新建工程
3. 选择器件型号
4. 此例要利用按键控制led的亮灭,故首先需要知道按键和led对应的IO口。查看官方给的手册,可知按键对应PC13,LED对应PA5。
5. 将PC13(按键对应的IO口)设置为输入,将PA5(LED对应的IO口)设置为输出(单击对应的IO口可以设置IO口的工作模式)。如下图,
6. 其他设置默认(无需设置),比如系统时钟采用内部振荡器,为8MHz。
7. 生成项目。点击Project下的Generate Code,填写项目名称,设置项目的位置,以及目标工程,此处为用Keil MDK打开。最后点击OK,生成项目。
8. 另外,如何刚安装完STM32CubeMX软件,需要先下载一些库文件。点击Help---Install New Libraries,根据相应的型号下载相应的软件库。
9. 已经生成了Keil工程,接下来用Keil打开工程。
10. 接下来再看看代码。
1) 首先看看IO口的初始化函数
由于要将按键对应的IO口设置为上拉输入,故在此处需要修改一下上下拉模式,默认是没有上下拉,我们修改为上拉模式。将GPIO_NOPULL改成GPIO_PULLUP。上下拉模式的定义可以在stm32f0xx_hal_gpio.h中查看。修改结果如下图:
2) main函数里面是一些初始化函数,有兴趣的可以看看,初学者可以先不看。
11. 先看看控制GPIO的函数。查看stm32f0xx_hal_gpio.h文件,可以看到如下函数:
对于按键控制led的程序,只需知道三个函数就可以。
1) GPIO_PinState HAL_GPIO_ReadPin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
这个函数为读取GPIO的状态,第一个参数是哪一组GPIO,第二个参数是GPIO具体哪一个引脚,返回值为GPIO的状态。
2) void HAL_GPIO_WritePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, GPIO_PinStatePinState);
这个函数作用是将某一GPIO置一或者清零。第三个参数GPIO_PinState有GPIO_PIN_RESET与GPIO_PIN_SET两种。
3) void HAL_GPIO_TogglePin(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin);
这个函数作用是反转某一GPIO
12. 现在就可以写按键控制LED的程序了。
程序如下:
只要将上述程序放入main函数里的while(1)里面就行。
HJL
2015.1.18