更新 'USER/Key/Key.c'

解决了重启之后adc无法正常工作的问题
This commit is contained in:
gituser 2020-05-27 00:46:55 +08:00
parent a971ce7e43
commit 343f91aeb3

View File

@ -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);
}
}