一、计数器
- 加法计数器:每进入一个脉冲,就加一
- 减法计算器:每进入一个脉冲,就减一
当计数器减到0,触发中断
1.最短计时时间
- 当时钟周期为1khz时,最短计时时间为1ms,最长计时时间为65535ms
- 当时钟周期为1mhz时,最短计时时间为1us,最长计时时间为65535us
2.时钟频率与时钟精度
二、定时器
1.定时器类别
timx(a/g)
tima(advanced)高级定时器
timg(general)通用定时器
2.七个定时器
- 一个16位的timerg定时器
- 一个16位的timerg定时器支持QEI(正交)
- 两个16位的timerg定时器支持低功耗
- 一个32位的timerg高分辨率通用定时器
- 两个timera
三、配置
1.定时器名称和选择的定时器外设
2.提供的预设,如周期是500ms
3.基础设置
时钟配置
时钟源:一般都用BUSCLK
BUSCLK(系统时钟,从MCLK与ULPCLK中选用)
MFCLK(中频时钟,固定4MHz不变,使用的是SYSOC振荡器分频来,系统初始化默认关闭,需要软件打开;)
LFCLK(低频时钟,就是低频振荡器输出的32.768KHz;)
时钟分频
prescaler 进行进一步划分(必须在1-256之间取)
第一个是在时钟内部,第二个是在时钟外部
按照两次分频,最终计数的时钟是125khz,最小时间是8us,最大时间524.29ms
定时器模式
- one-shot只记一次
- periodic 循环计数
- up从0往上走
- down 从高往低走
设置的时间和实际的时间(设置的时间超过最小精度时无法实现,一实际时间为准)
完成初始化就开始计时,不勾选需要代码实现开始
中断配置
到0时进入中断
定时器选择
这里的选择会影响上面的显示结果
四、代码讲解
#include "ti_msp_dl_config.h"int main(void)
{SYSCFG_DL_init();NVIC_EnableIRQ(TIMER_0_INST_INT_IRQN);//使能定时器0中断//传入定时器中断名称DL_TimerG_startCounter(TIMER_0_INST);//启动定时器0的计数器//传入定时器名称while (1) {}
}
//timr0的中断服务函数
void TIMER_0_INST_IRQHandler(void)
{switch (DL_TimerG_getPendingInterrupt(TIMER_0_INST)) //获取timer0最高优先级中断{case DL_TIMER_IIDX_ZERO://如果是当前中断DL_GPIO_togglePins(GPIO_LEDS_PORT,GPIO_LEDS_USER_LED_1_PIN | GPIO_LEDS_USER_TEST_PIN);//翻转对应引脚break;default:break;}
}
五、不同模式的功耗
低功耗模式一般在电赛中并不常用,在此不做详细介绍