历史上的今天
返回首页

历史上的今天

今天是:2025年02月11日(星期二)

正在发生

2020年02月11日 | MSP430G2553时钟系统配置

2020-02-11 来源:eefocus

在MSP430单片机中,一个时钟周期 = MCLK晶振的倒数。如果MCLK是8MHz,则一个时钟周期为1/8us。


一个机器周期 = 一个时钟周期,即430每个动作都能完成一个基本操作。


一个指令周期 = 1~6个机器周期,具体根据具体指令而定。


另外,指令长度只是一个存储单位,与时间没有必然的关系。


MSP430G2553单片机的时钟模块主要包括:


    三个时钟:辅助时钟ACLK 、主时钟MCLK 、子系统时钟SMCLK


    三个时钟源:内部低频时钟源LFXT1 、内部数字控制RC振荡器DCO、外部低频振荡器(需要焊上晶振) 

对于时钟系统的配置,一共用到四个寄存器:DCOCTL-DCO控制寄存器、BCSCTL1-基本时钟控制寄存器1、BCSCTL2-基本时钟控制寄存器2、BCSCTL3-基本时钟控制寄存器3。


DCOCTL-DCO控制寄存器:

DCOx


DCO频率选择控制1


MODx


DCO频率校正选择,通常令MODx=0


一般不用管这个寄存器,在配置DCO时和BCSCTL2配合使用。


注意:在MSP430G2553上电复位后,默认RSEL=7,DCO=3,通过数据手册查得DCO频率大概在0.8~1.5MHz之间。

2、BCSCTL1-基本时钟控制寄存器1:

XT2OFF


    不用管,因为MSP430G2553内部没有XT2提供的HF时钟


XTS


    不用管,默认复位后的0值即可


DIVAx


设置ACLK的分频数


00          /1


01          /2


10          /4


11           /8


RSELx


    DCO频率选择控制2


3、BCSCTL2-基本时钟控制寄存器2(比较常用):

SELMx


MCLK的选择控制位


00          DCOCLK


01          DCOCLK


10          LFXT1CLK或者VLOCLK


11           LFXT1CLK或者VLOCLK


DIVMx


设置MCLK的分频数


00          /1


01          /2


10          /4


11           /8


SELS


    SMCLK的选择控制位


    0            DCOCLK


    1            LFXT1CLK或者VLOCLK


DIVSx


设置SMCLK的分频数


00          /1


01          /2


10          /4


11           /8


DCOR


    DCO直流发生电阻选择,此位一般设0


0            内部电阻


1            外部电阻


4、BCSCTL3-基本时钟控制寄存器3:

XT2Sx


    不用管


LFXT1Sx(当SELMx选择2或3时,通过该寄存器来选择是LFXT1还是VLOCLK)


00          LFXT1选为32.768KHz晶振


01          保留


10          VLOCLK


11          外部数字时钟源


XCAPx


    LFXT1晶振谐振电容选择


00          1pF


01          6pF


10          10pF


11           12.5pF


常用宏定义:



#ifndef __DisableCalData


  SFR_8BIT(CALDCO_16MHZ);


  SFR_8BIT(CALBC1_16MHZ);


  SFR_8BIT(CALDCO_12MHZ);


  SFR_8BIT(CALBC1_12MHZ);


  SFR_8BIT(CALDCO_8MHZ);


  SFR_8BIT(CALBC1_8MHZ);


  SFR_8BIT(CALDCO_1MHZ);


  SFR_8BIT(CALBC1_1MHZ);


  #endif



/*

功能:按下按键,系统主频在VLO和DCO之间切换,使用系统delay函数大概输出1hz和10hz的脉冲

*/

#include

 

volatile u8 flag=0;

 

void inter_init()

{

P1DIR = BIT0;       // 设置P1.0为输出

    P1DIR &=~ BIT3; //将按键1对应的IO口P1.3设置为输入

    P1IFG &=~ BIT3; //初始化清空中断标志位

    P1IE |= BIT3; //P1.3中断使能

    P1IES |= BIT3; //下降沿产生中断

    P1REN |= BIT3;//启用内部上下拉电阻

    P1OUT |= BIT3; //P1.3设置为上拉电阻:OUT = 1; REN = 1;

    __enable_interrupt();//开启总中断

}

 

#pragma vector = PORT1_VECTOR     //固定格式,声明中断向量地址,不能变

__interrupt void Port1 (void)

{

P1IE &=~ BIT3; //关闭P1.3中断使能

P1IFG &= BIT3;//因为只用到了P1.3 ,其他的中断标志全部清零。

 

switch(P1IFG)

{

case BIT3: flag++;P1IFG=0;break; //P1.3 产生的中断

default: break;

}

 

__delay_cycles(1000);//消抖

P1IE |= BIT3; //P1.3中断使能

}

 

void main(void)

{

           WDTCTL = WDTPW | WDTHOLD;                 // 关闭看门狗

           IFG1 &=~OFIFG;                           // 晶振接触不良导致错误之后,便会使OSCFault标志位置1。这个是一个不可屏蔽中断。

           //__bis_SR_register(SCG1 + SCG0);           // 关闭 DCO

           inter_init();

   while (1)

  {

    if(flag%2)

    {

        BCSCTL2 = SELM_0 + DIVM_3; // 主频选择DCO,8分频(试试在这里用

                                   //BCSCTL2 |= SELM_0 + DIVM_3,会发现不能切换了

    DCOCTL = CALDCO_1MHZ;      //DCO选择1MHZ

        BCSCTL1 = CALBC1_1MHZ;     //设置基础时钟寄存器1为1Mhz时钟时的设置,一般和DCOCTL一起使用

        P1OUT ^= BIT0;

    __delay_cycles(12500);//延时10hz

    }

    else{

    BCSCTL3 |= LFXT1S_2;  // 确定VLOC

        BCSCTL2 |= SELM_3 + DIVM_3;  // 选择 LFXT1CLK或者VLOCLK,8分频

        P1OUT ^= BIT0;

    __delay_cycles(1500);//延时1hz

    }

 

   }

}

推荐阅读

史海拾趣

Emerson Embedded Power公司的发展小趣事

随着全球市场的不断扩大,Emerson Embedded Power积极寻求新的增长点。通过与全球知名电子制造商的合作,该公司成功将其产品打入国际市场,并赢得了众多国际客户的信赖。此外,公司还通过并购和战略合作,进一步拓宽了业务范围,提高了市场竞争力。

富瀚(Fullhan)公司的发展小趣事
确保保护器的电源供应正常,无电压波动或断电现象。
Conxall公司的发展小趣事

Conxall公司的创始人李华,是一位在电子行业摸爬滚打多年的工程师。他深感市场上电子产品同质化严重,缺乏真正的创新。于是,他毅然决定创立Conxall公司,致力于研发具有独特功能和高性能的电子产品。李华带领团队日夜奋战,终于研发出了第一款具有自主知识产权的智能手机芯片,凭借其出色的性能和稳定性,迅速在市场上获得了认可。

CINTERION公司的发展小趣事

近年来,CINTERION与泰雷兹达成战略合作,共同推出了创新型物联网无线通信模组Cinterion MV32。这款模组结合了泰雷兹在连接管理方面的灵活性和CINTERION在无线通信模组技术上的优势,为制造商提供了快速构建和维护高性能5G设备的解决方案。这一合作不仅加强了CINTERION在物联网领域的市场地位,也为其在未来的发展中注入了新的活力。

以上五个故事均基于CINTERION在电子行业中的发展历程和成就进行描述,旨在客观呈现其在不同领域的发展轨迹和技术实力。

Daniel Woodhead公司的发展小趣事

随着公司业务的不断发展壮大,Daniel Woodhead公司开始关注社会责任和可持续发展。公司积极参与公益事业,捐赠资金和技术支持教育、环保等领域。同时,公司还注重环保和节能技术的研发与应用,努力减少生产过程中的环境污染和资源浪费。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实基础。

Cicoil公司的发展小趣事

随着公司业务的不断拓展,Cicoil开始与大型计算机制造商IBM展开合作。他们为IBM的大型计算机提供定制的扁平电缆解决方案,以其出色的性能和可靠性赢得了IBM的信任。这一合作不仅提升了Cicoil在业界的地位,也为其带来了稳定的业务增长和更广阔的发展空间。

问答坊 | AI 解惑

求教信源编码的问题

有二元平稳马氏链,已知P(0/0)=0.8,P(1/1)=0.7,求它的符号熵。进行游程编码,若“0”游样长度的截止值为16,“1”游样长度的截止值为8,求编码效率。这样的编码是否已达到最佳?为什么?…

查看全部问答>

ScanWedge 扫描后自动回车

怎么写配置文件才能自动回车? 这个文件放在Application 下, 同目录下有一个ScanWedge.reg 内容是这样的 [HKEY_CURRENT_USER\\Software\\Symbol\\ScanWedge] \"AutoEnter\"=dword:00000001 为什么不行呢,改怎么写,高手请指教…

查看全部问答>

2440为什么不执行指令?

最近在调试自己做的一块2440得板子,JTAG链接上了,能够识别出内核为ARM920T。但是就是不执行指令。 由于是硬件调试,所以目前只焊了晶振电路、电源电路、复位电路、JTAG部分、LED部分以及初始化设置跳线部分,其余的外围器件都没有连接。目前做的 ...…

查看全部问答>

键入字母a到屏幕显示a计算机做了什么操作?

键入字母a到屏幕显示a计算机做了什么操作? …

查看全部问答>

小型太阳能供电板的制作方法图解

本帖最后由 jameswangsynnex 于 2015-3-3 20:00 编辑 本刊前几期介绍了太阳能电池板及相关的小制作,引发了包括笔者在内的许多读者的兴趣。闲来无事,突发奇想,决定利用手头上的两块太阳能电池板DIY一个微型太阳能供电系统,模拟现代化太阳能电 ...…

查看全部问答>

【请教】msp430中的spi设置

对于spi进行下列设置,能够正确发送uclk和simo的波形 #include <msp430x14x.h> //unsigned char Data[6]; unsigned char flag = 0; void Init_spi(void); void main(void) { unsigned char j; WDTCTL = WDTPW + WDTHOLD; Init_spi ...…

查看全部问答>

RS232与RS485介绍及比较

RS232与RS485是两个难搞清的东西,尽管它们非常不同。 1.什么是RS-232-C接口?采用RS-232-C接口有何特点?传输电缆长度如何考虑? 答:计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯二种方式。由于串行通讯方式具有使 ...…

查看全部问答>

职场人士应如何控制情绪?

  职场中要避免不良情绪发生,控制好自己的情绪对工作前途和同事关系都会带来影响。学会控制情绪会让你变得更成熟,那么职场人士应如何控制情绪呢?一起来看看下面的介绍吧,希望对您有所帮助。   用理智控制你的情绪   如果你怒气冲冲 ...…

查看全部问答>

【MSP430趣谈】MSP430第五讲之库函数的使用

MSP430教程之五     哈哈!经过前面的四讲,不知道大家有收获没有。至少感觉自己有点入门了吧。可能大家会说为什么要写这个,那么多的书籍,也有很多的教程。我的出发点是他们大部分的都是以工程师的身份了,或者说已经从事这一块行业比 ...…

查看全部问答>