代码如下
int main()
{
GPIO_InitTypeDef GPIO_InitTypestructure;
delay_init(); //延时函数初始化
uart_init(115200); //串口初始化为115200
uart2_init(115200); //串口2初始化为115200
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
//PWRKEY-PB9输出低电平,延时1.5s,恢复高电平 推挽输出
//RESET-PB8输出低电平
GPIO_InitTypestructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitTypestructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;
GPIO_InitTypestructure.GPIO_Speed=GPIO_Speed_50MHz;
//GPIOB时钟
RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB, ENABLE);
//GPIO初始化
GPIO_Init(GPIOB,&GPIO_InitTypestructure);
//唤醒
//PB8输出低电平唤醒
GPIO_ResetBits(GPIOB,GPIO_Pin_8);
//先等待vbat电压稳定250ms
//PB9输出低电平
GPIO_ResetBits(GPIOB,GPIO_Pin_9);
//延迟2000ms
delay_ms(2000);
//开启mg301模块
printf("
开机
");
//PB9输出高电平
GPIO_SetBits(GPIOB,GPIO_Pin_9);
//延迟1.5秒
delay_ms(1500);
//PB9输出低电平
GPIO_ResetBits(GPIOB,GPIO_Pin_9);
delay_ms(1000);
while(1)
{
printf("
测试
");
delay_ms(1000);
}
return 0;
}
从串口调试助手上打印出来的测试,延时明显超过1秒,到5-6秒左右,用的是正点原子的延时函数。
代码如下
int main()
{
GPIO_InitTypeDef GPIO_InitTypestructure;
delay_init(); //延时函数初始化
uart_init(115200); //串口初始化为115200
uart2_init(115200); //串口2初始化为115200
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
//PWRKEY-PB9输出低电平,延时1.5s,恢复高电平 推挽输出
//RESET-PB8输出低电平
GPIO_InitTypestructure.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitTypestructure.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9;
GPIO_InitTypestructure.GPIO_Speed=GPIO_Speed_50MHz;
//GPIOB时钟
RCC_APB2PeriphResetCmd(RCC_APB2Periph_GPIOB, ENABLE);
//GPIO初始化
GPIO_Init(GPIOB,&GPIO_InitTypestructure);
//唤醒
//PB8输出低电平唤醒
GPIO_ResetBits(GPIOB,GPIO_Pin_8);
//先等待vbat电压稳定250ms
//PB9输出低电平
GPIO_ResetBits(GPIOB,GPIO_Pin_9);
//延迟2000ms
delay_ms(2000);
//开启mg301模块
printf("
开机
");
//PB9输出高电平
GPIO_SetBits(GPIOB,GPIO_Pin_9);
//延迟1.5秒
delay_ms(1500);
//PB9输出低电平
GPIO_ResetBits(GPIOB,GPIO_Pin_9);
delay_ms(1000);
while(1)
{
printf("
测试
");
delay_ms(1000);
}
return 0;
}
从串口调试助手上打印出来的测试,延时明显超过1秒,到5-6秒左右,用的是正点原子的延时函数。