点亮灯的函数
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

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



