尊敬的本社区的慈善成员:
我有一个MSP430F5529LP,我计划在25MHz或更高频率下使用,所以我尝试了下面的代码,但它导致启动板以24MHz而不是25MHz运行,那么我在这里做了什么? 此外,我的频率高达40MHz,为什么TI不宣传此功能呢? 有人能给我详细解释一下超越宣传的25MHz的含义吗?
#include "driverlib.h"
void initClocks();
//所需MCLK频率
#define MCLK_FREQ_kHz 2.5万 //25MHz
//板载晶体频率(以Hz为单位)
#define XT1_FREQ 3.2768万
#define XT2_FREQ 400万
//晶体频率以Hz为单位
#define XT1_kHz XT1_kHz XT1_kHz XT1_FREQ/1000
kHz
数控振荡器/XQ_1000 kHz使用的频率(定义XT2/XQ_T频率)
//使用1 MHz (XT2/4)
#define MCLK_FLLREF_Ratio MCLK_FREQ_KHz/(XT2_KHz/4)
UINT32_t MCLK =0;
UINT32_t smclk =0;
UINT32_t aclk =0;
int main(void){
WDT_A_HOLD (WDT_A_BASE);
initClocks();
aclk=ucs_getACLK();
MCLK=UCS_getMCLK();
smclk=ucs_getSMCLK();
P1DIR || BIT0|BIT2|BIT3;//引脚1.2 和1.3
同时(1)
{
P1OUT ^= 0x04;
}
}
作废initClocks(){
//设置核心电源模式
PMM_setVCore (PMM_Core_LEVEL_3);
//为晶体配置引脚
GPIO_setAsPeripheralModuleFunctionInputPin (
GPIO端口_P5,
GPIO_PIN4+GPIO_PIN2
);
GPIO_setAsPeripheralModuleFunctionOutputPin (
GPIO端口_P5,
GPIO _PIN5+GPIO _PIN3
);
//通知系统晶体频率
UCS_setExternalClockSource(.
xt1_FREQ,// XT1频率(以Hz为单位)。
XT2_FREQ // XT2的频率(以Hz为单位)。
);
//初始化晶体
UCS_turnOnXT2(//在以前的driverlib版本中曾是UCS_XT2Start
UCS_XT2_DRIVE_4MHz_8MHZ
);
UCS_turnOnLFXT1 (//以前的driverlib版本中曾是UCS_LFXT1Start
UCS_XT1_DRIVE_0,
UCS_XCAP_3
);
UCS_initClockSignal(.
UCS_FLLREF, //频率锁定回路的参考
UCS_XT2CLK_SELECT,//选择XT2
UCS_Clock_diver_4 // FLL参考将为1 MHz (4MHz XT2/4)
);
//启动FLL并让其稳定下来
//这将自动成为MCLCK和SMCLK
UCS_INITFLLSettle(.
MCLK_FREQ_kHz,
MCLK_FLLREF_Ratio
);
//可选:将SMCLK设置为非全速
UCS_initClockSignal(.
UCS_SMCLK,
UCS_DCOCLKDIV_SELECT,
UCS_CLOCK分隔符_1
);
//设置辅助时钟
UCS_initClockSignal(.
UCS_ACLK,
UCS_XT1CLK_SELECT,
UCS_CLOCK分隔符_1
);
}
提前感谢。
谨致问候
Subhronil Chaudhuri


