| 
 
高级会员 
 
	积分902金钱902 注册时间2012-6-29在线时间39 小时 | 
 
5金钱 
| 我芯片使用的是stm32f103rct6    我使用独立看门狗, 我调试发现 我把PB7配置成推挽输出后, 只要我对PB7进行高低设置,独立看门狗就不会复位(测试时间为60,90 120秒让芯片重启,这些时间都测试过),求大佬指教, 芯片换过 
 void Laser_Swich_Init(void)
 {
 
 GPIO_InitTypeDef GPIO_InitStructure;
 
 
 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOC,ENABLE);//使能PORTA,PORTC时钟
 
 
 GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//关闭jtag,使能SWD,可以用SWD模式调试
 
 GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_8;//PA8
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
 GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化GPIOA15
 
 GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_8|GPIO_Pin_9;//PC8 9
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
 GPIO_Init(GPIOC, &GPIO_InitStructure);//初始化GPIOC
 
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;         // 端口配置
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
 GPIO_Init(GPIOB, &GPIO_InitStructure);                                         //根据设定参数初始化GPIO
 
 
 GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_15 ;                                                                                                //设置GPIO子端口号
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                                                                     //设置为推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;                                                                         //设置端口输出频率为50MHz
 GPIO_Init(GPIOA, &GPIO_InitStructure);                                                                                                                  //初始化端口
 
 //                GPIO_ResetBits(GPIOB, GPIO_Pin_13);
 //                GPIO_SetBits(GPIOA,GPIO_Pin_15);
 //                GPIO_SetBits(GPIOB,GPIO_Pin_7); //PB7 输出高  只要把这个打开后, 不喂狗后就死机
 }
 
 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();
 }
 
 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(4,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);
 
 //         iwdg_flag=1;
 while(mpu_dmp_init())
 {
 printf(" 陀螺仪加载失败\r\n");
 delay_ms(80);
 }
 printf("陀螺仪加载成功\r\n");
 short_nsm[0]=0;
 short_IP[0]=0;
 short_ID[0]=0;
 short_Token[0]=0;
 Sys_Init();
 USART_RX_STA=0;
 delay_ms(1000);
 printf("\r\n正在初始化话4G通讯    \r\n");
 ESP8266_Init();                                        //初始化ESP8266
 UsartPrintf(USART_DEBUG, "\r\n4G通讯初始化成功\r\n");
 
 
 
 | 
 |