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可支援...