找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3814|回复: 0
打印 上一主题 下一主题
收起左侧

STM8S awu及看门狗IWDG WWDG应用

[复制链接]
跳转到指定楼层
楼主
ID:75263 发表于 2015-6-9 02:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
                        AWU的应用 用库函数完成的
//切记要开启中断 且在中断函数中 AWU_GetFlagStatus(); 来清除中断

void AWU_SET(void)
{
CLK_PeripheralClockConfig(CLK_PERIPHERAL_AWU, ENABLE);
AWU_Init(AWU_TIMEBASE_12S);
}
#ifdef _COSMIC_
@far @interrupt void AWU_IRQHandler(void)
#else
void AWU_IRQHandler(void) interrupt 1
#endif  
{
  AWU_GetFlagStatus();

}




IWDG应用 直接操作寄存器完成的 在需要清狗的地方调用WDT_CLR()即可
void WDT_CLR(void )
{
IWDG->KR = IWDG_KEY_REFRESH;
}
void START_WDT(void )
{
IWDG->KR =0X55;//打开保护
IWDG->PR = IWDG_Prescaler_256;// 28Khz 256分频 
IWDG->RLR = 254;//重载寄存器设定 每当喂狗时 此值就会重载
IWDG->KR = IWDG_KEY_REFRESH;//先喂一次
IWDG->KR = IWDG_KEY_ENABLE;//启动看门狗
}
、、==================WWDG============

WWDG-CR是向下的计数器,数到0x40就会复位,窗口的上限可以任你设,最大7F,如果设成7F,几乎就成了没有窗口的看门狗了。 窗口的意思是假如你设是0x60,那么只有在0X60-0X40间可以喂狗,其它时间喂,狗就会复位你的单片机,所以喂狗前要先判断狗饿否。
typedef unsigned char    uint8_t;
void WWDG_Init(uint8_t Counter, uint8_t WindowValue)
{
   
   //assert_param(IS_WWDG_WINDOWLIMITVALUE_OK(WindowValue));   
    WWDG->WR =WWDG_WR_RESET_VALUE;
    WWDG->CR =(uint8_t)((uint8_t)(WWDG_CR_WDGA | WWDG_CR_T6) |(uint8_t)Counter);
    WWDG->WR =(uint8_t)((uint8_t)(~WWDG_CR_WDGA) & (uint8_t)(WWDG_CR_T6 |WindowValue));
}
#define BIT_MASK        ((uint8_t)0x7F)
void WWDG_SetCounter(uint8_t Counter)
{
   
  WWDG->CR = (uint8_t)(Counter &(uint8_t)BIT_MASK);

}
#define window_max 0x60
#define wwdg_reset0x70
void WWDG_CLR(void)
{//狗饿否
  if ((WWDG->CR)&0x7f)<window_max)WWDG_SetCounter(wwdg_reset)  ;
}

main()
{WWDG_Init(wwdg_reset,window_max );
while(1)
{WWDG_CLR
}
}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表