时钟源及定时器计算方法

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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,

第六步:若定时器要产生中断,则应将定时器中断屏蔽位使能

相关文档
最新文档