历史上的今天
返回首页

历史上的今天

今天是:2025年06月22日(星期日)

2021年06月22日 | MSP430F5438单片机时钟设置实验程序

2021-06-22 来源:eefocus

//================================================================//

// //

// 文件: MAIN.C //

// 说明: MSP430F5438开发板单片机时钟设置实验程序 //

// 设置单片机时钟为外部高频晶振或外部低频晶振+DCO, //

// 并将辅助时钟、主时钟和子主时钟通过IO引脚输出, //

// 可通过插针将信号引出并用示波器观察。 //

// //

// MSP430F5438 //

// ----------------- //

// /|| XIN|- //

// | | | XTAL1 = 32.768k //

// --|RST XOUT|- //

// | | //

// | XT2IN|- //

// | | XTAL2 = 16Mhz //

// |RST XT2OUT|- //

// | | //

// | P11.0|-->ACLK //

// | P11.1|-->MCLK //

// | P11.2|-->SMCLK //

// //

// 编译: CCS5.2 //

// 日期: 2013.08.08 //

// //

//==============================================================//

#include "msp430x54x.h"

#include

#include

#include "PIN_DEF.H"

// 主时钟设置选项,可选择内部DCO或外部高频晶振二者之一

#define INTERNAL_HF_OSC // 内部DCO时钟

//#define EXTERNAL_HF_OSC // 外部高频时钟

#ifdef INTERNAL_HF_OSC

#define INTERNAL_HF_OSC

#endif

#ifdef EXTERNAL_HF_OSC

#define EXTERNAL_HF_OSC

#endif

#define FLL_FACTOR 549 // FLL_FACTOR: DCO倍频系数

//***************************************************************************//

// //

// 初始化主时钟: MCLK = XT2 //

// //

//***************************************************************************//

#ifdef EXTERNAL_HF_OSC

void Init_CLK(void)

{

WDTCTL = WDTPW + WDTHOLD ; // 关看门狗

P5SEL |= 0x0C ; // 端口功能选择振荡器

UCSCTL6 &= ~XT2OFF ; // 振荡器使能

UCSCTL3 |= SELREF_2 ; // FLLref = REFO

UCSCTL4 |= SELA_2 ; // ACLK=REFO,SMCLK=DCO,MCLK=DCO

do

{

UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG) ; // 清除 XT2,XT1,DCO 错误标志

SFRIFG1 &= ~OFIFG ;

}while(SFRIFG1&OFIFG) ; // 检测振荡器错误标志

UCSCTL6 |= XT2DRIVE0 + XT2DRIVE1 ; // XT2 驱动模式 24~32MHz

UCSCTL4 |= SELS_5 + SELM_5 ; // SMCLK = MCLK = XT2

}

#endif

//***************************************************************************//

// //

// 初始化主时钟: MCLK = XT1×(FLL_FACTOR+1) //

// //

//***************************************************************************//

#ifdef INTERNAL_HF_OSC

void Init_CLK(void)

{

WDTCTL = WDTPW + WDTHOLD ; // 关看门狗

P7SEL |= 0x03 ; // 端口选择外部低频晶振XT1

UCSCTL6 &=~XT1OFF ; // 使能外部晶振

UCSCTL6 |= XCAP_3 ; // 设置内部负载电容

UCSCTL3 |= SELREF_2 ; // DCOref = REFO

UCSCTL4 |= SELA_0 ; // ACLK = XT1

__bis_SR_register(SCG0) ; // 关闭FLL控制回路

UCSCTL0 = 0x0000 ; // 设置DCOx, MODx

UCSCTL1 = DCORSEL_7 ; // 设置DCO振荡范围

UCSCTL2 = FLLD__1 + FLL_FACTOR ; // Fdco = ( FLL_FACTOR + 1)×FLLRef = (549 + 1) * 32768 = 18.0224MHz

__bic_SR_register(SCG0) ; // 打开FLL控制回路

__delay_cycles(1024000) ;

do

{

UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG) ; // 清除 XT2,XT1,DCO 错误标志

SFRIFG1 &= ~OFIFG ;

}while(SFRIFG1&OFIFG) ; // 检测振荡器错误标志

}

#endif

//***************************************************************************//

// //

// 主程序: 设置时钟并输出至P11.0~2 //

// //

//***************************************************************************//

int main( void )

{

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

Init_CLK() ;

P11DS = TACK + TMCK + TSMCK ; // 选择驱动强度

P11SEL = TACK + TMCK + TSMCK ; // 选择引脚功能,ACK、MCK、SMCK输出至P11.0/1/2

P11DIR = TACK + TMCK + TSMCK ; // 设置引脚IO方向为输出

MAIN_POWER_ON ; // 点亮VCC指示灯,指示时钟初始化成功,无其它意义

while(1) ;

}

// end of file


推荐阅读

史海拾趣

Grande Electronics Ltd公司的发展小趣事
如二极管损坏、老化或光强减弱,导致无法发射红外光或发射的红外光强度不足。
General Electronic Devices公司的发展小趣事
提供稳定的直流电压。
Alpha & Omega Semiconductor(万国半导体)公司的发展小趣事
负责产生控制信号,驱动开关元件按一定频率和占空比工作。
ASI [ASI Semiconductor, Inc]公司的发展小趣事

随着电子行业的快速发展,许多电子产品型号逐渐停产或变得稀缺。ASI敏锐地捕捉到了这一市场变化,并开始专注于生产停产及稀缺元器件的替代或新设计。其RF功率晶体管生产线主要提供Motorola、Philips及SGS Thomson公司的替代型号,而微波二极管生产线则主要提供HP、M/A-COM、Alpha及Loral/Frequency sources公司的替代型号。这一策略不仅满足了市场的需求,还进一步巩固了ASI在行业中的地位。

集创北方(CHIPONE)公司的发展小趣事

近年来,集创北方在电子行业的地位日益稳固。从2019年到2021年,公司的营收实现了飞跃式增长,从14.47亿元增长至56.74亿元,复合增长率高达98%。这一成绩的背后,是公司不断创新、积极应对市场变化的结果。

HEICO Corporation公司的发展小趣事

HEICO Corporation在电子技术领域的成功离不开其对技术创新的重视。公司不断推出新产品,如大功率电容器充电电源、行波管放大器、光电探测器等,这些产品以其卓越的性能和可靠性赢得了市场的广泛认可。同时,HEICO还致力于提升生产效率和产品质量,通过引入先进的生产设备和工艺,确保产品能够按时交付并满足客户的严格要求。这种技术创新和品质保证的策略,使得HEICO在电子行业中保持了领先地位。

问答坊 | AI 解惑

关于protues资料

想学的人就下下学仿真很好用的…

查看全部问答>

字符结构知识在车牌识别中的应用

汽车牌照识别是基于图像分割和图像识别理论,对含有汽车牌照的图像进行分析处理,从而确定汽车牌照在图像中的位置,并进一步提取和识别出文本字符。从不同车牌图像中分割出的字符图像各式各样,尺寸变化范围大,增加了识别的难度。尽管可以采用图像 ...…

查看全部问答>

旧电脑的电源用于LED驱动

现在很多旧的电脑电源都浪费了,其实用于驱动LED灯比较好。 但是如果直接用限流电阻的话,效率较低。由于电脑电源是开关电源,它先把220V 交流电整流变换成频率较高的振荡,然后整流成5V、 12V等,可在5V 、12V的次级线圈上,整流管之前引出高频的 ...…

查看全部问答>

网页中打开一个exe程序

   在window mobile中,在js做的一个网页中,怎样去链接一个.exe程序,     有谁知道的,帮帮忙,     谢谢,急。    …

查看全部问答>

一个傻问题,我是新手

我想问一下,烧写flash时的地址是谁确定的,我个人认为是bootloader确定的,可是如果修改该怎么修改呢?…

查看全部问答>

BSP的定制问题。怎么做自己需要的NK啊

我的开发板有做好的BSP包,我想屏蔽去掉一些驱动,写上自己的驱动,然后烧到板子里去,怎么做自己的镜像呢? 新手,求指教!!!! 我的驱动也写好了,屏蔽原有的驱动是不是直接删掉DRIVERS下的驱动文件就可以了呢???…

查看全部问答>

大家好,请问这里有过英蓓公司 EDUKIT-III ARM 开发箱子吗?加我QQ 请教、交流,学习,

大家好,请问这里有过英蓓公司 EDUKIT-III ARM 开发箱子吗?加我QQ 请教、交流,学习,…

查看全部问答>

如果OLED没有12V,大家量一下Q1(MOSFET)管的各脚电压

    如果OLED没有12V,大家量一下Q1(MOSFET)管的各脚电压。     这样好判断原因。…

查看全部问答>

TIMERB的应用!!急!!!

我想用定时器b来做iar里面定时器a的演示程序功能。但是我把程序改好之后,一直不能正常运行,从右面的disassem××y窗口里面看不到数据。请问为何。程序那里有错?谢谢大侠!!! #include <msp430x14x.h> void main(void) { P1DIR |= 0x0 ...…

查看全部问答>

还是没有搞懂仿真器的作用。哪位朋友来讲解下。

我从来没有用过仿真器,真不会用。 iar环境加lanuchpad自带的仿真器。 哪位朋友可以举个小例子,一步一步查看变量的值吗? 或者,仿真器可以查到每个端口的状态吗? 有图文教程就好了,太笨了。…

查看全部问答>