#include "button.h" #define BTN1 GET_PIN(E, 6) #define BTN2 GET_PIN(I, 8) /** ****************************************************************** Variable declaration ****************************************************************** */ Button_t Button1; Button_t Button2; /** ****************************************************************** Function declaration ****************************************************************** */ uint8_t Btn1_Level(void) { return rt_pin_read(BTN1); } void Btn1_Click_CallBack(void *btn) { LOG_I("Button1 Click!"); } void Btn1_Dowm_CallBack(void *btn) { LOG_I("Button1 Down!"); } void Btn1_Up_CallBack(void *btn) { LOG_I("Button1 Release!"); } void Btn1_Double_CallBack(void *btn) { LOG_I("Button1 Double click!"); } void Btn1_Long_CallBack(void *btn) { LOG_I("Button1 Long press!"); } void Btn1_Continuos_CallBack(void *btn) { LOG_I("Button1 Press continuously!"); } void Btn1_ContinuosFree_CallBack(void *btn) { LOG_I("Button1 Press continuously free!"); } uint8_t Btn2_Level(void) { return rt_pin_read(BTN2); } void Btn2_Click_CallBack(void *btn) { LOG_I("Button2 Click!"); } void Btn2_Dowm_CallBack(void *btn) { LOG_I("Button2 Down!"); } void Btn2_Up_CallBack(void *btn) { LOG_I("Button2 Release!"); } void Btn2_Double_CallBack(void *btn) { LOG_I("Button2 Double click!"); } void Btn2_Long_CallBack(void *btn) { LOG_I("Button2 Long press!"); } void Btn2_Continuos_CallBack(void *btn) { LOG_I("Button2 Press continuously!"); } void Btn2_ContinuosFree_CallBack(void *btn) { LOG_I("Button2 Press continuously free!"); } /** ****************************************************************** * @brief main * @author jiejie * @version V1.0 * @date 2018-xx-xx ****************************************************************** */ void Button_Task(void *param) { /* button run */ rt_pin_mode(BTN1, PIN_MODE_INPUT); rt_pin_mode(BTN2, PIN_MODE_INPUT); /* button input1 */ gpio_init_structure.Pin = GPIO_PIN_8; gpio_init_structure.Mode = GPIO_MODE_INPUT; gpio_init_structure.Pull = GPIO_PULLUP; gpio_init_structure.Speed = GPIO_SPEED_HIGH; __HAL_RCC_GPIOI_CLK_ENABLE(); HAL_GPIO_Init(GPIOI, &gpio_init_structure); Button_Create("Button1", &Button1, Btn1_Level, KEY_ON); Button_Attach(&Button1,BUTTON_CLICK,Btn1_Click_CallBack); //Click Button_Attach(&Button1,BUTTON_DOWM,Btn1_Dowm_CallBack); //Down Button_Attach(&Button1,BUTTON_UP,Btn1_Up_CallBack); //Release Button_Attach(&Button1,BUTTON_DOUBLE,Btn1_Double_CallBack); //Double click Button_Attach(&Button1,BUTTON_CONTINUOS,Btn1_Continuos_CallBack); //Press continuously Button_Attach(&Button1,BUTTON_CONTINUOS_FREE,Btn1_ContinuosFree_CallBack); //Press continuously free Button_Attach(&Button1,BUTTON_LONG,Btn1_Long_CallBack); //Long press Button_Create("Button2", &Button2, Btn2_Level, KEY_ON); Button_Attach(&Button2,BUTTON_CLICK,Btn2_Click_CallBack); //Click Button_Attach(&Button2,BUTTON_DOWM,Btn2_Dowm_CallBack); //Down Button_Attach(&Button2,BUTTON_UP,Btn2_Up_CallBack); //Release Button_Attach(&Button2,BUTTON_DOUBLE,Btn2_Double_CallBack); //Double click Button_Attach(&Button2,BUTTON_CONTINUOS,Btn2_Continuos_CallBack); //Press continuously Button_Attach(&Button2,BUTTON_CONTINUOS_FREE,Btn2_ContinuosFree_CallBack); //Press continuously free Button_Attach(&Button2,BUTTON_LONG,Btn2_Long_CallBack); //Long press Get_Button_Event(&Button1); Get_Button_Event(&Button2); while(1) { Button_Process(); //Need to call the button handler function periodically Delay_ms(20); } } /** ****************************************************************** * @brief BSP_Init * @author jiejie * @version V1.0 * @date 2018-xx-xx ****************************************************************** */ static void Button_Init(void) { rt_thread_t thread; thread = rt_thread_create("button", Button_Task, NULL, 512, 20, 20); } INIT_APP_EXPORT(Button_Init); /********************************END OF FILE***************************************/