msp430F5438A 24M外部晶振震荡幅度很小 [复制链接]
1芯积分
此帖出自微控制器 MCU论坛
最新回复
你的PMM电源管理寄存器什么样?
/*
功能说明:
P1.6(23号脚)输出25M
P1.2(19号脚)输出5K占空比25%的方波
P1.3(20号脚)输出5K占空比75%的方波
*/
#include "msp430x54xA.h"
#define FRE 5000
#define PERIOD 25000000/FRE
#define DUTY0 PERIOD*0.25
#define DUTY1 PERIOD*0.75
void clock_init();
void io_init();
void timer_init();
void clock_init()
{
PMMCTL0 = PMMPW + PMMCOREV_3;
SVSMHCTL = SVSHRVL_3 + SVSMHRRL_3;
P5SEL |= BIT2 + BIT3; //打开5.2 5.3的第二功能
UCSCTL6 &= ~XT2OFF; //开启XT2 8M晶振
UCSCTL3 |= SELREF_2; //fll == refo clk
UCSCTL4 |= SELA_2; //aclk == refo clk
do //解除失败标志位
{
UCSCTL7 &= ~(XT2OFFG + XT1LFOFFG + XT1HFOFFG + DCOFFG);
SFRIFG1 &= ~OFIFG;
}
while (SFRIFG1&OFIFG);
UCSCTL6 |= XT2DRIVE_1; //根据晶振来匹配
UCSCTL4 = SELS__XT2CLK + SELM__XT2CLK; //选择SMCLK和MCLK
}
void io_init()
{
P1DIR |= BIT2+BIT3+BIT6;
P1SEL |= BIT2+BIT3+BIT6;
}
void timer_init()
{
TA0CTL = TASSEL1 + TACLR;
TA0CCR0 = PERIOD-1;
TA0CCTL1 = OUTMOD_7;
TA0CCR1 = DUTY0-1;
TA0CCTL2 = OUTMOD_7;
TA0CCR2 = DUTY1-1;
TA0CTL |= MC_1;
}
//延时函数
void dealy600ms() //延时函数
{
unsigned char m,n;
for(m=0;m
详情
回复
发表于 2013-5-1 10:29
| ||
|
||
| |
|
|
| |
个人签名《MCU工程师炼成记》作者之一
|
|
此帖出自微控制器 MCU论坛
| ||
|
||
曾经的版主且威望大于2000,或对EEWORLD论坛有突出贡献的坛友
EEWorld Datasheet 技术支持