杰理AC692X学习-定时器的配置

692x一共有4个timer,其中timer0用于系统时钟,我们一般不使用,到time.c下将部分代码copy或者参考,改成自己的timer模块,首先将timer_init()中屏蔽掉自己有用到的tiemr。杰理AC692X学习-定时器的配置_第1张图片

杰理AC692X学习-定时器的配置_第2张图片
接下来是编写初始化函数,注册中断回调函数,具体配置参考下面寄存器配置

static void user_timer2_isr_fun(void)
{
    JL_TIMER2->CON |= BIT(14);
	/*test mdoe*/
}
IRQ_REGISTER(IRQ_TIME2_IDX, user_timer2_isr_fun);
void user_timer2_init(void)
{
    JL_TIMER2->CON = 0x0000;

    JL_TIMER2->CNT = 0;
    JL_TIMER2->PRD = 11200;/* 重装载值 */
	// JL_TIMER2->PRD = 750;//1ms

	JL_TIMER2->CON = PRESCALER_16x2 << 4; //32分频
	JL_TIMER2->CON |= 1 << 0; //定时器计数模式
	JL_TIMER2->CON |= 2 << 2; //OSC作为时钟源

	IRQ_REQUEST(IRQ_TIME2_IDX, user_timer2_isr_fun);
}

预分频选择JL_TIMERX->CON bit[7-4]

#define PRESCALER_1         0
#define PRESCALER_4         1
#define PRESCALER_16        2  
#define PRESCALER_64        3

#define PRESCALER_1x2       4
#define PRESCALER_4x2       5
#define PRESCALER_16x2      6
#define PRESCALER_64x2      7

#define PRESCALER_1x256     8
#define PRESCALER_4x256     9
#define PRESCALER_16x256    10
#define PRESCALER_64x256    11

#define PRESCALER_1x2x256   12
#define PRESCALER_4x2x256   13
#define PRESCALER_16x2x256  14
#define PRESCALER_64x2x256  15

JL_TIMERx->CON bit[1-0] 工作模式选择
杰理AC692X学习-定时器的配置_第3张图片
JL_TIMERx->CON bit[3-2] 时钟源选选,因为时钟主频可能会在不通情况下发生变化,所以推荐采用osc外部晶振做时钟原
杰理AC692X学习-定时器的配置_第4张图片

你可能感兴趣的:(杰理AC692x学习)