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.

77 lines
2.1 KiB

3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
3 years ago
  1. #include <stdbool.h> //定义布尔
  2. #include <string.h>
  3. #include "key.h"
  4. #include "port.h"
  5. #include "systicket.h"
  6. static key_t s_keys[] = {
  7. s_key_init("powerkey", port_gpio_get_power_key_state),
  8. s_key_init("levelkey", port_gpio_get_level_key_state),
  9. s_key_init("timerkey", port_gpio_get_timer_key_state),
  10. s_key_init("intervalkey", port_gpio_get_interval_key_state),
  11. };
  12. static void mf_init_all_subdevice_state() {
  13. port_debug_set(false);
  14. port_fan_set(false);
  15. port_led0_set(false);
  16. port_led1_set(false);
  17. port_led2_set(false);
  18. port_led3_set(false);
  19. port_led_r_set(false);
  20. port_led_g_set(false);
  21. port_led_b_set(false);
  22. }
  23. static void onkey(key_t *key, key_state_t key_state) {
  24. if /* */ (strcmp(key->name, "powerkey") == 0 && zks_rising_edge == key_state) {
  25. printf("powerkey\n");
  26. // mf_process_poweron_key(key);
  27. } else if (strcmp(key->name, "levelkey") == 0 && zks_rising_edge == key_state) {
  28. printf("levelkey\n");
  29. // mf_process_level_key(key);
  30. } else if (strcmp(key->name, "timerkey") == 0 && zks_rising_edge == key_state) {
  31. printf("timerkey\n");
  32. // mf_process_timer_key(key);
  33. } else if (strcmp(key->name, "intervalkey") == 0 && zks_rising_edge == key_state) {
  34. printf("intervalkey\n");
  35. // mf_process_interval_key(key);
  36. }
  37. }
  38. key_module_t key_module = key_module_init(s_keys, onkey);
  39. void hardware_init() {
  40. SystemInit(); //配置系统时钟
  41. DeviceClockAllEnable(); //打开所有外设时钟
  42. systicket_init();
  43. port_init();
  44. }
  45. void hardware_default_settings() { mf_init_all_subdevice_state(); }
  46. void flip_debuf_light_level() {
  47. static uint8_t debug_led_state = 1;
  48. debug_led_state = !debug_led_state;
  49. port_debug_set(debug_led_state);
  50. }
  51. int main() {
  52. hardware_init();
  53. hardware_default_settings();
  54. key_init(&key_module);
  55. while (true) {
  56. // scan key
  57. DO_IT_EACH_MS(20) { key_do_loop_in_each_period(); };
  58. END();
  59. // debug light
  60. DO_IT_EACH_MS(150) { flip_debuf_light_level(); }
  61. END();
  62. }
  63. return 0;
  64. }