本次主要是以自我提升的态度来参加本次TI的活动,自己在学校上课也在学习MSPM0系列单片机,感谢EEPW提供的这次机会,让我能够巩固拓展自己的知识。本次准备跟随着老师的脚步一步一步学习。本次使用的开发板是TI的MSPM0L1306开发板,使用的软件是CCS Theia,任务的目标是利用GPIO外设实现LED红色绿色蓝色的循环显示。
(一)原理图
从原理图分析可知
1. 需要配置3个GPIO外设为输出模式,即PA13,PA26,PA27。
2. 将引脚置为高即可使得LED灯点亮
3. 通过延时和引脚置低即可实现LED的交替循环显示
(二)sysconfig配置
syscfg是一个系统配置工具,用于配置和管理嵌入式系统的各种参数和设置。syscfg工具可以帮助开发人员在CCS中轻松地配置系统的各种参数,包括时钟设置、引脚配置、外设功能等。通过syscfg工具,开发人员可以直观地查看和调整系统的配置信息,以满足不同的应用需求。
1. 配置GPIO引脚
先选择配置端口为PORTA,配置引脚号为13,26,27,模式为输出模式,电平设置为低电平(cleared)。
然后可以点击编译,点击右上角芯片的图标
,可以看到显示了已经配置的引脚
同时在ti_msp_dl_config.h文件中自动生成引脚的宏定义
/* Port definition for Pin Group GPIO_GRP_0 */
#define GPIO_GRP_0_PORT (GPIOA)
/* Defines for PIN_0: GPIOA.0 with pinCMx 1 on package pin 1 */
#define GPIO_GRP_0_PIN_0_PIN (DL_GPIO_PIN_0)
#define GPIO_GRP_0_PIN_0_IOMUX (IOMUX_PINCM1)
/* Defines for PIN_13: GPIOA.13 with pinCMx 14 on package pin 17 */
#define GPIO_GRP_0_PIN_13_PIN (DL_GPIO_PIN_13)
#define GPIO_GRP_0_PIN_13_IOMUX (IOMUX_PINCM14)
/* Defines for PIN_26: GPIOA.26 with pinCMx 27 on package pin 30 */
#define GPIO_GRP_0_PIN_26_PIN (DL_GPIO_PIN_26)
#define GPIO_GRP_0_PIN_26_IOMUX (IOMUX_PINCM27)
/* Defines for PIN_27: GPIOA.27 with pinCMx 28 on package pin 31 */
#define GPIO_GRP_0_PIN_27_PIN (DL_GPIO_PIN_27)
#define GPIO_GRP_0_PIN_27_IOMUX (IOMUX_PINCM28)
(三)代码编写
使用两个库函数来实现GPIO的点亮,通过delay函数来进行延时,间隔为500ms(太短可能无法分辨出来,最好不要小于200ms,太大的等待时间太长。通过放在while里实现循环
DL_GPIO_setPins()
DL_GPIO_clearPins()
代码如下
#include "ti/driverlib/m0p/dl_core.h"
#include "ti_msp_dl_config.h"
int main(void)
{
SYSCFG_DL_init();
while (1) {
DL_GPIO_setPins (GPIO_GRP_0_PORT, GPIO_GRP_0_PIN_26_PIN);//高电平,红灯亮
delay_cycles(16000000);//1s为32MHZ,这里是延时500ms
DL_GPIO_clearPins (GPIO_GRP_0_PORT, GPIO_GRP_0_PIN_26_PIN);
delay_cycles(16000000);//1s为32MHZ,这里是延时500ms
DL_GPIO_setPins (GPIO_GRP_0_PORT, GPIO_GRP_0_PIN_13_PIN);//高电平,绿灯亮
delay_cycles(16000000);//1s为32MHZ,这里是延时500ms
DL_GPIO_clearPins (GPIO_GRP_0_PORT, GPIO_GRP_0_PIN_13_PIN);
delay_cycles(16000000);//1s为32MHZ,这里是延时500ms
DL_GPIO_setPins (GPIO_GRP_0_PORT, GPIO_GRP_0_PIN_27_PIN);//高电平,蓝灯亮
delay_cycles(16000000);//1s为32MHZ,这里是延时500ms
DL_GPIO_clearPins (GPIO_GRP_0_PORT, GPIO_GRP_0_PIN_27_PIN);
delay_cycles(16000000);//1s为32MHZ,这里是延时500ms
}
}