上一篇文章我們講了定時器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);
好的,我們來看下我們程序的運行情況。