打印
[MCU]

msp430时钟设置问题

[复制链接]
653|27
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shimx|  楼主 | 2019-10-27 13:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
jiaxw| | 2019-10-27 13:35 | 只看该作者

MCLK不选择的话,默认是DCO
应该是800Khz左右
BCSCTL2 |= SELM1+SELM0; //选ACLK做系统时钟
下面这个程序是如何选择不同的时钟源典型例子:
//MSP430F14时钟模块操作
/*************************************************************************/
//以下是结合MC430F14开发板来实验的时基应用例程,程序运行后可用示波器观察各时钟源输出.
//F14系列的时钟源为三个:
//LFXT1(XT1): 低速,频率精确,功耗低
//XT2:高速,频率精确.通讯应用于高速的处理.但带来的相对功耗较大.
//DCO:高速,频率不稳定.频率与芯片的温度,电压等因素有关.且容易漂移.但功耗低.
/*************************************************************************/
#include <msp430x14x.h>
void main(void)
{unsigned char i;
WDTCTL = WDTPW + WDTHOLD;    //先关闭看门狗,对单片机初始化.
//时基模块的时钟设置
//单片机上电时,MCLK主时钟的源默认选择为DCO提供.F1系列DCO默认800KHZ.
//ACLK辅助时钟默认为XT1,XT1一般接32768HZ晶体.
//SMCLK子时钟默认为DCO,同样是800KHZ.
//XT2需要人为开启,并要检测其开启是否成功.
BCSCTL1 &= ~(XT2OFF + XTS);   //启动XT2高速时钟模块
BCSCTL2 |= SELM1;            //MCLK主时钟选XT2为时钟源.TX2输入不分频.
BCSCTL2 &= ~SELS;            //SMCLK选为DCO为时钟源.(参考)
  
//刚才开启了XT2,需要一定时间XT2才进入稳定状态.所以需要等待并检测稳定状态.
//通常采用do...for语法,这是TI推荐的程序写法
do
{
  IFG1 &=~OFIFG;              //清OSCFault 标志
  for(i=0xff;i>0;i--)         //延时等待其开启稳定
    ;
}
while((IFG1 & OFIFG) !=0);   //检查OSCFault标志位是否为0,若为0则表示XT2开启稳定.
                              //否则一直等下去...
  
//-----------------------------------------------
//以下我们来检测各个时钟信号的输出.
//在MSP430单片机中,大部的IO是有复用功能.而基础模块的时钟就可以通过IO设置使其输出.
P1DIR |= BIT4;               //P1.4 IO口设置为输出.
P1SEL  |= BIT4;               //P1.4 IO口设置为SMCLK.
  
P2DIR |= BIT0;               //P2.0 IO口设置为输出.
P2SEL |= BIT0;               //P1.4 IO口设置为ACLK.
  
P5DIR |= BIT4;               //P5.4 IO口设置为输出.
P5SEL |= BIT4;               //P5.4 IO口设置为ACLK.
  
//-----------------------------------------------
//同样,内部其它模块也选择不同的时钟.可以在相关模块的控制寄存器中设置.例如:
//定时器A 选用SMCLK子系统时钟=DCO=~800KHZ,当然也可以选择其它时钟源.
TACTL = TASSEL1 + TACLR ;    //注意转换其它时钟源的同时要清定时器内容.
//.......
  
//USART选用ACLK=XT1-32khz
UTCTL1 = SSEL0;              //串口模块的时钟源选择为ACLK=32768HZ,
                              
//当前程序的MCLK主时钟为TX2=8MHZ
while(1);
}

使用特权

评论回复
板凳
spark周| | 2019-10-27 13:38 | 只看该作者

使用特权

评论回复
地板
liliang9554| | 2019-10-27 13:41 | 只看该作者
这个我也不太懂我也是才学习啊   我很纠结XT2有打开位  为什么其他时钟源没有呢  他们是怎么打开的吗  还是有默认的  

使用特权

评论回复
5
liliang9554| | 2019-10-27 13:44 | 只看该作者
我用示波器测ACLK的输出时如果将其设置成XT2结果没有输出  什么都不设置结果有输出  我的开发板上有一个12兆hz的晶振是干嘛的啊

使用特权

评论回复
6
liliang9554| | 2019-10-27 13:47 | 只看该作者
不是XT2 是LFXT1的高频

使用特权

评论回复
7
heweibig| | 2019-10-27 13:50 | 只看该作者
统一设置为一个时钟就可以。

使用特权

评论回复
8
heweibig| | 2019-10-27 13:52 | 只看该作者
在MSP430单片机中,一个时钟周期 = MCLK晶振的倒数。如果MCLK是8MHz,则一个时钟周期为1/8us。

使用特权

评论回复
9
jiahy| | 2019-10-27 13:55 | 只看该作者

MSP430单片机的时钟模块主要包括:
    三个时钟:辅助时钟ACLK 、主时钟MCLK 、子系统时钟SMCLK
三个振荡器:低频时钟源LFXT1 、高频时钟源XT2 、数字控制RC振荡器DCO

使用特权

评论回复
10
lizye| | 2019-10-27 13:57 | 只看该作者
MSP430单片机中一共有三个或四个时钟源

使用特权

评论回复
11
jiaxw| | 2019-10-27 14:01 | 只看该作者
CPU运行在VLO时钟下:这是最慢的时钟,在约12千赫兹下运行。

使用特权

评论回复
12
spark周| | 2019-10-27 14:03 | 只看该作者
不选择的话,默认是DCO BCSCTL1 &=0xc0说明LFXTCLK工作在高频模式,比32768高。

使用特权

评论回复
13
liliang9554| | 2019-10-27 14:08 | 只看该作者
在MSP430中时钟源有低频振荡器,高频振荡器和数控振荡器

使用特权

评论回复
14
午夜粪车| | 2019-10-27 14:15 | 只看该作者
MCLK与SMCLK的时钟信号全部来自DCO,约为800KHz

使用特权

评论回复
15
zhaoxqi| | 2019-10-27 14:18 | 只看该作者
MSP430单片机工作的系统时钟被分为了 MCLK、 SMCLK 和 ACLK 三个

使用特权

评论回复
16
jiajs| | 2019-10-27 14:21 | 只看该作者
我的代码使用时钟之后就不会再改了。

使用特权

评论回复
17
zhanghqi| | 2019-10-27 14:24 | 只看该作者
一个指令周期 = 1~6个机器周期,具体根据具体指令而定。

使用特权

评论回复
18
zhenykun| | 2019-10-27 14:28 | 只看该作者
MSP430单片机工作所需时钟就是由这些振荡器振荡后经处理产生的。

使用特权

评论回复
19
wyjie| | 2019-10-27 14:31 | 只看该作者
系统主时钟单元,为系统内核提供时钟

使用特权

评论回复
20
jlyuan| | 2019-10-27 14:35 | 只看该作者
可以运行DCO约在1MHz(这也是默认速度)。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

857

主题

10661

帖子

5

粉丝