杰理AC695X系列—us定时器(12)
前几日调了一个433的接收ic,要求的定时器是us级别的,但SDK里面自带的定时器是ms级别的,例如以下定时扫描增加接口
所以需要搞个us定时器,怎么搞?
办法总比困难多
#define USER_TIMER JL_TIMER3//微妙延时使用的定时器 地址
#define USER_TIMER_IRQ IRQ_TIME3_IDX//微妙延时使用的定时器 中断号
___interrupt static void timer_isr()
{
USER_TIMER->CON |= BIT(14);
//JL_PORTB->DIR &= ~BIT(11);
//JL_PORTB->OUT ^= BIT(11);//建议搞个io测试下是不是你想要的
}
void timer3_init(u32 usec)
{
static u32 prd = 0;
//prd = clk_get("timer")/4000000 * usec;
printf("PRD : %d / %d", prd, clk_get("timer"));
USER_TIMER->CON = BIT(14);//清pending
USER_TIMER->CNT = 0;
USER_TIMER->PRD = 580;//65535 == 11ms 596 == 100us
request_irq(USER_TIMER_IRQ, 3, timer_isr, 0);
USER_TIMER->CON = BIT(0)|BIT(3)|BIT(4);//BIT(0)定时计数模式 BIT(3):晶振为时钟源 BIT(4):4 分频
printf("PRD : %d / %d", USER_TIMER->PRD, clk_get("timer"));
}