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(&params);
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, &params);

 

  好的,我们来看下我们程序的运行情况。

 

posted @ 2020-06-08 15:40  DerekChen517  阅读(1771)  评论(0编辑  收藏  举报