定时器是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
- */
实验现象:
测试工程源码:
|