主题中讨论的其他器件:MSP432WARE
大家好、
我已经尝试使用时钟系统示例(msp432_gcc/examples/MSP432P401/msp432p401_cs/)、该示例与 MSP432的 GCC 绑定(我想尝试 HFXT)、并发现了一些严重问题。
问题在于多个字节寄存器的设置错误、例如闪存等待状态的设置(文件 msp432p401_cs.c、第112行):
FLCTL->BANK0_RDCTL = FLCTL->BANK0_RDCTL 和~(FLCTL_BANK0_RDCTL_WAIT_MASK | FLCTL_BANK0_RDCTL_WAIT_2);
我想、这个想法是将属于 wail 状态的位清零、然后设置2个等待状态、但方括号是错误的。
在文件 msp432p401_cs.c 的第112、113和127行中、可以发现三次完全相同的错误(第一个尝试设置闪存等待状态、第三个尝试从 HFXT 获取 MCLK):
/*步骤2:将闪存等待状态配置为2 (对于组0和组1)*/ FLCTL->BANK0_RDCTL = FLCTL->BANK0_RDCTL &~(FLCTL_BANK0_RDCTL_WAIT_MASK | FLCTL_BANK0_RDCTL_WAIT_2);//行112 FLCTL->BANK1_RDCTL = FLCTL->BANK0_RDCTL 和~(FLCTL_BANK1_RDCTL_WAITL_MASK | FLCTL_BANK1_RDCTL_WAIT_2);//行113 //... /*选择 MCLK & HSMCLK = HFXT、无分频器*/ CS->CTL1 = CS->CTL1 &(~(CS_CTL1_SELM_MASK | CS_CTL1_DIVM_MASK | CS_CTL1_SELS_MASK | CS_CTL1_DIVHS_MASK)| CS_CTL1_SELM_HFXTCLK | CS_CTL1_SELSELESS_HFXTCLK 线路);127 /线路
由于必须设置的寄存器部分被复位为零、这可通过以下方式进行修复:
/*步骤2:将闪存等待状态配置为2 (对于组0和组1)*/ FLCTL->BANK0_RDCTL |= FLCTL_BANK0_RDCTL_WAIT_2;//行112 FLCTL->BANK1_RDCTL |= FLCTL_BANK1_RDCTL_WAIT_2;//第113行 //... /*选择 MCLK & HSMCLK = HFXT、无分频器*/ CS->CTL1 |= CS_CTL1_SELM__HFXTCLK | CS_CTL1_SELS_HFXTCLK;//第127行
因此、一切都应该正常。
TI 没有违法行为、但实际上是否有人对此进行了测试? 文件中进一步向下的代码行甚至通过 P4.4暴露 MCLK、如果有人连接了示波器、则错误应该已经变得明显。
请修复该上游、
Dan