器件型号:MSP432P401R
我正在将 MSP430代码转换为 MSP432、这并不容易。 在 MSP430上、MCLK 和 SMCLK 为16MHz。 我希望 MSP432上的 MCLK 为最大值、48MHz、但我希望 SMCLK 为16MHz、以便所有波特率分频器等将与我的 MSP430代码相同。 以下是应将 MCLK 设置为48MHz 的各种源代码、但到目前为止|我还没有发现必须设置 SMCLK。
while (((PCM->CTL1 & PCM_CTL1_PMR_BUSY))(); //将 Vcore 更改为1以支持48MHz
PCM->CTL0 = PCM_CTL0_KEY_VAL | PCM_CTL0_AMR_1; //正确地从当前电源状态转换到 VCORE 电平1
while (((PCM->CTL1 & PCM_CTL1_PMR_BUSY))();
MAP_GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_PJ、
GPIO_PIN3 | GPIO_PIN4、GPIO_PRIMARY_MODULE_FUNCTION); //用于外设/晶体的引脚
// map_GPIO_setAsOutputPin (GPIO_PORT_P1、GPIO_PIN0); //需要一个引脚来观察 MCLK??
cs_setExternalClockSourceFrequency (32000、48000000);
// MAP_PCM_setCoreVoltageLevel (PCM_VCORE1); // VCORE 设为1以支持48MHz 频率
MAP_FlashCtl_setWaitState (FLASH_BANK0、2); //使用较新的器件时可能需要更少的等待状态。 检查
MAP_FlashCtl_setWaitState (FLASH_BANK1、2);
CS_startHFXT (false); //在非旁路模式下启动 HFXT 而不超时。
MAP_CS_initClockSignal (CS_MCLK、CS_HFXTCLK_select、CS_clock_divider _1);//将 MCLK 初始化为 HFXT (有效48MHz)
我于1月18日从 TI 购买了 MSP432P401R lalunchpad、因此在上述代码中是否需要2个等待状态?
也是…
下面是要搜索的代码
SCB->SCR |=(SCB_SCR_SLEEPDEEP_MSK); //设置睡眠深度位
__DSB(); //确保 SLEEPDEEP 立即发生
_SLEEP();
__no_operation(); //<<在此处设置断点(如果需要进行调试)
以下是唤醒的代码:
空 Port1_IRQHandler (空)
{
IF (P1->IFG & BIT3)
{
P1->IFG &=~BIT3; // P1.3 IFG 被清零
SCB_SCR &=~SCB_SCR_SLEEPONEXIT; //从 ISR 退出时从睡眠状态唤醒
strt_hn_cycle = true; //标志 strt_hn_cycle (全局)、因此主 PGM 可以启动新的1秒周期
}
}
这些看起来不错吗? 我从中获取这些信息的来源也发生了其他事情、我很难确定适合我的事情。 我甚至无法从该代码中得知正在使用哪个 LPM ... MSP430的文档更令人困惑。 BTW、I use
NVIC->ISER[1]= 1 <<(Port1_IRQn)& 31); //启用 Port1中断
中断的中断。 我不知道这是怎么做的。
谢谢