企业网站制作的公司,福鼎网站建设培训,小笨鸟跨境电商平台,3d建模教程人物8.1 实验内容
通过本实验主要学习以下内容#xff1a;
RGB彩灯控制原理
TIMER PWM输出原理
8.2 实验原理
本例程中使用的RGB彩灯采用共阳极驱动方式#xff0c;使用三路PWM进行驱动#xff0c;对应引脚输出低电平的时候对应RGB灯珠点亮#xff0c;调节不同路的PWM占空…
8.1 实验内容
通过本实验主要学习以下内容
RGB彩灯控制原理
TIMER PWM输出原理
8.2 实验原理
本例程中使用的RGB彩灯采用共阳极驱动方式使用三路PWM进行驱动对应引脚输出低电平的时候对应RGB灯珠点亮调节不同路的PWM占空比可以实现多种多样的颜色每个通道可以输出0%-100%的占空比组合起来可以输出100*100*100种色彩。
8.3 硬件设计
RGB彩灯的硬件控制电路如下通过TIMER0_CH0/CH1/CH2三个通道控制RGB灯珠。 8.4 代码解析
本例程采用TIMER0的三个通道进行控制RGB灯珠调整每个通道的占空比实现呼吸灯的效果。
8.4.1 主函数代码解析
主函数代码如下所示主要包括串口初始化、LED初始化、RGB灯珠初始化、timer驱动初始化该timer用于调整RGB灯珠PWM驱动时间。
C
int main(void)
{driver_init(); bsp_uart_init(BOARD_UART);bsp_led_group_init(); bsp_led_on(LED0);bsp_led_off(LED1);bsp_rgb_init(1000000,100);// 1M timer_cnt_ck,10K PWM CK TIMER_INT.timer_updata_callbackrgb_switch;bsp_timer_init(10000,500);printf(\r\n RGB breathing lamp\r\n);while(1){}
}
8.4.2 RGB灯珠初始化函数解析
RGB灯珠初始化函数如下在此定义了RGB_TIMER_R、RGB_TIMER_G、RGB_TIMER_B三个灯的控制结构体并通过timer驱动进行配置。
C
void bsp_rgb_init(uint32_t counter_frequency,uint16_t period)
{driver_timer_multi_channel_init(RGB_TIMER_R,RGB_TIMER_G,RGB_TIMER_B,NULL,counter_frequency,period);driver_timer_pwm_on(RGB_TIMER_R);driver_timer_pwm_on(RGB_TIMER_G);driver_timer_pwm_on(RGB_TIMER_B);
}
TIMER_CH_DEF(RGB_TIMER_R,TIMER0,0,TIMER_CH_PWM_LOW,A,8,AF_PP,NULL);
TIMER_CH_DEF(RGB_TIMER_G,TIMER0,1,TIMER_CH_PWM_LOW,A,9,AF_PP,NULL);
TIMER_CH_DEF(RGB_TIMER_B,TIMER0,2,TIMER_CH_PWM_LOW,A,10,AF_PP,NULL);
8.4.3 基础定时器初始化及中断处理函数
基础定时器初始化配置代码如下在此起了一个定时器TIMER5并使能了其溢出中断。该定时器用于控制RGB PWM输出时间。
CTIMER_INT.timer_updata_callbackrgb_switch;bsp_timer_init(10000,500);void bsp_timer_init(uint32_t counter_frequency,uint16_t period)
{driver_timer_base_int_init(TIMER_INT,counter_frequency,period);nvic_irq_enable(TIMER5_IRQn,0,0);
}
其中断回调函数如下通过该函数定时调整RGB三路PWM的占空比其中RGB三路起始占空比分别为0、30%、60%之后没路每次增加1%进而实现彩灯呼吸的效果。
C
void rgb_switch(void)
{ static uint8_t r_duty0,g_duty30,b_duty60;bsp_rgb_duty_set(r_duty,g_duty,b_duty); if(r_duty100) r_duty0; if(g_duty100) g_duty0;if(b_duty100) b_duty0;
}
8.5 实验结果
将本例程代码下载到红枫派开发板中运行后将会看到RGB彩灯呼吸的效果
将本例程烧录到红枫派开发板中运行后将会通过蜂鸣器听到相关音乐
由聚沃科技原创来源于 【红枫派开发板】第八讲 TIMER-RGB彩灯实验 - 苏州聚沃电子科技有限公司 (gd32bbs.com)
GD32MCU技术交流群859440462