这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » TI » 【MSP焕新大作战】课程1-循环呼吸灯

共2条 1/1 1 跳转至

【MSP焕新大作战】课程1-循环呼吸灯

高工
2024-05-16 21:38:01     打赏

看硬件,原理图可知,RGB灯分别与PA26 PA13 PA27通过短接帽可以连在一起

再通过说明书可知,三个引脚分别处于TIMG0通道1,TIMG1通道0和1

根据硬件配置

生成程序。添加呼吸灯代码(循环修改占空比),原理就是不停的改变IO口的占空比,使LED在视觉效果上逐渐变化,形成呼吸的效果

int main(void)
{
	unsigned short i;
	SYSCFG_DL_init();
	SIG_R_OFF;
	DL_TimerG_setCaptureCompareValue(PWM_0_INST, 999, DL_TIMER_CC_1_INDEX);
	DL_TimerG_setCaptureCompareValue(PWM_1_INST, 999, DL_TIMER_CC_1_INDEX);
	DL_TimerG_setCaptureCompareValue(PWM_1_INST, 999, DL_TIMER_CC_0_INDEX);
	while (1)
	{
		for (i = 1000; i > 0; i--)
		{
			DL_TimerG_setCaptureCompareValue(PWM_1_INST, i, DL_TIMER_CC_0_INDEX);
			delay_cycles(32000); // 延迟
		}
		for (i = 0; i < 1000; i++)
		{
			DL_TimerG_setCaptureCompareValue(PWM_1_INST, i, DL_TIMER_CC_0_INDEX);
			delay_cycles(32000); // 延迟
		}
		delay_cycles(DELAY); // 延迟
		for (i = 1000; i > 0; i--)
		{
			DL_TimerG_setCaptureCompareValue(PWM_0_INST, i, DL_TIMER_CC_1_INDEX);
			delay_cycles(32000); // 延迟
		}
		for (i = 0; i < 1000; i++)
		{
			DL_TimerG_setCaptureCompareValue(PWM_0_INST, i, DL_TIMER_CC_1_INDEX);
			delay_cycles(32000); // 延迟
		}
		delay_cycles(DELAY); // 延迟
		for (i = 1000; i > 0; i--)
		{
			DL_TimerG_setCaptureCompareValue(PWM_1_INST, i, DL_TIMER_CC_1_INDEX);
			delay_cycles(32000); // 延迟
		}
		for (i = 0; i < 1000; i++)
		{
			DL_TimerG_setCaptureCompareValue(PWM_1_INST, i, DL_TIMER_CC_1_INDEX);
			delay_cycles(32000); // 延迟
		}
		delay_cycles(DELAY); // 延迟
	}
}



院士
2024-05-17 07:07:24     打赏
2楼

谢谢分享~!


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]