请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP432P401R 工具/软件:TI C/C++编译器
我正在尝试使用 MAP_CS_initClockSignal (CS_MCLK、CS_HFXTCLK_select、CS_Clock_divider 1)将 MCLK 设置为48MHz;
但 MCLK 仅保持在32768Hz。 以下是我的代码:
#include "msp.h"
#include
#include
#include
#include
#include
Timer_A_PWMConfig pwmConfig ={
Timer_A_CLOCKSOURCE_SMCLK、//选择 SMCLK 作为时钟源
Timer_A_CLOCKSOURCE_DEVIDER_1、//分频器为1
10、//周期为32000个周期、实际周期为32000/CLK 频率
Timer_A_CAPTURECOMPARE 寄存器_1、
Timer_A_OUTPUTMODE_RESET_SET、
5 //占空比
};
uint32_t freqMCLK、freqSMCLK;
void main (void)
{
/*停止看门狗*/
MAP_WDT_A_HOLDTimer();
//MAP_PCM_setPowerState (PCM_AM_LDO_VCORE1);
cs_setExternalClockSourceFrequency (32000、48000000);//将 LFXTCLK 设置为32KHz 并将 HFXTCLK 设置为48MHz
/*我们必须将 VCORE 更改为1以支持48MHz 频率*/
MAP_PCM_setPowerState (PCM_AM_LDO_VCORE1);//工作模式、低压降、VCORE0;请参阅数据表第353页的表7-1
MAP_CS_initClockSignal (CS_MCLK、CS_HFXTCLK_select、CS_Clock_divider _1);//将 MCLK 设置为48MHz
freqMCLK = CS_getMCLK ();
MAP_CS_initClockSignal (CS_SMCLK、CS_MODOSC_SELECT、CS_Clock_divider _1);//将 SMCLK 设置为24MHz
freqSMCLK = CS_getSMCLK ();
/*将 GPIO2.4配置为 PWM 的外设输出、将 P6.7配置为按钮中断*/
MAP_GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P2、GPIO_PIN4、GPIO_PRIMARY_MODULE_Function);
MAP_GPIO_setAsInputPinWithPullUpResistor (GPIO_PORT_P1、GPIO_PIN1);
MAP_GPIO_clearInterruptFlag (GPIO_PORT_P1、GPIO_PIN1);MAP_GPIO_enableInterrupt (GPIO_PORT_P1、GPIO_PIN1);
/*将 Timer_A 配置为具有大约500ms 的周期和
*初始占空比为其10%(3200个节拍)*/
MAP_Timer_A_generatePWM (TIMER_A0_BASE、&pwmConfig);
while (1){
}
}
在 调用 CS_setExternalClockSourceFrequency (32000、48000000)之前、我还尝试调用 MAP_PCM_setPowerState (PCM_AM_LDO_VCORE1)、但仍然失败(仍为32768)。
我验证 了 MAP_CS_initClockSignal 函 数是否正常工作、因为如果我将 CS_HFXTCLK_select 更改为 sth、我可以获得正确的值。