大家好,我在设计初期的时候,用的最小核心板调试程序的。样板上有8M外部晶体。但我一直用的HSI。最终产品上因为
PCB尺寸原因,没有放置外部8M晶体。
但现在第一批样机回来后,我“惊喜”的发现,用内部HSI,时钟无法倍频到64M,PLL配置参数 RCC_PLLMul_12,正常,一旦大于等于 RCC_PLLMul_13,执行后程序就会进入 硬件故障中断 HardFault_Handler() 。
但程序之前在最小核心板上是调试通过的,然后我试着把最小核心板上的外部晶体拆掉,果然,程序也不能正常运行了。。。
那么,这就是说,如果没有外部晶体。即使我用的是HSI,那也是无法倍频至64M的。。。这他么的就尴尬了啊。。。咋办呢
求助各位大神,如果我外部不接8M晶体,难道内部HSI就无法倍频至64M吗,手册上可没说啊,要怎么解决呢?多谢多谢。。。很急。。。
感觉要坑死我的节奏了。。。再次感谢大伙帮忙看看!
像你这种情况,建议你检查2点:
1、芯片电源管脚一个个检查,不要有漏网之鱼。非常重要!
2、检查那个预取配置的代码,是不是没有正确配置。你可以在你配置时钟之前加上这几句。
/* Enable Prefetch Buffer */
FLASH->ACR |= FLASH_ACR_PRFTBE;
/* Flash 2 wait state */
FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2;
不过从你描述的情况,问题很可能在第2点。
一周热门 更多>