extern "C" void user_main() { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET); osKernelInitialize(); osKernelStart(); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_RESET); key_event_init(); keymat_init(); keymat_callback = key_event_handler; keymat_start(); HAL_GPIO_WritePin(GPIOC, GPIO_PIN_0, GPIO_PIN_SET); while (1) { osEvent ose = osMailGet(key_events, osWaitForever); if (ose.status == osEventMail) { KeyEvent* e = (KeyEvent*)ose.value.p; // NOTE: MIDI handling is hardcoded for now buf[0] = (e->state ? 0x90 : 0x80); // use ch0 buf[1] = e->keycode; buf[2] = 100; // use hard-coded velocity osMailFree(key_events, e); send_n(3); // blocking call } } }
/** * @brief 主函数 * @param 无 * @retval 无 */ int main(void) { Site_t site= {0,0}; /* LED 端口初始化 */ LED_GPIO_Config(); /* LCD初始化 */ LCD_init(); SysTick_Init(); site.x=20;site.y=20; LCD_str(site,"LCD test OK",BLUE,RED); key_event_init(); /* 方法2,使用固件库控制IO */ while (1) { deal_key_event(); } }