4.回顾探究实操过程中技术原理
(4.1)单片机LP-MSPM0L1306板子上LED2的电路图如图
对照实物电路板,发现J3,J12,J13上面使用跳线帽连接好了,所以我们确认MSPM0L1306单片机的IO口构成的闭合回路如下:
PA13-GPIO与LED2的绿灯连接,
PA26-GPIO与LED2的红灯连接,
PA27-GPIO与LED2的蓝灯连接,
软件代码中我们发现如下配置:
代码中使用了这3个GPIO引脚,
GPIO_LEDS_USER_LED_2_PIN,
GPIO_LEDS_USER_LED_1_PIN,
GPIO_LEDS_USER_LED_3_PIN,
我们点击gpio_toggle_output.syscfg文件,即是上面2.3安装好的配置工具界面.看到如下配置:
这个配置文件刚好与上面LED2的硬件原理图MCU-IO口PA13,PA26,PA27对应,使用DL_GPIO_clearPins函数可以GPIO输出低电平,使用DL_GPIO_setPins可以GPIO输出高电平,进入while(1)函数后,DL_GPIO_togglePins进行不断翻转LED2-RGB灯的状态,最终我们就看到可交替闪烁的现象!
(4.2)言归正传:开始做自己的任务
课后任务一:点亮RGB,实现红色、绿色、蓝色的循环显示
单片机LP-MSPM0L1306板子上LED2的电路图如图
循环显示红,绿,蓝三色灯,则只需要循环输出PA26.PA13,PA27高低电平即可.最简单用delay函数实现一下.如下
int main(void)
{
/* Power on GPIO, initialize pins as digital outputs */
SYSCFG_DL_init();
/* Default: LED1 and LED3 ON, LED2 OFF */
//DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_2_PIN);
DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_2_PIN |
GPIO_LEDS_USER_LED_3_PIN |
GPIO_LEDS_USER_LED_1_PIN);
while (1) {
/*
* Call togglePins API to flip the current value of LEDs 1-3. This
* API causes the corresponding HW bits to be flipped by the GPIO HW
* without need for additional R-M-W cycles by the processor.
*/
DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_2_PIN);
delay_cycles(DELAY);
DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_2_PIN);
DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_3_PIN);
delay_cycles(DELAY);
DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_3_PIN);
DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
delay_cycles(DELAY);
DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);
}
}
将此代码编译后,点击Debug,下载后看到红,绿,蓝开始循环闪烁,一闪一闪,验证编写的GPIO代码和实际实验LED运行现象对应!
至此,我们愉快的进行LED神灯实验了,也算入门了这款单片机,接下来帖子介绍我们的MSPM0L1306低功耗单片机的其他的强大的功能.
欢迎阅读笔者下一篇帖子,有不正确的地方请多多指教!