高级会员
- 积分
- 895
- 金钱
- 895
- 注册时间
- 2012-6-29
- 在线时间
- 37 小时
|
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");
|
|