蓝桥杯STM32自学记录:GPIO输出与LED控制

前言

笔记是人类的第二大脑,以前的我也总是在记录上所懈怠,遇到不会的就csdn cv 一顿操作,始终不得其内涵。从这个赛事开始,我来学习大佬在嵌入式上的理解,自己做好每次记录,辅助记忆的同时也能亲手过一次知识与项目。希望能在赛事上大放光彩!


一、IO口常用函数

HAL_GPIO_ReadPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)——读电平状态
HAL_GPIO_WritePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin, GPIO_PinState)——写电平状态
HAL_GPIO_TogglePin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)——转换电平状态HAL_GPIO_LockPin(GPIO_TypeDef *GPIOx, uint16_t GPIO_Pin)——锁电平状态

二、LED原理图

 LD1——PC8

 LD2——PC9

以此类推

PD2——锁存器

三、配置STM32Cubemx

选芯片

ACCESS TO MCU SELECTOR

选STM32G431RBT6

配置时钟树

配置引脚

一、RCC配置

二、GPIO口配置

设置输出端口

配置LED所对应的GPIO口为输出模式(GPIO_Output)——PC8-PC15

注意:查看原理图得知PD2为锁存器,也要设置成输出模式(GPIO_Output)

设置输出模式

知识点:

默认电平:观察电路图,左侧有VDD。默认为high时电势相同,电流不流通,熄灭;low时亮灯。

锁存器:需要是有效电平,才能让PCx引脚工作

LED的使用时注意亮的时间,太短人眼无法观察。

疑惑点:

1、为何是开漏输出

2、锁存器的有效电平如何判断

四、工程配置

生成文件!(GENERATE CODE)

五、keil5的魔术棒设置

魔术棒——Debug——CMSIS——Settings——flash download——reset and run (程序烧录进单片机自动复位运行)

六、模块化函数操作

在inc文件夹里创建.h文件

在src文件夹里创建.c文件

把.c文件加入项目中

LED的c文件,h文件示例

LED.c代码

#include "LED.h"
void LED(int num,int state)   //num£º1-8   state£º0/1
{
	int pin;
	switch(num)
	{
		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(state==0) HAL_GPIO_WritePin(GPIOC, pin, GPIO_PIN_SET);
	if(state==1) HAL_GPIO_WritePin(GPIOC, pin, GPIO_PIN_RESET);
	
  HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);//Ëø´æÆ÷¿ªÆô
  HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);//Ëø´æÆ÷¹Ø±Õ
}

LED.h代码 

#ifndef __LED_H
#define __LED_H

#include "main.h"

void LED(int num,int state);

#endif


物联沃分享整理
物联沃-IOTWORD物联网 » 蓝桥杯STM32自学记录:GPIO输出与LED控制

发表评论