#include "Key.h" #include <../2025_include_user/Host.h> Key::KeyData Key::keys[] = { {KEY1, Key_Key1_PORT, Key_Key1_PIN, 0}, {KEY2, Key_Key2_PORT, Key_Key2_PIN, 0}, {KEY3, Key_Key3_PORT, Key_Key3_PIN, 0}, {KEY4, Key_Key4_PORT, Key_Key4_PIN, 0}, }; // extern "C" { // void vKeyTask(void *pvParameters) { // while (true) { // for (uint8_t i = 0; i < (sizeof(Key::keys) / sizeof(Key::keys[0])); i++) { // if (DL_GPIO_readPins(Key::keys[i].port, Key::keys[i].pin) == 0) { // // print("Key%d: %d\r\n", i, 1); // Key::keys[i].state = 1; // } else { // // print("Key%d: %d\r\n", i, 0); // Key::keys[i].state = 0; // } // } // // vTaskDelay(pdMS_TO_TICKS(1)); // 每10ms检测一次按键,释放CPU // } // } // } void Key::init() { // xTaskCreate(vKeyTask, "vKeyTask", 32, nullptr, 1, nullptr); NVIC_EnableIRQ(Key_GPIOA_INT_IRQN); NVIC_EnableIRQ(GPIO_MULTIPLE_GPIOB_INT_IRQN); } uint8_t Key::getState(const uint8_t id) { const uint8_t state = keys[id].state; keys[id].state = 0; return state; } void Key::setState(const uint8_t id, const uint8_t state) { keys[id].state = state; }