NO.15 MSP432定时器使用实例——流水灯
上一篇文章我们讲了定时器Timer的基本概念和如何调用定时器。这次我们来尝试在MSP432中使用定时器完成流水灯这个小实验。
流水灯是我们从真正意义上进行对单片机进行时间控制。
这个实验主要是控制我们开发板上的LED进行1s亮,1s灭,循环进行。
首先,我们打开CCS中ResourceExplorer的TiDrivers下的案例——timerled。
我们将其导入到我们的工作区中,我们再打开timerled.syscfg这个文件,查看本工程的相关配置。
我们要增加其他Timer也非常简单,只要点击ADD这个按钮就可以配置相关内容。
我们其次打开timerled.c这个主文件,里面存放着我们的核心程序。
我们要使用定时器,首先要引入这个头文件
#include <ti/drivers/Timer.h>
像往常一样,我们要定义一个定时器的句柄Handle和一个参数Params。
Timer_Handle timer0; Timer_Params params;
同时,我们要确定我们定时器到了时间之后该做些什么,就是所谓的回调函数。我们先建立这个函数。
/* Callback used for toggling the LED. */ void timerCallback(Timer_Handle myHandle); /* * This callback is called every 1,000,000 microseconds, or 1 second. Because * the LED is toggled each time this function is called, the LED will blink at * a rate of once every 2 seconds. * */ void timerCallback(Timer_Handle myHandle) { GPIO_toggle(CONFIG_GPIO_LED_0); }
然后我们在主程序内要调用初始化定时器这个函数。
/* Call driver init functions */ GPIO_init(); Timer_init();
随后我们就可以具体设定定时器的参数了
Timer_Params_init(¶ms); params.period = 1000000; params.periodUnits = Timer_PERIOD_US; params.timerMode = Timer_CONTINUOUS_CALLBACK; params.timerCallback = timerCallback;
在这里,我们的设置是定时器的时间周期是1000000us=1000ms=1s,我们定时是连续工作的,是CONTINUOUS进行计时的,同时,我们到时间后会调用timerCallback()这个回调函数。
最后一步就是开启定时器了,我们最后一行代码。
timer0 = Timer_open(CONFIG_TIMER_0, ¶ms);
好的,我们来看下我们程序的运行情况。
——横眉冷对千夫指,俯首甘为孺子牛