课程一:点亮RGB,实现红色、绿色、蓝色的循环显示。任务1:图文帖子。
课程1所要实现的目标:点亮RGB,实现红色、绿色、蓝色的循环显示。该目标为课程实验点亮单色灯的进阶问题。
课程1中我们学习了普通IO口的输出控制,输入按键采集的实践,以及PWM控制方法。通过本次课程的学习我们可以知道该开发板板载了一个三色LED灯,所以可以通过对开发板编程完成本课程任务目标。我们先预定循环顺序为绿色(G)-红色(H)-蓝色(B),间隔为1s。实现方法为纯编程实现。
首先通过原理图查找关于LEDs的原理图:
确定关于三种颜色灯的引脚为PA13,PA26,PA27。三灯共同接地,当引脚置高电平时即可点亮LED灯泡。
本次课程我采用ccs theia作为开发平台。同时使用mspm0 sdk:
我们通过file窗口选择import project(s),点击browse,选择mspm0 SDK,找到empty范例,点击选择该文件夹。最后选择ticlang模式。
点击empty.sysfg
创建RGB组,在组中分别创建PIN_B,PIN_R,PIN_G。设置output输出,设置引脚PA13,PA26,PA27。其他设置保持默认(any)。
编译后开始代码操作
宏定义:
点亮led代码:
int main(void) { SYSCFG_DL_init(); while (1) { DL_GPIO_setPins(RGB_PORT, RGB_PIN_G_PIN);//点亮绿灯 DL_GPIO_clearPins(RGB_PORT, RGB_PIN_R_PIN | RGB_PIN_B_PIN);//熄灭红灯和蓝灯 delay_cycles(32*1000*1000);//延时一秒 DL_GPIO_setPins(RGB_PORT, RGB_PIN_R_PIN);//点亮红灯 DL_GPIO_clearPins(RGB_PORT, RGB_PIN_G_PIN | RGB_PIN_B_PIN);//熄灭绿灯和蓝灯 delay_cycles(32*1000*1000);//延时一秒 DL_GPIO_setPins(RGB_PORT, RGB_PIN_B_PIN);//点亮蓝灯 DL_GPIO_clearPins(RGB_PORT, RGB_PIN_G_PIN | RGB_PIN_R_PIN);//熄灭绿灯和红灯 delay_cycles(32*1000*1000);//延时一秒 DL_GPIO_clearPins(RGB_PORT, RGB_PIN_G_PIN | RGB_PIN_R_PIN | RGB_PIN_B_PIN);//熄灭所有灯 delay_cycles(32*1000*1000);//延时一秒 }//循环以上操作 }
显示展示: