SAM E51的定时器有两种一种为TC,另一个为TCC,TC为简单定时器,TCC为高级定时器,可以配置为TIMER,也可以配置为PWM。这一篇我将分享如何配置为TIMER,产生中断,使用板载的LED来验证。
1、打开MCC,添加TCC0:
2、我配置他为TIMER,每一毫秒溢出一次,并开启溢出中断:
3、在plib_tcc0.h中,有如下三个函数是需要使用到的,分别为初始化、开启定时器、注册定时器中断回调函数
4、在Main.c中添加一个中断回调函数,由于中断为1ms触发一次,因此我用了一个计数,计数到500时翻转一次LED
void TCC0_User_Handler() { static int cnt = 0; cnt = cnt +1; if(cnt == 500) { LED_Toggle(); cnt = 0; } } int main ( void ) { /* Initialize all modules */ SYS_Initialize ( NULL ); SERCOM5_USART_Initialize(); SYSTICK_TimerInitialize(); SYSTICK_TimerStart(); TCC0_TimerInitialize(); TCC0_TimerCallbackRegister(TCC0_User_Handler,0); TCC0_TimerStart(); while ( true ) { SERCOM5_USART_Write("hello world",sizeof("hello world")); SYSTICK_DelayMs(500); /* Maintain state machines of all polled MPLAB Harmony modules. */ SYS_Tasks ( ); } /* Execution should not come here during normal operation */ return ( EXIT_FAILURE ); }
【结果】
下载到开发板后,LED灯每500ms实现翻转一次
【总结】
图形化的配置可以轻松可视化,当然这方面的知识比较少,查不到相关的资料,只有自己摸索实现。