新手上路
- 积分
- 33
- 金钱
- 33
- 注册时间
- 2016-10-27
- 在线时间
- 5 小时
|
10金钱
[mw_shl_code=c,true]#define End_Up_On() GPIO_WriteHigh(GPIOA, GPIO_PIN_3);
#define End_Up_Off() GPIO_WriteLow(GPIOA, GPIO_PIN_3);
//时钟初始化
void Clk_Init(void)
{
CLK_DeInit(); //CLK Default reset
//CLK_LSICmd(ENABLE); //Enable CLK LSI
CLK_HSICmd(ENABLE);
//CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1); //内部时钟为1分频 = 16Mhz
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV4);
CLK_ClockSecuritySystemEnable();
//CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV8); //配置系统时钟分频器
}
//Io口初始化
void IO_Init(void)
{
GPIO_DeInit(GPIOD); //恢复指定端口寄存器到默认值
GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_OUT_PP_LOW_FAST); //END_UP 设置
// GPIO_WriteLow(GPIOA, GPIO_PIN_3); //END_Up初始为低
GPIO_DeInit(GPIOC); //把LED1-4设置为高电平输出,关灯
GPIO_Init(GPIOC, GPIO_PIN_HNIB , GPIO_MODE_OUT_PP_HIGH_SLOW); //LED1-4 灭
}
//ADC初始化
void ADC_Init(void)
{
ADC1_DeInit();
ADC1_Init(ADC1_CONVERSIONMODE_SINGLE,ADC1_CHANNEL_4,ADC1_PRESSEL_FCPU_D2,ADC1_EXTTRIG_TIM, DISABLE,
ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL4, DISABLE);
ADC1_Init(ADC1_CONVERSIONMODE_SINGLE,ADC1_CHANNEL_3,ADC1_PRESSEL_FCPU_D2,ADC1_EXTTRIG_TIM, DISABLE,
ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL3, DISABLE);
ADC1_Cmd(ENABLE);
ADC1_ITConfig(ADC1_IT_AWDIE, DISABLE);
}
void System_Init(void)
{
IO_Init();
Clk_Init();
ADC_Init();
KeyInit(); //按键初始化
USB_Init();
TIM2_Init();
enableInterrupts();
}
/**************************实现函数********************************************
*函数原型: main() 主程序
*功 能: 设置LED的端口为输出,并使开发板上的LED2闪烁
*******************************************************************************/
main()
{
disableInterrupts();
//MWWDG_Init();
Clk_Init(); //时钟初始化
IO_Init(); //IO初始化
ADC_Init(); //ADC 初始化
KeyInit(); //按键初始化
USB_Init();
TIM2_Init();
//USART_Configuration(); //串口中断配置
//USB 初始化
enableInterrupts();
while (1)
{ //主循环体
if(fPowerOn_flag==FALSE) //无活动信号进入停机模式
{
//Halt_OffDevice(); //关闭设备
halt(); //停机
System_Init();
// End_Up_On();
}
if(fPowerOn_flag) //正常工作状态
{
if(fKeyPress) //按键事件
{
//调试使用
// itoa(adc_val,Tx_Buffer);
//UART_Send( Tx_Buffer, countof(Tx_Buffer)-1);
//delay_ms(2);
End_Up_On(); //升压
adc_val = ADC_val_get(FLG_VOUT); //电压通道
Led_tig(adc_val); //检测电池电压[/mw_shl_code]
程序如上,
程序流程:
上电无动作-> 进入HALT->按键中断激活 -> 进入正常流程.
可是一次按键激活后,出现如下现象:
1.VCAP=2.2V(HALT下也是2.2V).
2.程序能进中断,能进入正常流程,但到End_Up_ON()就不走了.
请各位大神出手援助啊!
|
|