stm32g431使用CubeMX配置按键与使用
使用cubemx新建一个工程
配置八个LED的GPIO口为输出(GPIO_Output),四个按键的GPIO口为输入(GPIO_Input)
设置晶振
配置时钟
生成工程
工程生成之后在工程目录下新建这些文件夹和文件,这样方便后期管理代码
之后打开工程,将新建的文件添加到工程中
添加路径
注意LED和KEY都要添加,后多时候报错都是由于没有添加路径造成的
接下来打开两个.c文件包含头文件然后编译一下,他们的.h文件会自动添加到工程中
分别在两个.c文件中写各自的初始化函数和调用函数
按键
此按键函数借鉴正点原子,其中按键扫描函数中的参数mode的值可为0或1,0不支持连按,1支持连按。相应头文件中的宏定义和函数声明如下
LED
相应头文件
至此,初始化函数和按键扫描函数都写好了,接下来在主函数进行调用,编写程序
包含头文件
调用函数
使用按键点亮LED的程序
在此之前定义一个变量接受按键扫描函数的返回值
其中主函数中HAL_GPIO_TogglePin()函数的作用是反转GPIO口的电平每调用一次,电平翻转一次,此函数传入两个参数,GPIOx和GPIO_PIN_x。该函数直接在HAL中写好,我们只需调用它即可。还需注意的是,每次对GPIO口写入的时候,即使用HAL_GPIO_WritePin()函数时,我们都要使能锁存器的IO口,如下:
HAL_GPIO_WritePin(GPIOx,GPIO_PIN_x,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2,GPIO_PIN_RESET)
GPIO_PIN_2,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2,GPIO_PIN_RESET)
最后,编译程序,下载到板子上,成功点亮
|