基于STM32F429的呼吸灯

本文档详细介绍了如何使用STM32F429微控制器设计一个可由PC串口控制速率、按键切换颜色的混合彩色呼吸灯项目。包括项目要求、设计思路、效果展示和关键代码分享。
摘要由CSDN通过智能技术生成

一、项目要求:

混合彩色呼吸灯,通过PC端串口小助手控制呼吸灯速率,开发板上按键控制呼吸灯的颜色。

二、设计说明:

在这里插入图片描述

三、效果示意图:

在这里插入图片描述

四、相关代码:

/********************************************************************************************************
******************************* 野火开发板STM32F429 LED呼吸灯 ********************************************
********************************************************************************************************/

#include "stm32f4xx_hal.h"

/*****************************************************************************************************
****************************    基础定义	***************************************************************
*******************************************************************************************************/
TIM_HandleTypeDef TIM5_Handler;         //定时器5 PWM句柄 
TIM_OC_InitTypeDef TIM5_CH1Handler;	    //定时器5 通道句柄

GPIO_InitTypeDef  gpio_init;
UART_HandleTypeDef uart_handler;

uint8_t  RxBUF[10];
int arr = 700;
uint8_t pdata[1]; 
int ccr = 1;
int ccr2 = 3;
uint32_t channel1;
uint32_t channel2;

/*****************************************************************************************************
****************************    LED初始化	*************************************************************
*******************************************************************************************************/
void LED_Init(void)
{
	__HAL_RCC_GPIOH_CLK_ENABLE();
	
	gpio_init.Pin = GPIO_PIN_10 | GPIO_PIN_11 | GPIO_PIN_12;  //初始化引脚
	gpio_init.Mode = GPIO_MODE_AF_PP; 						//复用推挽输出
	gpio_init.Pull = GPIO_PULLUP; 								//不上下拉
	gpio_init.Speed = GPIO_SPEED_FREQ_VERY_HIGH;  //速度非常高
	gpio_init.Alternate = GPIO_AF2_TIM5;  				//复用为定时器5(PH10-PH12 对应TIM5的CH1-CH3)
	
	 HAL_GPIO_Init(GPIOH , &gpio_init);	
}
/*********
  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32F429系列是一款基于ARM Cortex-M4内核的高性能微控制器,它通常用于嵌入式系统开发,包括各种物联网(IoT)设备和工业控制应用。其中的"呼吸灯"功能通常是通过GPIO(通用输入输出)端口配合定时器或PWM(脉冲宽度调制)来实现的。 具体步骤如下: 1. **配置GPIO**:首先将LED连接到STM32的GPIO输出引脚,并设置该引脚为推挽模式或开漏输出,以便控制电流的通断。 2. **初始化定时器**:使用TIMx定时器配置一个简单的PWM波形,比如50%占空比,周期可以根据需要调整以实现不同频率的闪烁效果。 3. **主循环函数**:在一个无限循环里,不断改变PWM信号的占空比,使得LED灯亮度随占空比变化而起伏,模拟呼吸的效果。你可以采用递增、递减或者随机化的模式调整占空比。 4. **定时器中断处理**:如果需要更精确的控制,可以利用定时器溢出中断,每次中断时更新占空比,保持呼吸灯的稳定运行。 ```c // 示例代码片段 void setupTimer() { TIM_TimeBaseInitTypeDef.TIM_Prescaler = ...; // 定义预分频值 TIM_TimeBaseInit(TIMx, &TIM_TimeBaseInitTypeDef); TIM_Cmd(TIMx, ENABLE); // 启动定时器 } void updateLed(int dutyCycle) { GPIO_SetBits(LED_PORT, LED_PIN); // 开启LED HAL_TIM_PWM_SetValue(&htim, (uint16_t)(dutyCycle * PWM_MAX)); // 设置占空比 GPIO_ResetBits(LED_PORT, LED_PIN); // 关闭LED } void setupBreathingLight() { setupTimer(); while(1) { updateLed(breathPattern()); // 调用函数生成新的占空比值 HAL_Delay(BREATH_PERIOD); // 等待一段时间 } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值