| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- #include "key.h"
- #include "../App/ota_update.h"
- #include "../App/xspDataOpt.h"
- #include "../App/taskOpt.h"
- KeyInfo g_keyinfo;
- void key_delay(uint32_t time)
- {
- volatile uint32_t idly=0;
- for(idly=20*time; idly>0; idly--);
- }
- /*-----------------------------------------------------------------------
- * 初始化按键
- * key2
- * *PE3
- * -----------------------------------------------------------------------*/
- void key_init(void)
- {
- rcu_periph_clock_enable(RCU_GPIOE);
- gpio_init(GPIOB, GPIO_MODE_IPU, GPIO_OSPEED_2MHZ,GPIO_PIN_3); //
- timeout_setValue(&g_keyinfo.timer,5000);
- g_keyinfo.keyVal = 0;
- g_keyinfo.count = 0;
- g_keyinfo.keyPress = 0x00;
- }
- static void set_key_value(uint8_t keyval)
- {
- if((0!=g_keyinfo.keyVal) && (keyval != g_keyinfo.keyVal) ){
- g_keyinfo.count = 0;
- g_keyinfo.keyPress = 0;
- timeout_stop(&g_keyinfo.timer);
- }
- g_keyinfo.keyVal = keyval;
- if(0==g_keyinfo.count){
- timeout_start(&g_keyinfo.timer);
- }
- if(0 == g_keyinfo.keyPress){
- g_keyinfo.count++;
- g_keyinfo.keyPress = 1;
- }
- }
- /*-----------------------------------------------------------------------
- * 检测按键的输入
- * ----------------------------------------------------------------------*/
- uint8_t key_scan(void)
- {
- if(KEY2_DOWN()){ // 按键按下
- key_delay(20); // 消抖
- if(KEY2_DOWN()) { // 确定按键按下
- set_key_value(KEY2_VAL);
- }
- }
- else {
- g_keyinfo.keyPress = 0x00;
- if((g_keyinfo.keyVal !=0) && (g_keyinfo.count>0) ){
- if(timeout_isOut(&g_keyinfo.timer))
- return 1;
- else return 0;
- }
- }
- return 0;
- }
- /*---------------------------------------------------------------------------------
- * 按键的处理
- * --------------------------------------------------------------------------------*/
- void key_opteration(void)
- {
- if(KEY2_VAL == g_keyinfo.keyVal ){
- switch (g_keyinfo.count){
- case 1:break; // 按键按一次
- case 2:break; // 按键按二次
- case 3: // 按键按三次
- ota_start_offline_update();
- break;
- default:
- break;
- }
- }
- else if(KEY4_VAL == g_keyinfo.keyVal) {
- switch(g_keyinfo.count){
- case 1:
- break;
- case 2: break;
- case 3:
- // if(IDENTITY_MASTER == g_iDentity) {
- // g_taskRunDa.keyReadcurData = 1;
- // g_taskRunDa.keySaveMasterDa = 1;
- // printf("按键读取显示屏的值 \r\n");
- // }
- break;
- default: break;
- }
- }
- }
|