时钟源及定时器计算方法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Fin=8MHz
模式OM[3:2] 时钟源晶体驱动PLL启动状态fout
00 晶振时钟使能使能PLL输出
01 外部时钟禁止使能PLL输出
●时钟源定义
规则:Fpllo = (m * Fin)/(p * 2s)
Fpllo必须大于20MHZ且少于66MHZ
Fpllo * 2s必须少于170MHZ
Fin/p推荐为1MHZ 或大于,但小于2MHZ
例1.
设晶振工作频率fin=8MHz,要求产生主时钟频率MCLK==64MHz 由于Fpllo * 2s<170MHZ ->2s <170MHz/64 MHz = 2.65
-> s=1=SDIV
Fin/p推荐为1MHZ 或大于,但小于2MHZ, 1MHz<=Fin/p<2M Fin /2M<=P< Fin/1M -> 4<=P<8
p = (PDIV + 2) -> 2<=PDIV<4
Fpllo = (m * Fin)/(p * 2s)
m = (MDIV + 8),p = (PDIV + 2),s = SDIV
MDIV=56 (0x38) 0~255
PDIV=2 (0x02) 0~63
SDIV=1 (0x01) 0~3
验证:
Fpllo=MCLK=( MDIV +8)*8M/( PDIV +2)*2SDIV =(56+8)*8M/((2+2)*21)= 64MHz
PLLCON:MDIV[19:12],PDIV[9:4],SDIV[1:0]
0x38 0x3 0x1
PLLCON=0b0011 1000 0000 0010 0001=0x380201
代码:
PLLCON|= ((MDIV<<12)| (PDIV<<4)|( SDIV<<0))
定时器定义
定时器输入时钟频率=MCLK/{预分频值+1}/{再分频值}= MCLK/{ prescaler +1}/{DIV} 其中预分频值为0~255
再分频DIV为2,4,8,16,32
例1.MCLK=64MHz,时间间隔T=5s
定时器输出频率fout=1/T=1/5=0.2Hz
DIV= 32
Prescaler=199 Prescaler:0~255
Fin= MCLK/{ prescaler +1}/DIV 尽量保持整除
=64MHz/200/32=10KHz
TCNTBn = Fin / fout=10KHz/0.2=50K=50000 TCNTBn:0~65535
ARM7的定时器配置及启动!
第一步:配置定时器配置寄存器0(TCFG0)以设置定时器的预分频值prescaler
第二步:配置定时器配置寄存器1(TCFG1)以设置定时器的再分频值DIV
第三步:设置定时器初值TCNTn,TCNTBn及比较寄存器TCMPn,TCMPBn
第四步:配置定时器控制寄存器TCON的定时器自动重载位,翻转位,手动更新位,及启动定时器位。注:启动定时器的同时应清除手动更新位。
第五步:如果要产生定时器输出,则应配置GPIO端口E为功能2,
第六步:若定时器要产生中断,则应将定时器中断屏蔽位使能