更新 'USER/Key/Key.c'
解决了重启之后adc无法正常工作的问题
This commit is contained in:
parent
a971ce7e43
commit
343f91aeb3
@ -9,9 +9,9 @@
|
||||
u8 flag = 0;
|
||||
|
||||
/**-------------------------------------------------------
|
||||
* @函数名 KEY_INIT
|
||||
* @功能 按键初始化
|
||||
* @返回值 无
|
||||
* @函数名 KEY_INIT
|
||||
* @功能 按键初始化
|
||||
* @返回值 无
|
||||
***------------------------------------------------------*/
|
||||
void KEY_INIT()
|
||||
{
|
||||
@ -20,23 +20,23 @@ void KEY_INIT()
|
||||
}
|
||||
|
||||
/**-------------------------------------------------------
|
||||
* @函数名 KEY_GPIO_INIT
|
||||
* @功能 按键GPIO初始化
|
||||
* @返回值 无
|
||||
* @函数名 KEY_GPIO_INIT
|
||||
* @功能 按键GPIO初始化
|
||||
* @返回值 无
|
||||
***------------------------------------------------------*/
|
||||
void KEY_GPIO_INIT(){
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
RCC_APB2PeriphClockCmd(KEY_CLOCK, ENABLE); //使能对应端口时钟
|
||||
RCC_APB2PeriphClockCmd(KEY_CLOCK, ENABLE); //使能对应端口时钟
|
||||
|
||||
GPIO_InitStructure.GPIO_Pin = KEY_Pin;//KEY_Pin
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
|
||||
GPIO_Init(KEY_PORT, &GPIO_InitStructure);//初始化key_GPIO
|
||||
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
|
||||
GPIO_Init(KEY_PORT, &GPIO_InitStructure);//初始化key_GPIO
|
||||
}
|
||||
|
||||
/**-------------------------------------------------------
|
||||
* @函数名 KEY_NVIC_INIT
|
||||
* @功能 按键按下时为低电平0
|
||||
* @返回值 无
|
||||
* @函数名 KEY_NVIC_INIT
|
||||
* @功能 按键按下时为低电平0
|
||||
* @返回值 无
|
||||
***------------------------------------------------------*/
|
||||
void KEY_NVIC_INIT()
|
||||
{
|
||||
@ -45,71 +45,72 @@ void KEY_NVIC_INIT()
|
||||
|
||||
|
||||
|
||||
/* 初始化KEY按键为中断模式 */
|
||||
/* 初始化KEY按键为中断模式 */
|
||||
|
||||
/* Connect Button EXTI Line to Button GPIO Pin */
|
||||
/* 将KEY按键对应的管脚连接到内部中断线 */
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //使能复用功能时钟
|
||||
/* 将KEY按键对应的管脚连接到内部中断线 */
|
||||
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); //使能复用功能时钟
|
||||
|
||||
//GPIOE.2 中断线以及中断初始化配置 下降沿触发
|
||||
//GPIOE.2 中断线以及中断初始化配置 下降沿触发
|
||||
GPIO_EXTILineConfig(KEY_PORT_SOURCE,KEY_PIN_SOURCE);
|
||||
|
||||
EXTI_InitStructure.EXTI_Line=KEY_EXIT_LINE; //KEY2
|
||||
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
|
||||
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
|
||||
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
|
||||
EXTI_Init(&EXTI_InitStructure); //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器
|
||||
EXTI_Init(&EXTI_InitStructure); //根据EXTI_InitStruct中指定的参数初始化外设EXTI寄存器
|
||||
|
||||
|
||||
/* Enable and set Button EXTI Interrupt to the lowest priority */
|
||||
NVIC_InitStructure.NVIC_IRQChannel = KEY_NVIC_IRQChannel; //使能按键WK_UP所在的外部中断通道
|
||||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //抢占优先级2,
|
||||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00; //子优先级0
|
||||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道
|
||||
NVIC_InitStructure.NVIC_IRQChannel = KEY_NVIC_IRQChannel; //使能按键WK_UP所在的外部中断通道
|
||||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02; //抢占优先级2,
|
||||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x00; //子优先级0
|
||||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断通道
|
||||
NVIC_Init(&NVIC_InitStructure);
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**-------------------------------------------------------
|
||||
* @函数名 EXTI3_IRQHandler
|
||||
* @功能 处理外部中断线3的中断,按键1中断处理函数
|
||||
* @参数 无
|
||||
* @返回值 无
|
||||
* @函数名 EXTI3_IRQHandler
|
||||
* @功能 处理外部中断线3的中断,按键1中断处理函数
|
||||
* @参数 无
|
||||
* @返回值 无
|
||||
***------------------------------------------------------*/
|
||||
void KEY_NVIC_Handler(void) /* Key 1 */
|
||||
{
|
||||
if(EXTI_GetITStatus(KEY_EXIT_LINE) != RESET)
|
||||
{
|
||||
/* 延迟去抖 */
|
||||
/* 延迟去抖 */
|
||||
delay(150);
|
||||
if(KEY == 0)
|
||||
{
|
||||
/*改变系统工作标志*/
|
||||
/*改变系统工作标志*/
|
||||
flag = !flag;
|
||||
printf("\r\n开关状态改变为:%d\r\n",!flag);
|
||||
/* 改变指示灯状态 */
|
||||
printf("\r\n开关状态改变为:%d\r\n",!flag);
|
||||
/* 改变指示灯状态 */
|
||||
if(!flag){
|
||||
LED_SYS_ON();
|
||||
ADC_Cmd(ADC_x, ENABLE);
|
||||
TIM_Cmd(TIM2, ENABLE); //使能TIM2
|
||||
TIM_Cmd(TIM3, ENABLE); //使能TIM3
|
||||
ADCx_Init();
|
||||
TIM_Cmd(TIM2, ENABLE); //使能TIM2
|
||||
TIM_Cmd(TIM3, ENABLE); //使能TIM3
|
||||
|
||||
}else {
|
||||
LED_SYS_OFF();
|
||||
ADC_Cmd(ADC_x, DISABLE);
|
||||
TIM_Cmd(TIM2, DISABLE); //使能TIM2
|
||||
TIM_Cmd(TIM3, DISABLE); //使能TIM3
|
||||
ADC_DMACmd(ADC_x, DISABLE);
|
||||
TIM_Cmd(TIM2, DISABLE); //使能TIM2
|
||||
TIM_Cmd(TIM3, DISABLE); //使能TIM3
|
||||
|
||||
}
|
||||
}
|
||||
/* 等待按键释放 */
|
||||
/* 等待按键释放 */
|
||||
while(KEY == 0);
|
||||
/* 延迟去抖 */
|
||||
/* 延迟去抖 */
|
||||
delay(150);
|
||||
|
||||
/* Clear the EXTI Line 4 */
|
||||
/* 清除中断挂起标志位,否则会被认为中断没有被处理而循环再次进入中断 */
|
||||
/* 清除中断挂起标志位,否则会被认为中断没有被处理而循环再次进入中断 */
|
||||
EXTI_ClearITPendingBit(KEY_EXIT_LINE);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user