OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3762|回复: 2

stm32 独立看门狗不复位问题

[复制链接]

153

主题

262

帖子

0

精华

高级会员

Rank: 4

积分
895
金钱
895
注册时间
2012-6-29
在线时间
37 小时
发表于 2023-3-29 11:39:25 | 显示全部楼层 |阅读模式
5金钱
我使用的是独立看门狗,  定时器3设置间隔100ms左右喂狗一次, 每定时5分钟后不喂狗让程序重启,但是程序没有重启直接死机 请问这是什么原因,
void IWDG_Init(u8 prer,u16 rlr)
{        
         IWDG_WriteAccessCmd(IWDG_WriteAccess_Enable);  //使能对寄存器IWDG_PR和IWDG_RLR的写操作
        
        IWDG_SetPrescaler(prer);  //设置IWDG预分频值:设置IWDG预分频值为64
        
        IWDG_SetReload(rlr);  //设置IWDG重装载值
        
        IWDG_ReloadCounter();  //按照IWDG重装载寄存器的值重装载IWDG计数器
        
        IWDG_Enable();  //使能IWDG
}
//喂独立看门狗
void IWDG_Feed(void)
{   
         IWDG_ReloadCounter();                                                                                   
}

void TIM3_IRQHandler(void)   //TIM3中断
{
        if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
                {
                TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //清除TIMx的中断待处理位:TIM 中断源
                T10ms_flag=1;
                        T10ms_count++;
                        if((T10ms_count%2)==0)T100ms_flag=1;
                        if(T10ms_count==10)
                        {
                                        T10ms_count=0;T1S_flag=1;T_time++;
                                connect_time++;
                                printf("time:  %d\r\n",connect_time);
                                if(connect_time<300)
                                   IWDG_Feed();
                        }  //1s
                        if(T_time==60){T_time=0;T1min_time++;}  //1min
                        if(T1min_time==SendData_time){T1min_time=0;T1Min_flag=1;}
                        
                        
               
                }
}

        int main(void)
{
                u8 t=0,i=0,Barrier_time=0,Barrier_flag=0;
                float pitch,roll,yaw;                 //欧拉角
                short temp;                                        //温度        
                NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
                delay_init();                     //延时函数初始化         
                IO_denit();                 
                uart_init(115200);                 //串口初始化为9600         
                USART2_Init(9600);                 //初始化串口2
                USART4_Init(9600);                 //初始化串口4
                ClearRAM((u8*)USART_RX_BUF,100);
          IWDG_Init(5,1250);    //重载值为1250,溢出时间为4s        
                TIM3_Int_Init(99,7199);//10Khz的计数频率,计数到5000为500ms     
                usmart_dev.init(72);                //初始化USMART
                Laser_Swich_Init();                                        //初始化按键
                Adc_Init();                                  //ADC初始化                  
                MPU_Init();                                        //初始化MPU6050        
                delay_ms(1000);
                uart_init3(115200);

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

70

主题

6698

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
12692
金钱
12692
注册时间
2012-11-26
在线时间
3711 小时
发表于 2023-3-29 14:10:28 | 显示全部楼层
把时间改短试试   比如1秒后就不喂测试下
学无止境
回复

使用道具 举报

153

主题

262

帖子

0

精华

高级会员

Rank: 4

积分
895
金钱
895
注册时间
2012-6-29
在线时间
37 小时
 楼主| 发表于 2023-3-29 14:23:52 | 显示全部楼层
jermy_z 发表于 2023-3-29 14:10
把时间改短试试   比如1秒后就不喂测试下

一样是死机
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 12:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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