具体表现:
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.
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。