⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 看门狗例子程序 ARM 1138 开发板例子
💻 C
字号:
#include  "systemInit.h"
#include  "watchdog.h"


//  定义LED
#define  LED_PERIPH             SYSCTL_PERIPH_GPIOG
#define  LED_PORT               GPIO_PORTG_BASE
#define  LED_PIN                GPIO_PIN_2


//  LED初始化
void ledInit(void)
{
    SysCtlPeriEnable(LED_PERIPH);                           //  使能LED所在的GPIO端口
    GPIOPinTypeOut(LED_PORT, LED_PIN);                      //  设置LED所在管脚为输出
    GPIOPinWrite(LED_PORT, LED_PIN, 0xFF);                  //  熄灭LED
}


//  看门狗初始化
void wdogInit(void)
{
    unsigned long ulValue = 350 * (TheSysClock / 3000);     //  准备定时350ms

    SysCtlPeriEnable(SYSCTL_PERIPH_WDOG);                   //  使能看门狗模块
    WatchdogResetEnable(WATCHDOG_BASE);                     //  使能看门狗复位功能
    WatchdogStallEnable(WATCHDOG_BASE);                     //  使能调试器暂停看门狗计数
    WatchdogReloadSet(WATCHDOG_BASE, ulValue);              //  设置看门狗装载值
    WatchdogEnable(WATCHDOG_BASE);                          //  使能看门狗
    WatchdogLock(WATCHDOG_BASE);                            //  锁定看门狗
}


//  喂狗操作
void wdogFeed(void)
{
    WatchdogIntClear(WATCHDOG_BASE);                        //  清除中断状态,即喂狗操作

    GPIOPinWrite(LED_PORT, LED_PIN, 0x00);                  //  点亮LED
    SysCtlDelay(10 * (TheSysClock / 3000));                 //  延时约10ms
    GPIOPinWrite(LED_PORT, LED_PIN, 0xFF);                  //  熄灭LED
}


//  主函数(程序入口)
int main(void)
{
    jtagWait();                                             //  防止JTAG失效,重要!
    clockInit();                                            //  时钟初始化:晶振,6MHz
    ledInit();                                              //  LED初始化

    GPIOPinWrite(LED_PORT, LED_PIN, 0x00);                  //  点亮LED,表明已复位
    SysCtlDelay(1000 * (TheSysClock / 3000));
    GPIOPinWrite(LED_PORT, LED_PIN, 0xFF);                  //  熄灭LED
    SysCtlDelay(1000 * (TheSysClock / 3000));

    wdogInit();                                             //  看门狗初始化

    for (;;)
    {
        wdogFeed();                                         //  喂狗,每喂一次LED闪一下
        SysCtlDelay(150 * (TheSysClock / 3000));            //  延时过长会导致看门狗复位
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -