基于[海思Hi3516dv300]定时器
时间: 2023-08-17 12:10:34 浏览: 53
海思Hi3516DV300芯片内置有多个定时器,可以用于周期性地生成中断、计时等应用。
在使用定时器之前,需要先配置定时器的时钟源、分频系数、计数模式等参数。以TIMER1为例,以下是配置定时器的代码示例:
```c
// 时钟源选择为时钟输入CKIN1
REG_PERI_CRG50 &= ~(0x7 << 8);
REG_PERI_CRG50 |= (0x0 << 8);
// 分频系数为256
REG_TIMER1_TCFG = (REG_TIMER1_TCFG & ~(0xff << 8)) | (0xff << 8);
// 计数模式为定时器模式
REG_TIMER1_TCON &= ~(0x3 << 0);
REG_TIMER1_TCON |= (0x2 << 0);
```
接着,可以设置定时器的计数值和中断使能:
```c
// 设置定时器计数值为10000,即10ms
REG_TIMER1_TCNTB = 10000;
// 使能定时器中断
REG_TIMER1_TCON |= (0x1 << 5);
// 使能定时器
REG_TIMER1_TCON |= (0x1 << 3);
```
最后,在中断服务函数中处理定时器中断即可:
```c
void __irq Timer1_ISR(void)
{
// 清除定时器中断标志
REG_TIMER1_TINT_CSTAT |= (0x1 << 0);
// 在此处添加定时器中断处理代码
}
```
需要注意的是,定时器的中断优先级需要在中断控制器中配置,以确保中断能够被正确处理。
相关推荐
















