Skip to content

Commit 78a5a45

Browse files
committed
Add debounce timer (which is not used yet)
1 parent 65b7136 commit 78a5a45

File tree

4 files changed

+47
-4
lines changed

4 files changed

+47
-4
lines changed

BOX/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
__Previews

FW/Inc/mp3_player.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ void vtask_blink(void* vparameters);
2626
void vtask_hmi(void* vparameters);
2727

2828
void vtimer_backlight(TimerHandle_t xTimer);
29+
void vtimer_debounce(TimerHandle_t xTimer);
2930

3031
/**
3132
* \brief mp3 player command

FW/Src/hal_callbacks.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ extern SemaphoreHandle_t dreq_sem,
2626
sdio_rx_dma_sem;
2727
extern struct controller_qlist* qlist; /* queue list for all tasks */
2828

29-
extern TimerHandle_t bl_tim; /* backlight timer handle */
29+
extern TimerHandle_t bl_tim, /* backlight timer handle */
30+
gpio_tim; /* gpio debouncer */
3031
extern QueueHandle_t hw_queue; /* event and commands from hw */
3132

3233
#if (configUSE_TRACE_FACILITY == 1)
@@ -44,7 +45,7 @@ void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
4445
{
4546
portBASE_TYPE taskWoken = pdFALSE;
4647
static uint8_t vol = INIT_VOLUME;
47-
uint32_t event;
48+
static uint32_t event;
4849

4950
#if (configUSE_TRACE_FACILITY == 1)
5051
vTraceStoreISRBegin(exti0_handle);

FW/Src/mp3_player.c

Lines changed: 42 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
/* Global variable */
2828
SemaphoreHandle_t dreq_sem, /* vs10xx dreq IRQ */
2929
spi_tx_dma_sem; /* spi1_tx DMA compelete */
30-
TimerHandle_t bl_tim; /* backlight timer handle */
30+
TimerHandle_t bl_tim, /* backlight timer handle */
31+
gpio_tim; /* gpio debouncer */
3132
struct controller_qlist* qlist; /* queue list for all tasks */
3233
QueueHandle_t hw_queue; /* event and commands from hw */
3334

@@ -49,7 +50,7 @@ void vsmp3_init(void *vparameters)
4950
vsmp3_create_tasks(qlist);
5051

5152
/* create queue for HW events */
52-
hw_queue = xQueueCreate(5, sizeof(int));
53+
hw_queue = xQueueCreate(1, sizeof(int));
5354
configASSERT(hw_queue);
5455

5556
/* create backlight timer */
@@ -61,6 +62,14 @@ void vsmp3_init(void *vparameters)
6162
configASSERT(bl_tim);
6263
xTimerStart(bl_tim, portMAX_DELAY);
6364

65+
/* create gpio debouncer timer*/
66+
gpio_tim = xTimerCreate("gpio",
67+
pdMS_TO_TICKS(150),
68+
pdFALSE,
69+
0,
70+
vtimer_debounce);
71+
configASSERT(gpio_tim);
72+
6473
/* debug */
6574
debug_print("task creation done\r\n");
6675

@@ -410,4 +419,35 @@ void vtimer_backlight(TimerHandle_t xTimer)
410419
/* when expire, turn off backlight */
411420
HAL_GPIO_WritePin(BL_PWM_GPIO_Port,BL_PWM_Pin, GPIO_PIN_RESET);
412421
}
422+
423+
/**
424+
* \brief: GPIO debounce timer
425+
*/
426+
void vtimer_debounce(TimerHandle_t xTimer)
427+
{
428+
uint32_t gpio_index;
429+
gpio_index = (uint32_t) pvTimerGetTimerID(xTimer);
430+
switch(gpio_index) {
431+
case KEY1_Pin:
432+
if(HAL_GPIO_ReadPin(KEY1_GPIO_Port, KEY1_Pin) == GPIO_PIN_RESET) {
433+
debug_print("KEY%d pressed\r\n",gpio_index);
434+
}
435+
break;
436+
437+
case KEY2_Pin:
438+
if(HAL_GPIO_ReadPin(KEY2_GPIO_Port, KEY2_Pin) == GPIO_PIN_RESET) {
439+
debug_print("KEY%d pressed\r\n",gpio_index);
440+
}
441+
break;
442+
443+
case KEY3_Pin:
444+
if(HAL_GPIO_ReadPin(KEY3_GPIO_Port, KEY3_Pin) == GPIO_PIN_RESET) {
445+
debug_print("KEY%d pressed\r\n",gpio_index);
446+
}
447+
break;
448+
449+
default:
450+
break;
451+
} /* switch(gpio_index) */
452+
}
413453
/* end of file */

0 commit comments

Comments
 (0)