You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

33 lines
910 B

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. #include "key.h"
  2. #include <stdio.h>
  3. static bool s_inited;
  4. key_module_t *key_module_s;
  5. void key_init(key_module_t *key_module) {
  6. key_module_s = key_module;
  7. s_inited = true; //标志位说明按键初始化完成
  8. for (int i = 0; i < key_module_s->nkey; i++) {
  9. key_module_s->keys[i].cur_state = zks_keep;
  10. key_module_s->keys[i].last_io_state = key_module_s->keys[i].get_key_state();
  11. key_module_s->keys[i].after_filter_state = key_module_s->keys[i].get_key_state();
  12. }
  13. }
  14. void key_do_loop_in_each_period() {
  15. for (int i = 0; i < key_module_s->nkey; i++) {
  16. // printf("key_name:%s\n", key_module_s->keys[i].name);
  17. key_process_each(&key_module_s->keys[i]);
  18. }
  19. }
  20. void key_process_each(key_t *each) {
  21. each->keep_state_count++;
  22. bool now_io_state = each->get_key_state(); //获取现在的按键io状态
  23. if (!now_io_state) {
  24. key_module_s->onkey(each, zks_rising_edge);
  25. }
  26. }