博客
关于我
MSP430FR6989之看门狗
阅读量:389 次
发布时间:2019-03-05

本文共 1174 字,大约阅读时间需要 3 分钟。

MSP430FR6989的看门狗配置相对简单,主要通过配置WDTCTL寄存器即可实现。以下是详细的步骤和相关配置说明:

  • WDTCTL寄存器配置

    • WDTPW:每次设置WDTCTL寄存器时,需向WDTPW寄存器写入0x05A,确保看门狗的安全性。
    • WDTHOLD:控制看门狗的启用或禁用。设置为0停止,设置为1启用。
    • WDTSSEL:设置看门狗时钟源。在本项目中,晶振频率为32.768KHz,接在LFX引脚上,因此需将WDTSSEL配置为ACLK引脚。
    • WDTTMSEL:设置为0进入看门狗模式,为1进入间隔定时器模式。
    • WDTCNTCL:喂狗功能,确保看门狗不会自动复位。
    • WDTIS:设置看门狗的分频系数。为实现1秒的定时间隔,需将WDTIS设为32768。
  • 晶振源配置

    • 32.768KHz的晶振接在LFX引脚上,确保WDTSSEL正确配置为ACLK。
  • 代码实现: 使用DriverLib库实现看门狗配置和控制:

    #include 
    int main(void) {
    volatile uint32_t i;
    WDT_A_hold(WDT_A_BASE); // 停止看门狗
    WDT_A_initWatchdogTimer(WDT_A_BASE, WDT_A_CLOCKSOURCE_ACLK, WDT_A_CLOCKDIVIDER_32K); // 配置时钟源和分频
    WDT_A_start(WDT_A_BASE); // 启动看门狗
    GPIO_setAsOutputPin(GPIO_PORT_P1, GPIO_PIN0); // 配置LED引脚
    GPIO_setOutputHighOnPin(GPIO_PORT_P1, GPIO_PIN0); // LED初始高状态
    PMM_unlockLPM5(); // 解锁低功耗模式
    while (1) {
    for (i = 10000; i > 0; i--) { // 延时循环
    GPIO_toggleOutputOnPin(GPIO_PORT_P1, GPIO_PIN0); // LED闪烁
    WDT_A_resetTimer(WDT_A_BASE); // 喂狗
    }
    }
    }
  • 验证与优化

    • 初始配置:10,000次循环,延时约1.024秒,喂狗成功,LED正常闪烁。
    • 延时增加:100,000次循环,延时约10.24秒,喂狗失败,LED保持高状态。
    • 喂狗优化:在延时循环中添加喂狗指令,确保看门狗不会自动复位。
  • 通过以上配置和优化,MSP430FR6989的看门狗功能能够有效防止程序跑飞,确保系统稳定运行。

    转载地址:http://ldiwz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现deutsch jozsa算法(附完整源码)
    查看>>
    Objective-C实现DFS判断是否是二分图Bipartite算法(附完整源码)
    查看>>