NO.15 MSP432定时器使用实例——流水灯

2022-12-20  

  上一篇文章我们讲了定时器Timer的基本概念和如何调用定时器。这次我们来尝试在MSP432中使用定时器完成流水灯这个小实验。


  流水灯是我们从真正意义上进行对单片机进行时间控制。


  这个实验主要是控制我们开发板上的LED进行1s亮,1s灭,循环进行。


  首先,我们打开CCS中ResourceExplorer的TiDrivers下的案例——timerled。

  我们将其导入到我们的工作区中,我们再打开timerled.syscfg这个文件,查看本工程的相关配置。

  

  我们要增加其他Timer也非常简单,只要点击ADD这个按钮就可以配置相关内容。


  我们其次打开timerled.c这个主文件,里面存放着我们的核心程序。


  我们要使用定时器,首先要引入这个头文件


#include

  像往常一样,我们要定义一个定时器的句柄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);

 

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

 

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。