3492|4

74

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

请大哥看看我的始终设置的对不对啊?有程序 [复制链接]

小弟想用149系统的高速时钟,PCB上的XT2的两个管脚连接了8M的晶振, 本人的系统要工作在8M的频率下,
串口也打算用8M晶振,请大哥看看我的关于时钟的程序是否正确,多谢大哥!!

void Init_clock(void) //系统时钟的初始化函数
{ BCSCTL1=XTS; //XT2震荡器开启,工作在高频模式
BCSCTL2=(SELM1+SELS); //MCLK时钟源为XT2CLK,没有分频,SMCLK为XT2CLK,没有分频
}

最新回复

好用直接拿去用就可以了  详情 回复 发表于 2005-6-9 09:21
 
点赞 关注

回复
举报

57

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
//******************************************************************************
// MSP-FET430P140 Demo - USART0 UART 9600 Echo ISR, HF XTAL ACLK
//
// Description; Echo a received character, RX ISR used. Normal mode is LPM0,
// USART0 RX interrupt triggers TX Echo. Though not required, MCLK = LFXT1
// ACLK = MCLK = UCLK0 = LFXT1 = 3.58MHz
// Baud rate divider with 3.58Mhz XTAL @9600 = 3.58MHz/9600 = 372 (0174h)
// //*An external 3.58Mhz XTAL on XIN XOUT is required for ACLK*//
//
// MSP430F149
// -----------------
// /|\| XIN|-
// | | | 3.58MHz
// --|RST XOUT|-
// | |
// | P3.4|------------>
// | | 9600 - 8N1
// | P3.5|<------------
//
//
// M. Buccini
// Texas Instruments, Inc
// January 2002
// Built with IAR Embedded Workbench Version: 1.25A
//******************************************************************************

#include <msp430x14x.h>

void main(void)
{
unsigned int i;
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BCSCTL1 |= XTS; // ACLK = LFXT1 = HF XTAL

do
{
IFG1 &= ~OFIFG; // Clear OSCFault flag
for (i = 0xFF; i > 0; i--); // Time for flag to set
}
while ((IFG1 & OFIFG) == OFIFG); // OSCFault flag still set?

BCSCTL2 |= SELM1+SELM0; // MCLK = LFXT1 (safe)
UCTL0 = CHAR; // 8-bit character
UTCTL0 = SSEL0; // UCLK = ACLK
UBR00 = 0x74; // 3.58Mhz/9600 - 372
UBR10 = 0x01; //
UMCTL0 = 0x00; // no modulation
ME1 |= UTXE0 + URXE0; // Ena××e USART0 TXD/RXD
IE1 |= URXIE0; // Ena××e USART0 RX interrupt
P3SEL |= 0x30; // P3.4,5 = USART0 TXD/RXD
P3DIR |= 0x10; // P3.4 output direction
_EINT(); // Ena××e interrupts

for (;;)
{
_BIS_SR(CPUOFF); // Enter LPM0
_NOP(); // Required only for C-spy
}
}

interrupt[UART0RX_VECTOR] void usart0_rx (void)
{
while ((IFG1 & UTXIFG0) == 0); // USART0 TX buffer ready?
TXBUF0 = RXBUF0; // RXBUF0 to TXBUF0
}
 
 

回复

61

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
BCSCTL1=XTS; //XT2震荡器开启,工作在高频模式

这句好像没有必要吧,XTS是设置LFXT1的高频模式,跟你的没啥关系!
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

4
 
看看我的高频吧!!!!
BCSCTL1 =0;
do
{
IFG1 &=~ OFIFG;
for(i=0xFF;i>0;i++);
}
while((IFG1&OFIFG)!=0);
BCSCTL2 |= SELM1+SELS;
 
 
 

回复

58

帖子

0

TA的资源

一粒金砂(初级)

5
 
好用直接拿去用就可以了
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表