打印
[STM8]

STM8S独门看门狗(IWDG)无法启动,求助!

[复制链接]
4168|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gtzhangzr|  楼主 | 2010-11-1 21:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
想法很简单,就是使用看门狗复位让一个LED闪。程序进去的时候,把LED点亮一段时间,然后关闭LED,最后有一个死循环,让看门狗复位芯片,然后再点亮LED。
但程序进去后,LED被点亮然后灭了就再也没亮,说明看门狗没有复位芯片。我今天查了一整天资料,也把手册都看了几十遍,该试的方法都试了,还是没搞定。
各位帮忙看看,到底是怎么一回事!
#include <iostm8s103f3.h>
#define u8 unsigned char
#define u16 unsigned int
#define u32 unsigned long int
#define LED_ON() PC_ODR |= 0x20 //0010 0000 PC5
#define LED_OFF() PC_ODR &= ~(0x20)
void Chip_Init(void);
int main(void)
{
u16 x1 = 0xFFFF;
Chip_Init();
          IWDG_KR = 0xCC; //启动IWDG
          IWDG_KR = 0x55;  //解除 PR 及 RLR 的写保护
          IWDG_RLR = 0xFF; //看门狗计数器重装载数值         
          IWDG_PR = 0x06; //分频系数为256,最长超时时间为:1.02S
          IWDG_KR = 0xAA; //刷新IDDG,避免产生看门狗复位,同时恢复 PR 及 RLR 的写保护状态
LED_ON();
do
{
IWDG_KR = 0xAA; //刷新IWDG
}while(--x1);
LED_OFF();
do
{
asm("NOP");
}while(1);
}
void Chip_Init(void)
{
CLK_ICKR = 0x09; //HSI,LSI使能
CLK_CKDIVR = 0x08; //2分频HSI = 8M , CPU不分频
//EXTI_CR1 = 0x20; //外部中断,PORTC7下降沿触发
//EXTI_CR2 = 0; //TLI中断,下降沿触发
PC_DDR = 0x20; //0010 0000|PC5为输出,其它全为输入
PC_CR1 = 0xFF; //设置PC5推挽输出,其它输入IO端口上拉使能
PC_CR2 = 0x88; //1000 1000|PC7中断使能,PC3中断使能
PC_ODR = 0;
}
沙发
IJK| | 2010-11-2 09:19 | 只看该作者
连着仿真器,调试一下看看

使用特权

评论回复
板凳
gtzhangzr|  楼主 | 2010-11-2 14:29 | 只看该作者
我用RLINK仿真,发现RST_SR的IWDG复位标志被置位,也就是说看门狗已经溢出,但是芯片没有复位,见鬼了!

使用特权

评论回复
地板
gtzhangzr|  楼主 | 2010-11-2 16:11 | 只看该作者
问题解决了,原来是芯片问题!换了一块芯片就好了:dizzy:感谢二楼

使用特权

评论回复
5
香水城| | 2010-11-2 21:43 | 只看该作者
问题解决了,原来是芯片问题!换了一块芯片就好了:dizzy:感谢二楼
gtzhangzr 发表于 2010-11-2 16:11


换了一块芯片就好了?为什么不是焊接问题呢?把原来那片换回去试试?

使用特权

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

本版积分规则

0

主题

5

帖子

0

粉丝