| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178 |
- #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***************************************/
|