STM32F072 Nucleo笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭

STM32F072 Nucleo学习笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭


本文例子用到:

1.  STM32F072 Nucleo开发板

STM32F072 Nucleo笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭_第1张图片

2.  STM32CubeMX软件Version4.3.0

STM32F072 Nucleo笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭_第2张图片

3.  Keil MDK 软件Version5.12.0.0



下面开始讲解:

1.      打开STM32CuBeMX

2.      新建工程

STM32F072 Nucleo笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭_第3张图片


3.      选择器件型号

STM32F072 Nucleo笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭_第4张图片


4.      此例要利用按键控制led的亮灭,故首先需要知道按键和led对应的IO口。查看官方给的手册,可知按键对应PC13,LED对应PA5。

5.      将PC13(按键对应的IO口)设置为输入,将PA5(LED对应的IO口)设置为输出(单击对应的IO口可以设置IO口的工作模式)。如下图,


STM32F072 Nucleo笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭_第5张图片


6.      其他设置默认(无需设置),比如系统时钟采用内部振荡器,为8MHz。

7.      生成项目。点击Project下的Generate Code,填写项目名称,设置项目的位置,以及目标工程,此处为用Keil MDK打开。最后点击OK,生成项目。

STM32F072 Nucleo笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭_第6张图片

8.      另外,如何刚安装完STM32CubeMX软件,需要先下载一些库文件。点击Help---Install New Libraries,根据相应的型号下载相应的软件库。

STM32F072 Nucleo笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭_第7张图片


9.      已经生成了Keil工程,接下来用Keil打开工程。

STM32F072 Nucleo笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭_第8张图片

10.      接下来再看看代码。

1)  首先看看IO口的初始化函数

STM32F072 Nucleo笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭_第9张图片

由于要将按键对应的IO口设置为上拉输入,故在此处需要修改一下上下拉模式,默认是没有上下拉,我们修改为上拉模式。将GPIO_NOPULL改成GPIO_PULLUP。上下拉模式的定义可以在stm32f0xx_hal_gpio.h中查看。修改结果如下图:

STM32F072 Nucleo笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭_第10张图片


       2)  main函数里面是一些初始化函数,有兴趣的可以看看,初学者可以先不看。

11.      先看看控制GPIO的函数。查看stm32f0xx_hal_gpio.h文件,可以看到如下函数:

STM32F072 Nucleo笔记2-利用STM32CuBeMX创建工程并用按键控制LED的亮灭_第11张图片


对于按键控制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

















你可能感兴趣的:(单片机,stm32,单片机,mbed)