我正在编写一个简单的游戏,并尝试在 MSP430F5529 微 Controller 上测试它。我遇到的问题与看门狗定时器有关。
我编写的代码会导致设备重置,这表明看门狗计时器出现问题。我认为我什至需要在主代码的第一行(某种预初始化代码)之前停止它。我这么说是否走在正确的轨道上,或者问题也可能出在代码的其他部分?
为了更清楚地说明,我的主要代码如下(简单形式):
- 停止看门狗定时器。
- 初始化开发板(GPIO 引脚)。
- 设置 CPU 的 Vcore 电压。
- 设置引用晶体 (XTAL)。
- 设置系统时钟。
- 启用中断(全局)。
- 设置实时时钟 (RTC)。
- 设置 LCD 显示屏。
- 初始化按钮。
- 在适当的 LPM 模式下等待用户输入。
就我而言,这个代码序列应该是正确的。
最佳答案
这里有一些想法。如果您不打算喂养看门狗,则必须明确禁用它。您不必在预初始化代码中执行此操作(除非您亲自修改了预初始化代码并使其执行时间更长)。除非出现以下情况,否则在 main 的开头执行此操作应该没问题。静态数组可能会强制它们在预初始化代码中初始化为零。如果它们很大,可能需要一些时间,也许足以让看门狗在退出预初始化代码之前触发。此外,至少在某些 MSP430 上,您必须在写入时钟寄存器之前使用密码解锁它们。如果不这样做,芯片将重置。
如果您还没有看过,这里有一个讨论预初始化代码中的看门狗的链接: http://e2e.ti.com/support/microcontrollers/msp430/f/166/t/267695.aspx
关于embedded - MSP430F5529 初始化期间看门狗定时器触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24128835/