请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430F5329 22118400是 UART 的一个非常方便的数字
它恰好是 REFO 频率的675倍32768Hz。
当我尝试从 driverlib 中使用 UCS 例程时,我得到 22085632 Hz,它与我所需的频率完全是32768 Hz,根据 UCS _getMCLK ();
因此、我的第一个想法是将分频值从675更改为676、这使其恰好偏离-32768 Hz。 我认为调制器应该解决这种问题。
14745600 Hz 似乎正常工作、它恰好是32768的450倍。
它感觉不正确。 我是在这里遗漏了什么东西还是做了一些错误的事情? 或者实用程序中是否存在一些舍入错误?
以下是我的代码:
void CLK_InitFast (void) { uint16_t status; //我认为一切完成后、时钟为: // ACLK = 32768Hz 使用 REFO // MCLK = 14、745、600Hz 来自 REFO // SMCLK = 7、372800 Hz 来自 REFO //设置 DCO FLL 基准= REFO //关闭任何外部晶振 if (PMM_GET_CORE_LEVEL ()< 3) { 状态= PMM_setVCore (PMM_CORE_LEVEL_3); if (status = STATUS_FAIL) while (1);//我们有问题。 调试时,在此处停止 。} PMM_enableSvsHSvmH ();//在此模式下,我们有高侧,所以打开。 PMM_enableSvsLSvmL ();//我们需要在此模式中启用低侧。 PMM_enableSvsLReset ();//我们永远不会看到低电压事件 UCS_TurnOffXT1 ();//确保外部32.768kHz 晶体关闭 UCS_TurnOffXT2 ();//确保外部14.7456MHz 晶体关闭 _BIC_SR (SCG0);//确保 FLL 打开。 UCS_initClockSignal (UCS_FLLREF、 UCS_REFOCLK_SELECT、 UCS 时钟分频器1); //设置 ACLK = REFO UCS_initClockSignal (UCS_ACLK、 UCS_REFOCLK_SELECT、 UCS 时钟分频器1); UCS_initClockSignal (UCS_SMCLK、 UCS_DCOCLKDIV_SELECT、 UCS 时钟分频器2); //UCS_initFLSettle (14745、// kHz // 450);// 14745.6/32.768 = 450 --获得14745600 Hz UCS_initFLSettle (22118、// kHz 675);// 22118.4/32.768 = 675 --获得22085632 Hz //验证时钟设置是否为预期 的时钟值[0]= UCS_getMCLK (); 时钟值[1]= UCS_getSMCLK (); 时钟值[2]= UCS_getACLK (); return; }