打印
[电机控制专用MCU]

APM8S007看门狗中断

[复制链接]
573|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qwgaojiazhi22|  楼主 | 2023-10-30 18:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
使用007配置看门狗中断时,发现进了中断没有翻转IO口,加了一个延迟之后就正常了。

void WDT_IRQHandler(void) interrupt WDT_IRQn
{
    // 进入中断设置IP,不可删除
    __IRQnIPnPush(WDT_IRQn);

    // ---------------- 用户函数处理 -------------------

    if(WDT_CON & WDT_OVER_FLAG(0x1)) {
        WDT_KEY  = WDT_KEY_VAL(0xAA);      // feed wdt

        P00      = ~P00;
        delay(1);  //加个延迟稳定
    }

    // 退出中断设置IP,不可删除
    __IRQnIPnPop(WDT_IRQn);
}

void system_init(void)
{
    u8 i;

    CLK_ACON0 |= CLK_AIP_HRC_EN(0x1);           // 使能 HIRC
    __HIRC_DELAY;                               // 该延迟不可删除,等待HIRC稳定并能保证烧录稳定性
    FLASH_TIMEREG0 = 0x55;
    FLASH_TIMEREG1 = 0x58;                      // FLASH访问速度 = 系统时钟/3
    CLK_CON2 = 0x50 | CLK_SYS_DIV(0x0);         // 系统时钟不分频
    CLK_CON0 = CLK_SYSCLK_SEL(0x3);             // 系统时钟选择 HIRC48M
    CLK_CON6 = CLK_FLASH_DIV(47);               // FLASH烧写时钟48分频:1M

    // 初始化寄存器
    // FOUT_S00 ~ FOUT_SEL
    for(i=0x18; i<=0x32; i++) {
        *(unsigned char volatile xdata *)(IOFUNC_BASE + i) = 0x0;
    }

    __LOADER_CHIP_TRIM;                         // 装载芯片各个模块校准值
}

void main()
{
   system_init();
   __EnableIRQ(WDT_IRQn);                 // 使能WDT中断
    IE_EA = 1;                             // 使能总中断

    WDT_KEY = WDT_KEY_VAL(0x5A);           // 使能中断
    WDT_KEY = WDT_KEY_VAL(0x55);           // 允许访问WDT
    WDT_CON = WDT_PRESCALE_SEL(0x07);      // 配置1s(设置128分频,看门狗时间=(1/32K)*256*分频系数)
    WDT_KEY = WDT_KEY_VAL(0xCC);           // 使能 WDT
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

19

帖子

0

粉丝