历史上的今天
今天是:2025年02月09日(星期日)
2020年02月09日 | msp430学习笔记之时钟
2020-02-09 来源:eefocus
1 相关知识
1、在MSP430单片机中一共有三个时钟源:
(1)LFXT1CLK,为低速/高速晶振源,通常接32.768kHz,也可以接(400kHz~16Mhz);
(2)XT2CLK,可选高频振荡器,外接标准高速晶振,通常是接8Mhz,也可以接(400kHz~16Mhz);
(3)DCOCLK,数控振荡器,为内部晶振,由RC震荡回路构成;
2、在MSP430单片机内部一共有三个时钟系统:

(1)ACLK,Auxiliary Clock,辅助时钟,通常由LFXT1CLK作为时钟源,可以通过软件控制更改时钟的分频系数;
(2)MCLK,Master Clock,系统主时钟单元,为系统内核提供时钟,它可以通过软件从三个时钟源选择;
(3)SMCLK,Sub-Main Clock,系统子时钟,也是可以由软件选择时钟源。
3、相关寄存器


2 代码实现
//平台为msp430f149
#include #define XT1 0x10 #define XT2 0x11 #define DELAY_COUNT 1000 //选择32k晶振频率 void select_xt1(void){ unsigned char i; do{ IFG1 &= ~OFIFG; //清除晶振失败标志 for (i = 0xFF; i > 0; i--); //等待32kHz晶体起振 }while ((IFG1 & OFIFG)); //晶振失效标志仍然存在? BCSCTL2 |= SELM_3; //MCLK = 32kHz } //选择8M晶振 void select_xt2(void){ unsigned char i; /*------选择系统主时钟为8MHz-------*/ BCSCTL1 &= ~XT2OFF; //打开XT2高频晶体振荡器 do{ IFG1 &= ~OFIFG; //清除晶振失败标志 for (i = 0xFF; i > 0; i--); //等待8MHz晶体起振 }while ((IFG1 & OFIFG)); //晶振失效标志仍然存在? BCSCTL2 |= SELM_2 + SELS +DIVM_3; //MCLK = 1MHz,SMCLK = 8MHz } void clock_config(unsigned char select_xt){ WDTCTL = WDTPW + WDTHOLD; // 停止看门狗 if(select_xt == XT1){ select_xt1(); }else if(select_xt == XT2){ select_xt2(); }else{ return ; //系统默认DCO,约800Hz } } void delay(unsigned int x){ unsigned int i,j; for(i = 0;i < x;i++) for(j = 1001;j>1;j--); } int main(){ clock_config(XT2); P2DIR = 0x80; //bit7 为输出 P2OUT = 0xff; // while(1){ P2OUT = 0x7f; //led灯亮 delay(DELAY_COUNT); P2OUT = 0xff; //led灯灭 delay(DELAY_COUNT); } return 0; }
史海拾趣
|
摘要:在所研制的新型无触点电力稳压器中,采用晶闸管作为开关器件。文中介绍该系统基本工作原理,详细分析晶闸管在使用过程中存在的一些问题及解决方法。目前流行的电力稳压器大多采用伺服电机带动炭刷移动调整电压。它具有整机效率高、输出波形好 ...… 查看全部问答> |
|
自学成才-电子工程师-找工作 General Electronics Engineer 我从小就有很强的好奇心和动手能力,想知道每一件东西是如何工作的,对自然科学非常着迷。我还记得,小学时因为在课堂上用钉子和电线做电磁铁被批评;初中因为画电路图做收音机被取笑;高中被禁止做一种能开所有教室门锁的万能钥匙。我父亲是一名中 ...… 查看全部问答> |
|
我现在使用c++在pda下需要访问sql server,使用RDA.现在有个问题就是需要实时的和sql server通讯,使用RDA速度总是有2秒左右的延时。 不知道是RDA固有的问题,还是sql server设置的问题? 在PDA上真的没有好的解决方案?不能直接连接sql server?不 ...… 查看全部问答> |
|
最近在看mma7444的资料,看到里面有俩个中断脚,init1和init2,还看到里面讲到脉冲测试,水平测试。不知道脉冲测试和水平测试指的是什么东西?还有为啥有俩个中断引脚?这俩个引脚如何使用?还有大家怎么处理x,y,z轴的校准,以及如何处理得到的数据 ...… 查看全部问答> |




