当前位置:   article > 正文

蓝桥杯STM32 G431 hal库开发速成——GPIO输出——LED_.若要使用stm32hal库设置gpio引|脚的输出状态,以下哪个函数是正确的选择?

.若要使用stm32hal库设置gpio引|脚的输出状态,以下哪个函数是正确的选择?

蓝桥杯STM32 G431 hal库开发速成——GPIO输出——LED


一、GPIO常用的函数

1.HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)——用于读取指定GPIO引脚的电平状态。
2.HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState PinState)——手动写入GPIO引脚的高低电平。
3.HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)——用于切换指定GPIO引脚的电平状态。

二、LED官方原理图

在这里插入图片描述
R7——LD1——PC8 (PC8控制LD1)
R8——LD2——PC9 (PC9控制LD2)
R9——LD3——PC10(PC10控制LD3)
.
.
.
以此类推!

三、配置STM32cubeMX

首先进入STM32CUBEMX软件点击 ACCESS TO MCU SELECTOR ——选择芯片型号为STM32G431RBTx(为比赛板子芯片型号)

1.配置时钟树

第一步选择Clock Configuration进入时钟树配置
在这里插入图片描述
第二步点击HCLK,将其设置为蓝桥杯要求的80MZ,并按下回车完成配置
在这里插入图片描述

2.配置引脚

1. RCC引脚配置

点击RCC配置外部晶振(crystal/ceramic resonator)
在这里插入图片描述
RCC——就像人的心跳,不管配置什么都需要开启RCC时钟!

2. GPIO引脚输出配置

1.首先对GPIO引脚进行输出配置,根据LED原理图将PC8-PC15配置为输出模式,注意因为LED原理图中有锁存器,所以还需要对锁存器进行配置,将PD2配置为输出模式(易忘!)
在这里插入图片描述
2.第二步需要将这几个GPIO口和锁存器口配置为高电平,若配置低电平则一上电,灯就亮了。
在这里插入图片描述
3.锁存器
由锁存器的知识可知,PD2引脚需要是有效电平,才能让PCx引脚工作,如图可得,PD2需要输入高电平(即1)。

3.工程配置

Project Name:配置文件的文件名(不能含有中文路径,不能重复命名)
Project Location:选择文件上级所在位置
在这里插入图片描述
Code Generator中点击红色箭头的位置为不同的功能生成单独的.c/.h文件,不点则全生成点击在main函数前面+号后的文件里,若点,可以在Application/User/Core中找到。建议点一下,可以让代码看起来更模块化!
在这里插入图片描述

Advanced Settings 中把所有的Visibility全勾上,然后创建代码(GENERATE CODE)
在这里插入图片描述

四、keil5配置

1.魔术棒配置

箭头指向的就是魔术棒,点击魔术棒
在这里插入图片描述

1.点击Debug,2.选择CMSIS,3.点击Settings
在这里插入图片描述
1.点flash download,2.勾选reset and run 程序烧录进单片机自动复位运行,单片机即可立即产生效果,否则需要手动按下复位按钮。
在这里插入图片描述

2. keil5规范编程

1.在CubeMX生成的工程中编写程序时需要保证代码是写在规定区域内的,否则更新初始化时会被删除。
2.需要包含的头文件建议写在begin includes—end includes之间。
3.子函数建议写在code begin 0—end 0之间,main函数里建议写在初始化后的begin 2 end 2及while(1)中的begin3 end3之间。

3. keil5查找途径

点击左下方project栏–>Drivers–>stm32g4xx_hal_gpio.c–>stm32g4xx_hal_gpio.h打开,从下往上翻,找到三个常用的库函数,右击函数,找到GO TO DEFINITION,就可以跳转stm32g4xx_hal_gpio.c。就能这三个I/O口功能函数的详细函数内部以及使用方法。
brief是说明,param是参数说明
在这里插入图片描述

4.点灯代码

将点灯的代码放到code begin 0—end 0之间
在这里插入图片描述
在mian函数中进行调用
在这里插入图片描述
先点击编译,再点击烧录
在这里插入图片描述
你人生中的第一个led灯就点亮了!!!

5. 封装点灯代码

将点灯代码进行封装,可以让代码看起来不乱,知道每一个部分确切的是干什么的,非常重要的编程习惯!
1.在inc文件夹里创建头文件
在这里插入图片描述
2.在 src文件夹里创建.c文件
在这里插入图片描述
3.把led.c文件加入项目中
在这里插入图片描述
在这里插入图片描述
4.进入keil5就可以看到led.c
在这里插入图片描述
5.已经添加了led.c到项目中,那现在是不是也需要添加led.h呢?

在这里插入图片描述
答案是不需要的!我们是将led.h增加到…/Core/Inc路径下的,而环境中本身就有…/Core/Inc路径。
6.在led.c文件中写入代码

#include "led.h"
void led(int x,int a)   //x:1-8 对应8个灯   a:1开 0灭
{
	int pin;
	switch(x)
	{
		case 1:pin=GPIO_PIN_8;break;
		case 2:pin=GPIO_PIN_9;break;
		case 3:pin=GPIO_PIN_10;break;
		case 4:pin=GPIO_PIN_11;break;
		case 5:pin=GPIO_PIN_12;break;
		case 6:pin=GPIO_PIN_13;break;
		case 7:pin=GPIO_PIN_14;break;
		case 8:pin=GPIO_PIN_15;break;
  }
	
	if(a==0) HAL_GPIO_WritePin(GPIOC, pin, GPIO_PIN_SET);
	if(a==1) HAL_GPIO_WritePin(GPIOC, pin, GPIO_PIN_RESET);
	
  HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);//开关一次锁存器,对led的配置才有效
  HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);//开关一次锁存器,对led的配置才有效
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

7.打开led.h:右击led.c文件中#include “led.h”,然后点击箭头所指
在这里插入图片描述
8.led.h中的代码

#include "main.h"
void led(int x,int a);
  • 1
  • 2

9.主函数中调用
首先包含头文件
在这里插入图片描述
调用led函数
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/126160?site
推荐阅读
相关标签
  

闽ICP备14008679号