蓝桥杯STM32G431学习记录2——LED的CubeMX配置及使用

STM32G432基于CubeMX的LED模块化的配置

首先利用CubeMX生成LED的初始化代码,网上有很多配置教程很容易便能配置完成

通过CubeMX生成初始化代码后,自己再建立一个属于自己配置的初始化环境(需要有时钟的初始化)
在这里插入图片描述

CubeMX配置LED初始化过程

①点击File,选中New Project…在检索框中输入正确的型号,选中对应型号,选择完成后进行配置
在这里插入图片描述
在这里插入图片描述

②配置时钟及LED在原理图上对应的GPIOC8~15,锁存器对应GPIOD2为输出模式
在这里插入图片描述
③将PC8~15设置为高电平及推挽输出,PD2设置为低电平及推挽输出
在这里插入图片描述
④配置时钟树
在这里插入图片描述
⑤配置工程管理完成后点击generate code完成配置
在这里插入图片描述
在这里插入图片描述

建立led.c文件

将创建的.c文件加入到工程中

#include "led.h"

void LED_Init(void)  //将CubeMX中的配置复制到此LED_Init()函数中
{
	
	GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOC_CLK_ENABLE();
  __HAL_RCC_GPIOF_CLK_ENABLE();
  __HAL_RCC_GPIOD_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_8
                          |GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12, GPIO_PIN_SET);

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);

  /*Configure GPIO pins : PC13 PC14 PC15 PC8
                           PC9 PC10 PC11 PC12 */
  GPIO_InitStruct.Pin = GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_8
                          |GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;  	
  GPIO_InitStruct.Pull = GPIO_NOPULL;			
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);

  /*Configure GPIO pin : PD2 */
  GPIO_InitStruct.Pin = GPIO_PIN_2;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
	
}

/*配置LED显示函数 */
void LED_Display(unsigned char ucled)
{
	//将LED硬件对应的所有的灯熄灭
	HAL_GPIO_WritePin(GPIOC,GPIO_PIN_13|GPIO_PIN_14|GPIO_PIN_15|GPIO_PIN_8
                          |GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12, GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);	//置高电平打开锁存器
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);	//置低电平关闭锁存器
	
	//根据ucled的数值点亮相应的灯
	HAL_GPIO_WritePin(GPIOC, ucled<<8, GPIO_PIN_RESET);	//由于LED对应I0为PC8~PC15,因此需要左移8位控制对应IO
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_SET);
	HAL_GPIO_WritePin(GPIOD, GPIO_PIN_2, GPIO_PIN_RESET);
}

建立led.h文件

将.h文件所对应路径加入工程坏境中,否则会报错

#ifndef __LED_H
#define __LED_H

#include "main.h"

void LED_Init(void);
void LED_Display(unsigned char ucled);

#endif

直接加入进去即可实现

main.c编写主函数

#include "main.h"
#include "led.h"

void SystemClock_Config(void);

int main(void)
{
  
  HAL_Init();
  SystemClock_Config();
  LED_Init();
  
  while (1)
  {
  	/*LED1间隔500ms闪烁*/
    LED_Display(0x01);
	HAL_Delay(500);

	LED_Display(0x00);
	HAL_Delay(500);
  }
 
}

代码实现LED流水灯效果

	unsigned char i;
	for(i=0;i<8;i++)
	{
		LED_Display(0x01<<i);
		HAL_Delay(500);
	}
  • 5
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lzya.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值