具体表现:
1、使用 20M 的外部晶振,程序也能正常工作。
2、使用 24M 的外部晶振,就不能工作,经示波器测量,晶振没有起振。
3、为了去除晶振的原因,就换了一个 24M 的晶振,结果还是不行,可见应该不是晶振的问题。
4、去群里问,一个叫“碎片”的网友说,这是因为没有添加 FLASH 等待周期造成的。外部晶振大于16M 就得添加 FLASH 等待周期,虽然 20M 也能运行,但长时间运行会不稳定。
5、我按他的方法添加了 FLASH 等待周期,果然程序正常运行了,用示波器的 x10 档测量晶振,能看到很完美的正弦波。但开始用 x1 档,表笔一接触晶振引脚,程序就立即停止,考虑到是示波器的影响,就换成了 x10 档,果然能正常测量。
6、具体添加办法如下图,在STVD环境下,右击 No wait state 在弹出的菜单中,选择 1 wait state 就可以了,然后再烧录就正常了。
7、查找资料:
4.4.2 Memory access/ wait state configuration
The Flash/ data EEPROM access time allows the device to run atup to 16 MHz without wait states.
When using the high-speed external clock (HSE) at higher frequencies up to 24 MHz,one wait state is necessary. In this case the device option byte should be programmed to insert this wait state. Refer to the datasheet option byte section.
上一篇:stm8 点亮第一个LED
下一篇:IAR for STM8 右键go to definition无法跳转
推荐阅读最新更新时间:2024-03-16 16:04