|
/************ STM8S103 看門狗測試 ******/
/*芯片型號:STM8S103F3 */
/*功能描述:STM8S103 看門狗測試 */
/**************************************************/
#include <iostm8s103f3.h>
#define uint unsigned int
#define uchar unsigned char
#define LED PC_ODR_ODR5 //輸出LED控制口
void delayms(unsigned int count);//延時(shí)程序
void IO_config(void); //端口配置
/***************延時(shí)子程序start****************/
void delayms(unsigned int count)
{
unsigned int i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++);
}
/*************延時(shí)子程序end*****************/
void IO_config(void)
{
CLK_CKDIVR = 0x08; //內(nèi)部8M
PC_DDR = 0x20; // PC5為輸出,其它全為輸入
PC_CR1 = 0xFF; // 設(shè)置PC5推挽輸出,其它輸入IO端口上拉使能
PC_CR2 = 0x00;
}
int main(void)
{
uchar i;
IO_config();//端口初始化
LED=0;
IWDG_KR = 0xCC; //當(dāng)IWDG_KR被寫入數(shù)值0xCC,獨(dú)立看門狗被啟動了
IWDG_KR = 0x55; //解除 PR 及 RLR 的寫保護(hù)
IWDG_RLR = 0xff; //看門狗計(jì)數(shù)器重裝載數(shù)值
IWDG_PR = 0x06; //分頻系數(shù)為256,最長超時(shí)時(shí)間為:1.02S
IWDG_KR = 0xAA; //恢復(fù) PR 及 RLR 的寫保護(hù)狀態(tài)
for(i=0;i<10;i++)
{
delayms(500);
IWDG_KR = 0xAA; //刷新IWDG(喂狗)。每當(dāng)KEY_REFRESH的數(shù)值(0xAA)寫入到IWDG_KR寄存器時(shí),
//獨(dú)立看門狗將用IWDG_RLR的數(shù)值刷新計(jì)數(shù)器的內(nèi)容,從而避免了產(chǎn)生看門狗的復(fù)位。
}
LED=1;
while(1); //如果沒有喂狗,就復(fù)位
}
|
|