From 0e2eb6abd5246772b3f54dd32ee5a555feef1916 Mon Sep 17 00:00:00 2001 From: MurphyZhao Date: Fri, 14 Feb 2020 18:25:02 +0800 Subject: [PATCH] [fix] fix grammar bug, and fix tencent evb mx+ key mismatch problem [update] change dirs and add examples directory Signed-off-by: MurphyZhao --- README.md | 4 +- SConscript | 2 +- .../demo_rtt_iotboard.c | 11 ++- .../demo_tos_evb_mx_plus.c | 78 +++++++++++-------- 4 files changed, 57 insertions(+), 38 deletions(-) rename flexible_button_demo.c => examples/demo_rtt_iotboard.c (91%) rename flexible_button_tencentos_tiny_demo.c => examples/demo_tos_evb_mx_plus.c (76%) diff --git a/README.md b/README.md index 49925f1..cebc90c 100644 --- a/README.md +++ b/README.md @@ -35,7 +35,7 @@ ARMCC -O0 优化的情况下,FlexibleButton 资源占用如下: ## 快速体验 -FlexibleButton 库中提供了一个测试例程 [`./flexible_button_demo.c`](./flexible_button_demo.c),该例程基于 RT-Thread OS 进行测试,硬件平台选择了 *RT-Thread IoT Board Pandora v2.51* 开发板。当然你可以选择使用其他的 OS,或者使用裸机测试,只需要移除 OS 相关的特性即可。 +FlexibleButton 库中提供了一个测试例程 [`./examples/demo_rtt_iotboard.c`](./examples/demo_rtt_iotboard.c),该例程基于 RT-Thread OS 进行测试,硬件平台选择了 *RT-Thread IoT Board Pandora v2.51* 开发板。当然你可以选择使用其他的 OS,或者使用裸机测试,只需要移除 OS 相关的特性即可。 如果你使用自己的硬件平台,只需要将 FlexibleButton 库源码和例程加入你既有的工程下即可。 @@ -294,7 +294,7 @@ void flex_button_scan(void); ### 关于组合按键 -该按键库仅做了底层的按键扫描处理,一次扫描可以确定所有的按键状态,并上报对应的按键事件,如果需要支持组合按键,请再封一层,根据按键库返回的事件封装需要的组合按键。[示例程序](./flexible_button_demo.c)提供了简单的实现。 +该按键库仅做了底层的按键扫描处理,一次扫描可以确定所有的按键状态,并上报对应的按键事件,如果需要支持组合按键,请再封一层,根据按键库返回的事件封装需要的组合按键。[示例程序](./examples/demo_rtt_iotboard.c)提供了简单的实现。 ### 关于矩阵键盘 diff --git a/SConscript b/SConscript index 8960f0b..14658be 100644 --- a/SConscript +++ b/SConscript @@ -11,7 +11,7 @@ flexible_button.c ''') if GetDepend(['PKG_USING_FLEXIBLE_BUTTON_DEMO']): - src += Glob("flexible_button_demo.c") + src += Glob("examples/demo_rtt_iotboard.c") CPPPATH = [cwd] diff --git a/flexible_button_demo.c b/examples/demo_rtt_iotboard.c similarity index 91% rename from flexible_button_demo.c rename to examples/demo_rtt_iotboard.c index d7e5954..31b021a 100644 --- a/flexible_button_demo.c +++ b/examples/demo_rtt_iotboard.c @@ -1,5 +1,5 @@ /** - * @File: flexible_button_demo.c + * @File: demo_rtt_iotboard.c * @Author: MurphyZhao * @Date: 2018-09-29 * @@ -20,10 +20,16 @@ * See the License for the specific language governing permissions and * limitations under the License. * + * message: + * This demo is base on rt-thread IoT Board, reference + * https://github.com/RT-Thread/IoT_Board + * Hardware version: RT-Thread IoT Board Pandora v2.51. + * * Change logs: * Date Author Notes * 2018-09-29 MurphyZhao First add * 2019-08-02 MurphyZhao Migrate code to github.com/murphyzhao account + * 2020-02-14 MurphyZhao Fix grammar bug */ #include @@ -119,7 +125,8 @@ static void common_btn_evt_cb(void *arg) btn->event, enum_event_string[btn->event], btn->click_cnt); - if (flex_button_event_read(&user_button[USER_BUTTON_0]) == flex_button_event_read(&user_button[USER_BUTTON_1]) == FLEX_BTN_PRESS_CLICK) + if ((flex_button_event_read(&user_button[USER_BUTTON_0]) == FLEX_BTN_PRESS_CLICK) &&\ + (flex_button_event_read(&user_button[USER_BUTTON_1]) == FLEX_BTN_PRESS_CLICK)) { rt_kprintf("[combination]: button 0 and button 1\n"); } diff --git a/flexible_button_tencentos_tiny_demo.c b/examples/demo_tos_evb_mx_plus.c similarity index 76% rename from flexible_button_tencentos_tiny_demo.c rename to examples/demo_tos_evb_mx_plus.c index ee233a8..cdddb8c 100644 --- a/flexible_button_tencentos_tiny_demo.c +++ b/examples/demo_tos_evb_mx_plus.c @@ -1,5 +1,5 @@ /** - * @File: flexible_button_demo.c + * @File: demo_tos_evb_mx_plus.c * @Author: MurphyZhao * @Date: 2018-09-29 * @@ -20,17 +20,22 @@ * See the License for the specific language governing permissions and * limitations under the License. * + * message: + * This demo is base on TencentOSTiny EVB_MX+, reference + * https://github.com/Tencent/TencentOS-tiny + * Hardware: TencentOSTiny EVB_MX+. + * * Change logs: * Date Author Notes - * 2018-09-29 MurphyZhao First add - * 2019-08-02 MurphyZhao Migrate code to github.com/murphyzhao account + * 2020-01-20 MurphyZhao First add + * 2020-02-14 MurphyZhao Fix Key mismatch problem and fix grammar bug */ +#include "stdio.h" #include "mcu_init.h" #include "cmsis_os.h" -#include "stm32l4xx_hal.h" -#include "stdio.h" +#include "main.h" #include "flexible_button.h" @@ -38,34 +43,34 @@ static void button_scan(void *arg); osThreadDef(button_scan, osPriorityNormal, 1, FLEXIBLE_BTN_STK_SIZE); -#ifndef PIN_KEY1 -#define PORT_KEY1 GPIOB -#define PIN_KEY1 GPIO_PIN_12 // PB12 +#ifndef PIN_KEY4 +#define PORT_KEY4 GPIOB +#define PIN_KEY4 GPIO_PIN_12 // PB12 #endif -#ifndef PIN_KEY2 -#define PORT_KEY2 GPIOB -#define PIN_KEY2 GPIO_PIN_2 // PB2 +#ifndef PIN_KEY3 +#define PORT_KEY3 GPIOB +#define PIN_KEY3 GPIO_PIN_2 // PB2 #endif -#ifndef PIN_KEY3 -#define PORT_KEY3 GPIOC -#define PIN_KEY3 GPIO_PIN_10 // PC10 +#ifndef PIN_KEY2 +#define PORT_KEY2 GPIOC +#define PIN_KEY2 GPIO_PIN_10 // PC10 #endif -#ifndef PIN_KEY4 -#define PORT_KEY4 GPIOB -#define PIN_KEY4 GPIO_PIN_13 // PB13 +#ifndef PIN_KEY1 +#define PORT_KEY1 GPIOB +#define PIN_KEY1 GPIO_PIN_13 // PB13 #endif #define ENUM_TO_STR(e) (#e) typedef enum { - USER_BUTTON_0 = 0, - USER_BUTTON_1, + USER_BUTTON_1 = 0, USER_BUTTON_2, USER_BUTTON_3, + USER_BUTTON_4, USER_BUTTON_MAX } user_button_t; @@ -85,10 +90,10 @@ static char *enum_event_string[] = { }; static char *enum_btn_id_string[] = { - ENUM_TO_STR(USER_BUTTON_0), - ENUM_TO_STR(USER_BUTTON_1), - ENUM_TO_STR(USER_BUTTON_2), - ENUM_TO_STR(USER_BUTTON_3), + ENUM_TO_STR(F1), + ENUM_TO_STR(F2), + ENUM_TO_STR(F3), + ENUM_TO_STR(F4), ENUM_TO_STR(USER_BUTTON_MAX), }; @@ -102,17 +107,17 @@ static uint8_t common_btn_read(void *arg) switch (btn->id) { - case USER_BUTTON_0: - value = HAL_GPIO_ReadPin(PORT_KEY1, PIN_KEY1); - break; case USER_BUTTON_1: - value = HAL_GPIO_ReadPin(PORT_KEY2, PIN_KEY2);; + value = HAL_GPIO_ReadPin(PORT_KEY1, PIN_KEY1); break; case USER_BUTTON_2: - value = HAL_GPIO_ReadPin(PORT_KEY3, PIN_KEY3);; + value = HAL_GPIO_ReadPin(PORT_KEY2, PIN_KEY2); break; case USER_BUTTON_3: - value = HAL_GPIO_ReadPin(PORT_KEY4, PIN_KEY4);; + value = HAL_GPIO_ReadPin(PORT_KEY3, PIN_KEY3); + break; + case USER_BUTTON_4: + value = HAL_GPIO_ReadPin(PORT_KEY4, PIN_KEY4); break; default: break; @@ -130,9 +135,10 @@ static void common_btn_evt_cb(void *arg) btn->event, enum_event_string[btn->event], btn->click_cnt); - if (flex_button_event_read(&user_button[USER_BUTTON_0]) == flex_button_event_read(&user_button[USER_BUTTON_1]) == FLEX_BTN_PRESS_CLICK) + if ((flex_button_event_read(&user_button[USER_BUTTON_1]) == FLEX_BTN_PRESS_CLICK) &&\ + (flex_button_event_read(&user_button[USER_BUTTON_2]) == FLEX_BTN_PRESS_CLICK)) { - printf("[combination]: button 0 and button 1\r\n"); + printf("[combination]: button 1 and button 2\r\n"); } } @@ -155,12 +161,12 @@ static void user_button_init(void) __HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_RCC_GPIOC_CLK_ENABLE(); - GPIO_InitStruct.Pin = PIN_KEY1 | PIN_KEY2 | PIN_KEY4; + GPIO_InitStruct.Pin = PIN_KEY1 | PIN_KEY3 | PIN_KEY4; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOB, &GPIO_InitStruct); - GPIO_InitStruct.Pin = PIN_KEY3; + GPIO_InitStruct.Pin = PIN_KEY2; GPIO_InitStruct.Mode = GPIO_MODE_INPUT; GPIO_InitStruct.Pull = GPIO_PULLUP; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); @@ -179,6 +185,12 @@ static void user_button_init(void) } } +/** + * flex_button_main + * + * @brief please call this function in application. + * +*/ int flex_button_main(void) { user_button_init();