BSP按键
原理:通过APP软件定时器和gpiote(IO中断)输入实现
1.先调用bsp_init初始化按键和LED灯,并提供回调函数。默认会根据按键动作(长,短按,释放等)给按键分配事件
2.bsp_btn_ble_init初始化BLE按键模块(APP按键和BLE事件关联起来,BLE按键是在APP按键封装的,如果设置了某个按键BLE事件则不能设置为APP按键)
3.功耗问题,使用gpiote port和低频时钟,也就是低精度,无法跟踪高速引脚的变化,但是对于按键来说已经足够了
4.不支持多个按键并发,只支持独立按键
5.配置,按键个数,中断优先级,使能button,不使能高精度gpiote(高精度最大8个,port则无限制),port相当于32个pin公用通道,在detect上升沿产生
6.支持默认状态下为高/低电平
6.如果只需要长按,则配置长按事件,短按和释放配置为BSP_EVENT_NOTHING。应用程序只能分辨事件,不能判断该事件是哪个按键产生的,所以分配的时候要注意
7.可以在bsp_btn_ble_init之前自己分配事件,此时是APP按钮,也可以在bsp_btn_ble_init里面的advertising_buttons_configure里面分配
8.长按和短按的分离,因为长按会触发短按,所以需要重新分配,方法一就是把默认分配注释掉(它里面给所有的按键都分配了短按事件,具体看按键和led初始化函数,以及分配函数),方法二就是长按按键的短按分配BSP_EVENT_NOTHING