欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

stm32按键不同时长选择不同函数入口

程序员文章站 2024-01-21 09:02:58
...

 

 

主要功能描述:  stm32  中通过按键按下不同时长选择不同的函数入口。这里不同函数入口用亮不同的灯来演示。

软件平台:        keil_MDK422

硬件平台:        stm32开发板(核心芯片stm32f103RB)

固件库版本:     v2.0

 

/****         main.c       *****/

/* Includes platform dependent ------------------------------------------*/
#include "configuration.h"  // Configuration of the platform
#include "stm32f10x_lib.h"

extern u8   gcKeyCountEnable;
extern u16  gcKeyCnt;

int main(void)
{
     int i = 0;
     ConfigureInterfaces();

     GPIO_KEY_Config();

     LED_config();


    while (1)
    {
       while( IS_KeyDown( GPIO_KEY_PORT, GPIO_KEY1) == 1)
       {
              gcKeyCountEnable = 1;
              if(gcKeyCnt>8) break;
        }
      if(gcKeyCnt > 1 && gcKeyCnt < 3 )
      {
              GPIO_ResetBits(GPIO_LED_RED, GPIO_RED_PIN);
              for(i = 0; i<5000; i++)
              gcKeyCnt = 0 ;
              gcKeyCountEnable = 0;
      }
      else if(gcKeyCnt > 5 )
     {   

             GPIO_ResetBits(GPIO_LED_GREEN , GPIO_GREEN_PIN);
             for(i = 0; i<5000; i++)
             gcKeyCnt = 0 ;
             gcKeyCountEnable = 0;

     }
    else if (gcKeyCnt== 0)
   { 
             GPIO_SetBits(GPIO_LED_GREEN , GPIO_GREEN_PIN);
             GPIO_SetBits(GPIO_LED_RED , GPIO_RED_PIN); 
    }

  }

}

 

/******     st32mf10x_it.c     *******/

 

void TIM2_IRQHandler(void)
{
    if (TIM_GetITStatus(TIM2, TIM_IT_Update) != RESET)

    {
        TIM_ClearITPendingBit(TIM2, TIM_IT_Update);
        
         if( gcKeyCountEnable==1 )

        gcKeyCnt ++;        
     }
}