3.24_433_RX版本:封装RF433模块,完成开机进入TX/RX模式并在开发板验证成功

This commit is contained in:
2026-03-24 16:59:20 +08:00
commit e439dd465e
1311 changed files with 692196 additions and 0 deletions

122
Core/Src/key.c Normal file
View File

@ -0,0 +1,122 @@
#include "main.h"
#define KEY_SHORT_PRESS_TIME_MS 100
typedef struct
{
uint32_t count ;
bool continue_enable;
bool is_press;
bool is_continue;
}key_config_t;
static key_config_t key_group[3] =
{
[ KEY_NAME_UP ] = {
.count = 0,
.is_press = 0,
.continue_enable = false,
.is_continue = false,
},
[ KEY_NAME_DOWN ] = {
.count = 0,
.is_press = 0,
.continue_enable = false,
.is_continue = false,
},
[ KEY_NAME_ENTER ] = {
.count = 0,
.is_press = 0,
.continue_enable = false,
.is_continue = false,
}
};
bool key_check_press( key_name_t name )
{
bool ret = false;
/* <20>ϲ<EFBFBD><CFB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѯ״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ״̬ */
ret = key_group[name].is_press;
/* <20><><EFBFBD><EFBFBD>flash<73><68><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD>δ<EFBFBD><CEB4><EFBFBD> */
key_group[name].is_press = false;
return ret;
}
void key_set_continue( key_name_t name , bool enable )
{
key_group[name].continue_enable = enable;
}
static inline void key_press( key_name_t name )
{
key_group[name].count ++;
/* <20><><EFBFBD><EFBFBD><EFBFBD>̰<EFBFBD><CCB0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD>ʱ<EFBFBD><CAB1> */
if( key_group[name].count > KEY_SHORT_PRESS_TIME_MS )
{
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹ<EFBFBD><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> */
if( key_group[name].continue_enable == false )
{
/* <20><><EFBFBD>ڵ<EFBFBD>һ<EFBFBD>ζ̰<CEB6><CCB0>´<EFBFBD><C2B4><EFBFBD><EFBFBD>ж<EFBFBD> */
if( key_group[name].is_continue == false )
{
/* <20><>ֹ<EFBFBD>´δ<C2B4><CEB4><EFBFBD> ֱ<><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͷ<EFBFBD> <20><><EFBFBD><EFBFBD>false*/
key_group[name].is_continue = true;
/* <20><>һ<EFBFBD>θ<EFBFBD><CEB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>ʶ */
key_group[name].is_press = true;
}
}
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD> */
else
{
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>±<EFBFBD>ʶ */
key_group[name].is_press = true;
/* <20><><EFBFBD>¼<EFBFBD>ʱ */
key_group[name].count = 0;
}
}
}
static inline void key_release( key_name_t name )
{
key_group[ name ].count = 0;
key_group[ name ].is_continue = false;
}
void key_timer_1ms_interrupt_callback(void)
{
if( HAL_GPIO_ReadPin( KEY_UP_GPIO_Port, KEY_UP_Pin ) == RESET )
{
key_press( KEY_NAME_UP );
}
else
{
key_release( KEY_NAME_UP );
}
if( HAL_GPIO_ReadPin( KEY_DOWN_GPIO_Port, KEY_DOWN_Pin ) == RESET )
{
key_press( KEY_NAME_DOWN );
}
else
{
key_release( KEY_NAME_DOWN );
}
if( HAL_GPIO_ReadPin( KEY_ENTER_GPIO_Port, KEY_ENTER_Pin ) == RESET )
{
key_press( KEY_NAME_ENTER );
}
else
{
key_release( KEY_NAME_ENTER );
}
}