| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247 |
- #include "key.h"
- #include "delay.h"
- #include "bsp.h"
- key_status_t key_status[KEY_MAX];
- // timeout_t tt_key;
- key_para_t key_para[KEY_MAX];
- void key_init(void)
- {
- SYS_EnableAPBClock(APB_MASK_GPIO1);
- // SYS_DisableJTDO();
- GPIO_SetInput(GPIO1,0x70);
- key_status_init();
- // timeout_setValue(&tt_key,10,0xff);
- }
- //获取按键电平
- uint8_t get_key_bit(uint8_t key)
- {
- uint8_t status;
- switch (key)
- {
- case KEY1:
- status = GET_KEY1();
- break;
- case KEY2:
- status = GET_KEY2();
- break;
- case KEY3:
- status = GET_KEY3();
- break;
- default:
- status = 0;
- break;
- }
- return status;
- }
- /*!
- * \brief 上电读取按键电平
- * \param 无
- */
- void key_status_init(void)
- {
- int i;
- for(i = 0; i < KEY_MAX; i++)
- {
- key_status[i].last_level = get_key_bit(i);
- }
- }
- /*!
- * \brief 实时读取按键电平
- * \param 无
- */
- void get_key_bit_realtime(void)
- {
- int i;
- uint8_t status;
- // if(!timeout_isOut(&tt_key))
- // return;
- delay_ms(10);
- for(i = 0; i < KEY_MAX; i++)
- {
- status = get_key_bit(i);
- if(status != key_status[i].last_level)
- {
- key_status[i].flag = 1;
- if(status)//高电平 抬起
- {
- key_status[i].status = KEY_STATUS_UP;
- }
- else
- {
- key_status[i].status = KEY_STATUS_DN;
- }
- key_status[i].last_level = status;
- }
- }
- }
- /*!
- * \brief 按键处理函数
- * \param 无
- */
- void key_handle(void)
- {
- uint8_t i;
- get_key_bit_realtime();//实时读取按键电平
- for(i = 0; i < KEY_MAX; i++)
- {
- if(key_status[i].flag)
- {
- key_status[i].flag = 0;
- if(key_status[i].status == KEY_STATUS_UP)//抬起
- {
- // switch(i)
- // {
- // case KEY1:
- // // printf("key1 up\n");
- // break;
- // case KEY2:
- // // printf("key2 up\n");
- // // GPIO_SetHigh(ITSF_PWR_N_PORT,ITSF_PWR_N_BIT);
- // // YTSF_GPIO_REV4_EN();
- // // YTSF_GPIO_REV1_RST();
- // // delay_ms(500);
- // // YTSF_GPIO_REV1_SET();
- // break;
- // case KEY3:
- // // printf("key3 up\n");
- // // GPIO_SetHigh(ITSF_PWR_P_PORT,ITSF_PWR_N_BIT);
- // break;
- // default:
- // break;
- // }
- }
- else if(key_status[i].status == KEY_STATUS_DN)//按下
- {
- // if(key_para[i].flag==0)
- // {
- // key_para[i].flag = 1;
- // key_para[i].num = 0;
- // timeout_setValue(&key_para[i].tt_key,KEY_TIMEOUT,1);
- // }
- // key_para[i].num++;
- // printf("key%d,key num:%d\n",i+1,key_para[i].num);
- switch(i)
- {
- case KEY1:
- // ytsf_test();
- // lora_test();
- printf("key1 down\n");
-
- break;
- case KEY2:
- // tax_test();
- // SPI_FLASH_Test();
- // I2C_Test();
- printf("key2 down\n");
- // GPIO_SetLow(ITSF_PWR_N_PORT,ITSF_PWR_N_BIT);
- // YTSF_GPIO_REV4_DN();
- // SYS_SoftwareReset();
- // update_test();//升级测试
- // FLASH_Unlock();
- // FLASH_EraseSector(0x80020000);
- // FLASH_Lock();
-
- // printf("1\n");
- break;
- case KEY3:
- printf("key3 down\n");
- // GPIO_SetLow(ITSF_PWR_P_PORT,ITSF_PWR_N_BIT);
- break;
- default:
- break;
- }
- }
- }
- }
- // key_timeout_handle();
- }
- // //按键功能
- // void key_func(uint8_t key, uint8_t num)
- // {
- // printf("key%d,time%d,num%d\n",key+1,KEY_TIMEOUT,num);
- // switch(key)
- // {
- // case KEY1:
- // switch(num)
- // {
- // case 1:
- // // SPI_FLASH_Test();
- // // lora_send_query_firm(device_info.device_sn);//发送
- // break;
- // case 2:
- // // SX126xReset();
- // // lora_init();
- // // printf("lora reset\n");
- // break;
- // case 3://离线升级
- // // printf("lora index = %d\n",lora_para_choice);
- // device_fixed_info.master_updata_start = 1;
- // ota_state.offline_mode = KEY_TRIGGER;
- // break;
- // case 4:
- // // lora_power_init();
- // // lora_init();
- // break;
- // default:
- // break;
- // }
- // break;
- // case KEY2:
- // switch(num)
- // {
- // case 1:
-
- // break;
- // case 2:
- // break;
- // case 3:
- // device_fixed_info.master_updata_start = 1;
- // ota_state.offline_mode = KEY_TRIGGER;
- // break;
- // default:
- // break;
- // }
- // break;
- // case KEY3:
- // switch(num)
- // {
- // case 1:
-
- // break;
- // case 2:
- // break;
- // case 3:
- // break;
- // default:
- // break;
- // }
- // break;
- // default:
- // break;
- // }
- // }
- // //按键超时处理
- // void key_timeout_handle(void)
- // {
- // uint8_t i;
- // for(i = 0; i < KEY_MAX; i++)
- // {
- // if(timeout_isOut(&key_para[i].tt_key))
- // {
- // key_func(i,key_para[i].num);
- // key_para[i].flag = 0;
- // key_para[i].num = 0;
- // }
- // }
- // }
|