定时器是MCU常用功能之一,本次配置一个1ms定时中断。
系统时钟设置16MHz,便于后面分频:
开启全局中断:
16分频,定时器时钟为1MHz,向下计数模式,开启中断:
主函数设置:
主函数首先设置定时器初值,然后注册溢出中断函数,由于定时器时钟配置为1MHz,向下计数模式,因此从初值999减到0即为1ms。
在定时器中断函数中清除中断标志,重新设置初值。
#include "mcc_generated_files/mcc.h"
/*
Main application
*/
int i=0;
void tca0_cb(void)
{
TCA0_ClearOverflowInterruptFlag();
TCA0_WriteTimer(999);
i++;
if(i==1000)
{
i=0;
LED_Toggle();
}
}
int main(void)
{
/* Initializes MCU, drivers and middleware */
SYSTEM_Initialize();
/* Replace with your application code */;
LED_SetDigitalOutput();
LED_SetHigh();
TCA0_WriteTimer(999);
TCA0_SetOVFIsrCallback(tca0_cb);
while (1)
{
DELAY_milliseconds(1000);
}
}
/**
End of File
*/
实验现象:
测试工程源码:
timer_led_test.X.rar
(144.39 KB)
|