msp430f5529学习笔记(2)时钟系统

写在前~本章将会详细的讲解msp430f5529单片机的时钟系统及其使用方法。如有不妥的地方欢迎各位大佬斧正!!!


目录

什么是时钟系统和时钟源

MSP430f5529时钟源和时钟系统介绍

产生时钟信号的时钟源:

时钟配置


什么是时钟系统和时钟源

       在单片机中,单片机每开始一个周期的工作就需要一个节拍来告诉它,这就相当于我们的心脏每跳动一次,血液被泵到身体各处一次一样。那么单片机的时钟就是单片机工作所需要的节拍,单片机的取指令、译指令等工作都需要以这样的时钟周期为最小周期。

       而实际上这样一个时钟就是一个方波信号,在每一个上升沿或者下降沿会迫使单片机工作一次。产生这样有规律的方波信号的源头就叫做时钟源(振荡器),因此单片机工作的快慢就和这个时钟源的频率有关系,频率越高,单片机完成一次工作的时间就越短,频率越低,单片机完成一次工作的时间就越长。但并不意味着可以无脑的选择最高频率,对很多不需要大量处理,只是控制的情况,为了增加可靠性,降低编程难度,降低功耗,往往选用低频的的时钟源,单片机是数字逻辑电路,频率越高,逻辑门变化越快,运算速度越快,功耗就会增大。(这里消耗电量最大的是逻辑门的通断)因此要根据用户手册和实际情况去选择合适的时钟源。

MSP430f5529时钟源和时钟系统介绍

       MSP430f5529 以低功耗为主推功能,其实现低功耗一方面就是动态的去配置相应的时钟以降低功耗,通过UCS单元产生三路信号:

MCLK(Master clock主时钟,供CPU使用。MCLK配置的越高,cpu的执行速度就越快,功耗就越高。注意:一旦关闭MCLK,CPU也将停止工作。因此在超低功耗系统中可以通过间歇启用MCLK的方法降低系统功耗。MCLK也可经分频后给CPU使用。

SMCLK (Subsystem master clock)子系统时钟,供高速外设使用。

ACLK( Auxiliary clock 辅助时钟,供低速外设使用。

       通过这样的设计,不同的部分就可以根据自己的时钟来工作,不需要的时候可以将空闲的时钟源关闭,进入低功耗模式。根据时钟不同程度上的关闭,分为7种低功耗模式。

        三个时钟相互独立,关闭任何一种时钟不影响其余时钟工作。可通过对三种时钟不同的关闭方式来实现不同的休眠模式(即当关闭某时钟后其相应的外设也将停止工作)。

产生时钟信号的时钟源:

  1. XT1CLK 外部低频率或高频率振荡源,32.768Khz(LF模式)或4-32Mhz(HF模式);
  2. XT2CLK 外部高频振荡源,4-32Mhz;
  3. VLOCLK 内部低耗低频振荡源,典型为10KHZ,精度一般;
  4. REFOCLK 内部低频参照源,典型值32.768KHZ,常被用作锁相环FLL的基准频率,精度很高,不使用时不消耗电源,其设置往往要参考LPM模式的的设置;
  5. DCOCLK内部数字控制振荡源,通过内部FLL单元稳定而来,并不算是一个通过振荡产生时钟的源。

       当我们给板子上电时,ACLK =REFOCLK = 32.768Khz;FLLREFCLK = REFOCLK = 32.768K;DCOCLK默认为2.097152MHZ,FLL默认2分频,所以MCLK和SMCLK的频率都为1.048576MHZ。

        MSP430f5529 开发板支持将系统时钟在引脚上复用输出,MCLK输出复用P7.7脚,SMCLK输出复用P2.2脚,ACLK复用P1.0脚,实验板上只引出P1.0和P2.2,而P7.7未被引出。这样方便了我们通过测量的方式去检测时钟系统的配置情况。

时钟配置

接下来我们通过代码来配置这三个时钟:

 #include <msp430.h> 

 void main(void)
 {
     WDTCTL = WDTPW | WDTHOLD;   // 关闭看门狗
     P1DIR |= BIT0;              //P1.0配置为输出
     P1SEL |= BIT0;              //P1.0输出ACLK
     P2DIR |= BIT2;              //P2.2配置为输出
     P2SEL |= BIT2;              //P2.2输出SMCLK
     while(1);
 }

运行上面的代码,可在P1.0和P2.2引脚通过示波器检测到子系统时钟和辅助系统时钟的频率。

UCSCTL4 |= SELA_1;          //配置ACLK = VCOCLK =9.21Khz
UCSCTL4 |= SELA_2;          //配置ACLK = REFOCLK = 32.86Khz
UCSCTL4 |= SELA_3;          //配置ACLK = DCOCLK = 2.11Mhz
UCSCTL4 |= SELA_4;          //配置ACLK = DCOCLKDIV = 1.06Mhz

使用以上代码可配置内部时钟源。

       修改时钟源,配置ACLK = 32.768Khz,MCLK = SMCLK = DCOCLKDIV=1.05M;

#include <msp430.h>

void main(void)
{
    WDTCTL = WDTPW | WDTHOLD;   // 关闭看门狗
    P1DIR |= BIT0;              //配置P1.0为输出
    P1SEL |= BIT0;              //P1.0输出ACLK
    P2DIR |= BIT2;              // 配置P2.2为输出
    P2SEL |= BIT2;              //P2.2输出SMCLK

    P5SEL   |= BIT4+BIT5;       //P5.4和P5.5选择XT1晶振功能
    UCSCTL3 |= SELREF_0;        //设置FLL参考时钟源为XT1
    do
    {
       UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + DCOFFG);
                                //清除XT2,XT1,DCO故障失效标志位
       SFRIFG1 &= ~OFIFG;       //清除晶振故障失效中断标志位
    }while(SFRIFG1&OFIFG);      //晶振故障失效中断标志位
    UCSCTL6 &= ~XT1DRIVE_0;     //减少XT1驱动能力
    UCSCTL4 |= SELA_0;          //ACLK = XT1CLK

    while(1);
}

使用以上代码可配置外部中断源。


  • 9
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 很高兴听到您正在学习msp430f5529 driverlib库函数。这个库函数是用于MSP430F5529微控制器的,它提供了许多方便的函数来帮助您编写代码。以下是一些学习笔记: 1. 首先,您需要了解MSP430F5529微控制器的基本知识,例如它的架构、寄存器、时钟等等。这将有助于您更好地理解库函数的使用。 2. 接下来,您可以查看driverlib库函数的文档,以了解每个函数的功能、参数和返回值。这将有助于您选择正确的函数来完成您的任务。 3. 在使用库函数之前,您需要包含相应的头文件。例如,如果您要使用GPIO函数,则需要包含gpio.h头文件。 4. 您可以使用Code Composer Studio等IDE来编写代码,并使用driverlib库函数来完成您的任务。在编写代码时,您可以使用库函数的示例代码作为参考。 5. 最后,您可以使用调试器来调试您的代码,并查看库函数的执行情况。这将有助于您更好地理解库函数的使用。 希望这些笔记对您有所帮助,祝您学习愉快! ### 回答2: MSP430F5529是德州仪器公司推出的一款低功耗微控制器。为了便于开发者控制芯片的各个模块,德州仪器提供了一套库函数集合——driverlib,让开发者更加轻松地进行开发工作。 在学习driverlib库函数时,开发者首先需要了解其所包含的功能模块。其中包括时钟、看门狗、ADC、UART、SPI、I2C、DMA等模块。接下来,开发者可以根据需要,按照一定的操作流程,调用对应的库函数实现所需功能。 以ADC模块为例,开发者可以通过以下步骤进行配置和使用: 1.配置ADCMCTLx寄存器:设置参考电压、采样时钟源和输入通道等参数。 2.配置ADC14CTL0寄存器:设置转换模式、采样序列长度、启用/禁用中断等参数。 3.配置ADC14CTL1寄存器:使能ADC、设置转换时钟源等参数。 4.配置ADC14INCHx寄存器:选择输入通道。 5.调用ADC14_enableConversion()函数使能转换。 6.等待转换完成并调用ADC14_getResult()函数获取结果。 通过以上步骤,开发者可以轻松地实现MSP430F5529的ADC模块读取功能。 除此之外,driverlib库函数还提供了丰富的例程和注释,使得开发者能够更好地理解每个函数的作用和用法。 总之,学习driverlib库函数是MSP430F5529开发工作的必要之一。只有深入了解库函数的功能和使用方法,开发者才能更高效地完成开发工作,并为产品的性能提升和功耗优化做出贡献。 ### 回答3: 1.概述 MSP430F5529是TI公司推出的一款微控制器。MSP430F5529内置了16位CPU、16位寄存器、12位ADC、双DAC、多种时钟、计数器、UART、SPI、I2C、USB等多种外设。为了方便开发,TI公司提供了driverlib库函数。本篇笔记主要介绍MSP430F5529的driverlib库函数的使用方法。 2.使用方法 2.1 前置工作 在使用driverlib库函数之前,需要先安装MSP430F5529 LaunchPad开发板和MSP430F5529 microcontroller的相关软件和驱动程序。安装完成后,需要使用Code Composer Studio等IDE来编写工程并使用driverlib库函数。 2.2 库函数调用 函数库文件libdriver.a是包含所有driverlib库函数的库文件,在代码中需要添加链接该库。在Code Composer Studio中的Project属性中添加对libdriver.a的链接即可。 使用driverlib库函数的方法如下: #include <msp430.h> #include <driverlib.h> 初始化时钟: // Set the DCO to 16MHz CS_setDCOFrequency(16000000); 启用ADC: // Enable the ADC ADC14_enableModule(); 设置ADC采样和转换: // Set the ADC conversion clock and sample time ADC14_initModule(ADC_CLOCKSOURCE_SMCLK, ADC_PREDIVIDER_1, ADC_DIVIDER_1, ADC_NOROUTE); 设置ADC输入通道: // Configure channel A0 for analog input ADC14_configureSingleSampleMode(ADC_MEM0, true); ADC14_configureConversionMemory(ADC_MEM0, ADC_VREFPOS_AVCC_VREFNEG_VSS, ADC_INPUT_A0, false); 启用ADC采样完成中断: // Enable ADC interrupt ADC14_enableInterrupt(ADC_MEM0); // Enable ADC interrupt in NVIC NVIC_EnableIRQ(ADC14_IRQn); 启动ADC采样: // Start sampling ADC14_enableConversion(); ADC14_toggleConversionTrigger(); 3.总结 通过上述代码,我们可以看出,在使用driverlib库函数时,只需使用简单的函数调用即可完成大部分工作,极大地提高了工程的开发效率。同时,driverlib库函数提供了丰富的功能,包括ADC、DAC、UART、SPI、I2C、GPIO等多种外设的驱动,大大简化了开发过程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值