通用定时器

smallcracker 2021-02-28 00:00:00
Categories: Tags:

通用定时器

一、简介

功能

timer

引脚

pin

二、使用简介

1、定时器模式

这里有单次运行和连续运行模式。该单片机要想使用实时时钟模式,就要在ccp的偶数管引脚上接入一个32768hz的输入信号,所以这里不介绍RTC模式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
void WTimer0AIntHandler(){
unsigned long ulstatus = TimerIntStatus(WTIMER0_BASE,TIMER_TIMA_TIMEOUT);
TimerIntClear(WTIMER0_BASE, ulstatus);
UARTprintf("hello ,this is the WTIMER!\n");
return ;
}
void ConfigureWTIMER(){
SysCtlPeripheralEnable(SYSCTL_PERIPH_WTIMER0);
//单次计时
TimerConfigure(WTIMER0_BASE,TIMER_CFG_ONE_SHOT);
//周期计时
//TimerConfigure(WTIMER0_BASE,TIMER_CFG_PERIODIC);
//预设值设定
TimerLoadSet64(WTIMER0_BASE, clock*2);
TimerIntRegister(WTIMER0_BASE, TIMER_A, WTimer0AIntHandler);
IntMasterEnable();
TimerIntEnable(WTIMER0_BASE, TIMER_TIMA_TIMEOUT);
IntEnable(INT_WTIMER0A);
return ;
}
//##############
//启动时钟
//##############
TimerEnable(WTIMER0_BASE, TIMER_A);
//##############
//计数值读取
//##############
long long timer_val = TimerValueGet64(WTIMER0_BASE);

捕捉模式

边沿计时模式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
void Timer2AIntHandler(){
unsigned long s=TimerIntStatus(TIMER2_BASE,TIMER_CAPA_EVENT);
TimerIntClear(TIMER2_BASE,s);
UARTprintf("Captured Value: 0x%04X\n", TimerValueGet(TIMER2_BASE, TIMER_A));
return ;
}


void ConfigureTIMERCCP(){
SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOF);
SysCtlPeripheralEnable(SYSCTL_PERIPH_TIMER2);
GPIOPinConfigure(GPIO_PF4_T2CCP0);
GPIOPinTypeTimer(GPIO_PORTF_BASE, GPIO_PIN_4);
GPIOPadConfigSet(GPIO_PORTF_BASE, GPIO_PIN_4, GPIO_STRENGTH_2MA, GPIO_PIN_TYPE_STD_WPU);
TimerConfigure(TIMER2_BASE, TIMER_CFG_SPLIT_PAIR | TIMER_CFG_A_CAP_TIME_UP);
TimerControlEvent(TIMER2_BASE, TIMER_A, TIMER_EVENT_NEG_EDGE);
TimerLoadSet(TIMER2_BASE, TIMER_A, 0x8FFF);
TimerIntRegister(TIMER2_BASE, TIMER_A, Timer2AIntHandler);
IntMasterEnable();
TimerIntEnable(TIMER2_BASE, TIMER_CAPA_EVENT);
IntEnable(INT_TIMER2A);
TimerEnable(TIMER2_BASE,TIMER_A);
return ;
}


PWM模式

优先使用集成的PWM