stm32外部中斷按鈕短按長按1 0

2021-10-03 21:50:00 字數 1930 閱讀 5724

key.c

#define pwmaddkey_0   gpio_readinputdatabit(gpiob,gpio_pin_8) //讀取按鍵pwmaddkey_0 (b8)

#define pwmreducekey_0 gpio_readinputdatabit(gpiob,gpio_pin_9)//讀取按pwmreducekey_0(b9)

#define leftkey_0 gpio_readinputdatabit(gpiob,gpio_pin_12) //讀取按鍵leftkey_0 (b12)

#define rightkey_0 gpio_readinputdatabit(gpiob,gpio_pin_13)//讀取按鍵rightkey_0 (b13)

#define rightopentimereducekey_0 gpio_readinputdatabit(gpiob,gpio_pin_14)//讀取按鍵rightopentimereducekey_0 (b14)

#define leftkey_pres 1

#define rightkey_pres 2

#define rightopentimereducekey_pres 3

#define pwmaddkey_pres 4

#define pwmreducekey_pres 5

void key_init(void)

//按鍵處理函式

//返回按鍵值

//mode:0,不支援連續按;1,支援連續按;

//返回值:

//0,沒有任何按鍵按下

unsigned char key_scan(unsigned char mode)

else if(pwmaddkey_0==1||pwmreducekey_0==1||leftkey_0==1||rightkey_0==1||rightopentimereducekey_0==1)key_up=1;

return 0;// 無按鍵按下

}

exti.c

/**************開啟復用時鐘pb7,pb8,pb9****************/

void exti_gpio_init9_5(void)

外部中斷函式

#define pwmaddkey_exti		exti_line8	//b8			增加pwm占空比

#define pwmreducekey_exti exti_line9 //b9 減少pwm占空比

unsigned int pwmleft=50; //pwmlaft的占空比

unsigned int mykeytime=0; //按鍵按下的的時間標誌

/**********************外部中斷exti9_5****************************/

void exti9_5_irqhandler(void)

mykeytime=0; //清除標誌位

}while(pwmaddkey_exti==0); //鬆手檢測

} } exti_clearitpendingbit(pwmaddkey_exti); //清除標誌位

}if(exti_getitstatus(pwmreducekey_exti)!= reset) //判斷是否按下了pwmreducekey按鈕

mykeytime=0; //清除標誌位

}while(pwmreducekey_exti==0); //鬆手檢測

} } exti_clearitpendingbit(pwmreducekey_exti); //清除標誌位

}}

stm32按鍵 長按 短按 函式 一

在stm32工程中,長按和短按的 書寫,呼叫的讀取按鍵狀態的底層函式。封裝成的按鍵函式 下面是函式的標頭檔案,和.c檔案的 使用定時器來掃瞄按鍵。define key on 1 define key off 0 define key null 0 define key short 1 define ...

STM32獨立按鍵之長按 短按

內容如題 1.獨立按鍵 軟體消抖 晶元引腳初始化為上拉輸入 define key l state ll gpio isinputpinset key l port,key l pin define key r state ll gpio isinputpinset key r port,key r ...

STM32外部中斷

一 基本概念 arm coetex m3核心共支援256個中斷,其中16個內部中斷,240個外部中斷和可程式設計的256級中斷優先順序的設定。stm32目前支援的中斷共84個 16個內部 68個外部 還有16級可程式設計的中斷優先順序的設定,僅使用中斷優先順序設定8bit中的高4位。stm32可支援...