优化调试新增按键驱动

This commit is contained in:
冯佳
2026-01-23 13:03:40 +08:00
parent 0a30f956b4
commit 988cc7ad4a
66 changed files with 878713 additions and 1274 deletions

View File

@ -28,6 +28,7 @@
#include "bsp_init.h"
#include "bsp_config.h"
#include "bsp_w25qxx.h"
#include "bsp_key.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
@ -56,6 +57,10 @@ static led_config_t led_config = {
/* LED instance */
static led_t led;
/* Timer variables for non-blocking delays */
static uint32_t led_toggle_timer = 0;
#define LED_TOGGLE_INTERVAL 500 /* 500ms interval for LED toggling */
/* USER CODE END PV */
/* Private function prototypes -----------------------------------------------*/
@ -104,12 +109,16 @@ int main(void)
delay_init();
logging_init();
/* Initialize keys */
bsp_key_init();
/* Set log level to debug */
logging_set_level(LOG_LEVEL_DEBUG);
/* Send welcome message */
log_info("STM32F407VET6 UART Test\r\n");
log_info("LED toggling every 500ms\r\n");
log_info("Key detection enabled\r\n");
log_debug("Debug logging enabled\r\n");
/* Initialize W25QXX */
@ -142,9 +151,68 @@ int main(void)
/* USER CODE BEGIN WHILE */
while (1)
{
led_toggle(&led); // Toggle the LED state
log_debug("LED toggled\r\n");
delay_ms(500); // Delay for 500 milliseconds
/* Update key states (should be called periodically, e.g. every 10ms) */
bsp_key_update();
/* Check key events */
/* KEY0 events */
if (bsp_key_get_press_event(BSP_KEY_ID_KEY0)) {
log_info("KEY0 pressed\r\n");
}
if (bsp_key_get_release_event(BSP_KEY_ID_KEY0)) {
log_info("KEY0 released\r\n");
}
if (bsp_key_get_short_press_event(BSP_KEY_ID_KEY0)) {
log_info("KEY0 short pressed\r\n");
}
if (bsp_key_get_long_press_event(BSP_KEY_ID_KEY0)) {
log_info("KEY0 long pressed\r\n");
}
if (bsp_key_get_repeat_event(BSP_KEY_ID_KEY0)) {
log_info("KEY0 repeat pressed\r\n");
}
/* KEY1 events */
if (bsp_key_get_press_event(BSP_KEY_ID_KEY1)) {
log_info("KEY1 pressed\r\n");
}
if (bsp_key_get_release_event(BSP_KEY_ID_KEY1)) {
log_info("KEY1 released\r\n");
}
if (bsp_key_get_short_press_event(BSP_KEY_ID_KEY1)) {
log_info("KEY1 short pressed\r\n");
}
if (bsp_key_get_long_press_event(BSP_KEY_ID_KEY1)) {
log_info("KEY1 long pressed\r\n");
}
if (bsp_key_get_repeat_event(BSP_KEY_ID_KEY1)) {
log_info("KEY1 repeat pressed\r\n");
}
/* WK_UP events */
if (bsp_key_get_press_event(BSP_KEY_ID_WKUP)) {
log_info("WK_UP pressed\r\n");
}
if (bsp_key_get_release_event(BSP_KEY_ID_WKUP)) {
log_info("WK_UP released\r\n");
}
if (bsp_key_get_short_press_event(BSP_KEY_ID_WKUP)) {
log_info("WK_UP short pressed\r\n");
}
if (bsp_key_get_long_press_event(BSP_KEY_ID_WKUP)) {
log_info("WK_UP long pressed\r\n");
}
if (bsp_key_get_repeat_event(BSP_KEY_ID_WKUP)) {
log_info("WK_UP repeat pressed\r\n");
}
/* Toggle LED using non-blocking timer */
if ((delay_get_tick() - led_toggle_timer) >= LED_TOGGLE_INTERVAL) {
led_toggle(&led); // Toggle the LED state
log_debug("LED toggled\r\n");
led_toggle_timer = delay_get_tick(); // Reset timer
}
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
@ -193,35 +261,7 @@ void SystemClock_Config(void)
}
}
/**
* @brief GPIO Initialization Function
* @param None
* @retval None
*/
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct = {0};
/* USER CODE BEGIN MX_GPIO_Init_1 */
/* USER CODE END MX_GPIO_Init_1 */
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOA_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6, GPIO_PIN_RESET);
/*Configure GPIO pin : PA6 */
GPIO_InitStruct.Pin = GPIO_PIN_6;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
/* USER CODE BEGIN MX_GPIO_Init_2 */
/* USER CODE END MX_GPIO_Init_2 */
}
/* USER CODE BEGIN 4 */