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实现翻转一次
【总结】
图形化的配置可以轻松可视化,当然这方面的知识比较少,查不到相关的资料,只有自己摸索实现。
我要赚赏金
