进阶——十六届蓝桥杯嵌入式熟练度练习(LED的全开,全闭,点亮指定灯,交替闪烁,PWM控制LED呼吸灯)

点亮灯的函数

void led_show(unsigned char	upled)
{
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);	
HAL_GPIO_WritePin(GPIOC,upled<<8,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}

LED的全开

如图GPIO_PIN_ALL为0XFF,则让所有的GPIOC引脚置高电平

则让所有的LED全开

void led_show(unsigned char	upled)
{
HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);	
HAL_GPIO_WritePin(GPIOC,upled<<8,GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET);
}
unsigned char upled=0XFF;
led_show(upled);

LED的全灭

HAL_GPIO_WritePin(GPIOC,GPIO_PIN_All,GPIO_PIN_SET);	

交替闪烁

     led_show(0x04);
	 if(ledtime>500)
	 {
	 ledtime=0;
	 upled^=0x04;
	 }

指定时间交替闪烁

慢闪之后快闪

if(ledtime2<=5000)
{  
   led_show(upled);
	 if(ledtime>500)
	 {
	 ledtime=0;
	 upled^=0x04;
	 }
 }
else
{
 led_show(upled);
	 if(ledtime>50)
	 {
	 ledtime=0;
	 upled^=0x04;
	 }
}

PWM控制LED呼吸灯

	  
	for (int i = 0; i <= 100; i++)
		{
			__HAL_TIM_SetCompare(&htim8,TIM_CHANNEL_3,i);
			HAL_Delay(10);				
		}
	for (int i = 0; i <= 100; i++)    
		{
			__HAL_TIM_SetCompare(&htim8,TIM_CHANNEL_3,100-i);
			HAL_Delay(10);				
		}
  

全部代码(后文有各模块的代码)

滴答定时器

/* USER CODE BEGIN Header */
/**
  ******************************************************************************
  * @file    stm32g4xx_it.c
  * @brief   Interrupt Service Routines.
  ******************************************************************************
  * @attention
  *
  * Copyright (c) 2024 STMicroelectronics.
  * All rights reserved.
  *
  * This software is licensed under terms that can be found in the LICENSE file
  * in the root directory of this software component.
  * If no LIC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值