【嵌入式】 点亮一个led灯

文章讲述了在STM32微控制器中,如何通过HAL库对PC8到PC15的LED引脚进行初始化配置,以及利用PD2作为锁存器控制端口进行操作。在初始化时,LED引脚设置为高电平,锁存器控制端口设为低电平。通过LED_Disp函数,根据传入的低八位参数dsLED,对高八位进行操作以控制16位LED的状态,实现点亮和熄灭特定LED的功能。
摘要由CSDN通过智能技术生成

 从原理图上可以看led用了PC8~PC15,PD2是锁存器的控制端口,先使能这些端口。

(PC8~PC15低电平使能,所以初始化设计成高电平;PD2高电平使能,所以初始化设计成低电平)

 

在文件夹新建一个文件夹bsp,把led.c和led.h保存至bsp

打开魔术棒保存bsp的路径

 mian.h新增代码:

#define uchar unsigned char  //定义uchar uint
#define uint unsigned int

led.h代码:

#ifndef _LED_H
#define _LED_H
#include"main.h"
void LED_Disp(uchar dsLED);

#endif

led.c代码:

#include"led.h"


void LED_Disp(uchar dsLED)
{
    HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);//将GPIO的所有LED引脚置高电平
	  HAL_GPIO_WritePin(GPIOC,dsLED<<8,GPIO_PIN_RESET);
		HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);//将锁存器打卡,引脚置高电平
	  HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}

  因为我们在传入参数dsLED,默认给的是低八位,而实际起作用的是高八位(假设共16位),故将dsLED<<8。

 

mian.c新增代码:

#include "led.h"                  //包含LED的头文件

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */

 
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
		
		 LED_Disp(0x01);//点亮第一个灯
		HAL_Delay(500);//延时500毫秒
		LED_Disp(0x00);
		HAL_Delay(500);
		
  }
  /* USER CODE END 3 */
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值