From 343f91aeb313a13cdb80965a86e89de12dd36157 Mon Sep 17 00:00:00 2001 From: gituser <1602304677@qq.com> Date: Wed, 27 May 2020 00:46:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20'USER/Key/Key.c'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 解决了é‡�å�¯ä¹‹å�Žadc无法正常工作的问题 --- USER/Key/Key.c | 75 +++++++++++++++++++++++++------------------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/USER/Key/Key.c b/USER/Key/Key.c index beeb23a..784e385 100644 --- a/USER/Key/Key.c +++ b/USER/Key/Key.c @@ -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); } }