目录
1. 时钟频率选择
2. 初始化
3. 中断
CH549/CH548和标准52内核一样,拥有T0,T1和T2三个定时器。
默认的情况下,时钟频率为Fsys / 12,然后通过T2MOD配置时钟频率。
最快的时钟频率是Fsys,即bTMR_CLK = 1,bTn_CLK = 1(n = 0, 1, 2)。最慢的就是默认的时钟配置。对于48M应用,最慢的一般也够用了。
以T0为例:
void timerInit(uint8_t ms)
{TMOD &= 0xF0;TMOD |= 0x01; //set timer0 as mode1 (16-bit)gTimerMS = (uint16_t)(65536 - FOSC / 12 / (1000 / ms));TL0 = gTimerMS; //initial timer0 low byteTH0 = gTimerMS >> 8; //initial timer0 high byteTR0 = 1; //timer0 start runningET0 = 1; //enable timer0 interruptEA = 1; //open global interrupt switch
}
TMOD的低4位配置T0,TL0和TH0设置计数时间。这里采用默认的12分频计数。
3个定时器的中断编号分别为1,3,5。以T0为例:
void timer0Isr() interrupt 1
{TL0 = gTimerMS; //reload timer0 low byteTH0 = gTimerMS >> 8; //reload timer0 high byte//Timer handle}
定时器中断中需要把TL0和TH0重新初始化以启动下次中断。
本文发布于:2024-01-29 15:05:00,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170651190416128.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |