MSP430时钟源个人理解
时间:2026-05-08
时间:2026-05-08
CanolaFlower
MSP430时钟源理解
----CanolaFlower
一:
ACLK: 来源 FLXTCLK,通过配置BCSCTL1的寄存器DIVA ,决定把FLXTCLK分频多少得到ACLK. 如果程序中没有关于BCSCTL1的寄存器DIVA的配置,那么ACLK的值就是FLXTCLK的值,即单片机上XIN和XOUT这2个引脚接的晶振的频率。
比如下图中所示
现在XIN和XOUT这2个引脚接的晶振是32768HZ,那么,f_ ACLK=32768。
二:
MCLK:来源:由3个时钟源提供。他们分别是LFXT1CLK,XT2CLK(F13,F14;如果是F11,F11X1则由LFXT1CLK代替),DCO时钟源信号。
可见,MCLK到底是多少,如果程序中不注明,则就无法确定MCLK到底是多少。但是,MCLK是用于MCU和相关系统模块的时钟的,又不能不确定其数值。所以,在程序编写过程中,对它的数值确定就必须写出来了。
格式例子如下:
CanolaFlower
BCSCTL2 |= SELM_2+ DIVM_1;//确定MCLK 是XT2CLK经过2分频得到。
SELM_1 和DIVM_1和在其他地方定义了(在msp430x14x.h中),如下图
XT2CLK的数值是多少呢?它的数值是由单片机的XT2IN和XT2OUT这2个引脚所接晶振的频率决定的。例图如下
上图中XT2IN和XT2OUT接了个8M的晶振,那么XT2CLK 的频率就是8M.此时 MCLK 的频率就是4M了啊。
当然也可以写成
BCSCTL2 |= SELM_3+ DIVM_3;//确定MCLK 是LFXTCLK经过8分频得到。
自由选择的。
三:
SMCLK:来源:2个时钟信号:XT2LCK(F13,F14)和DCO.原理和MCLK大同小异。
四:
DCO
上面说到,XT1和XT2都是外部接晶振了,所以能产生频率,那DCO接哪了呢?
呵呵,DCO接到单片机内部的RC振荡电路上了,是MSP430单片机内部集成的。其频率根据芯片和温度不同而不同,其值不确定,也可以设置相关寄存器控制分频数。
CanolaFlower
时钟的来源和大小确定以后,如何在程序中使用呢?
比如,定时器B每隔2S中断一次。那么,可以如下写
TBCTL |= TBSSEL_1 + ID_3 + MC_1; //时钟源ACLK/8,增计数模式
TBCCR0 = 4096*2 - 1; //周期两秒
TBCCTL0 |= CCIE; //允许定时器B中断
解释:增计数模式为定时计数器增到CCR0的值,产生一个中断,然后再从0增到CCR0的值,再中断,如此往复。
时钟源为ACLK,此处接的32768HZ晶振。那么定时器B的频率就是32768/8。那么一个脉冲需要多长时间呢?
1/(32768/8),即8/32768秒。那么,增到CCR0的值4096*2,需要的时间就是4096*2*(8/32768),即(4096*2*8)/32768=2秒。
也就是说,经过每经过2秒执行一次中断。
从上面的例子可以知道怎么使用MCLK了吧。其实,单片机每个模块都有相应寄存器,用来设置这个模块选择那些时钟,经过多少分频得到多大的频率。就是这样简单的了。
上一篇:外贸跟单实习周记4篇