52832 MDK代码分析之LED和按键
来源:互联网 发布:得力考勤机导出数据 编辑:程序博客网 时间:2024/05/16 17:23
on_ble_evt --> ble_evt_dispatch --> ble_stack_init -->
ble_lbs_on_button_change
static void on_write(ble_lbs_t * p_lbs, ble_evt_t * p_ble_evt) //里面包含了手机发送来的数据
{
ble_gatts_evt_write_t * p_evt_write = &p_ble_evt->evt.gatts_evt.params.write;
if ((p_evt_write->handle == p_lbs->led_char_handles.value_handle) &&
(p_evt_write->len == 1) &&
(p_lbs->led_write_handler != NULL))
{
p_lbs->led_write_handler(p_lbs, p_evt_write->data[0]);
}
}
p_evt_write->data[0] 里面包含着私有协议
//下面这两个函数的代码区别是什么??
static void on_write(ble_evt_t * p_ble_evt)
on_write --> ble_conn_params_on_ble_evt(ble_evt_t * p_ble_evt) --> ble_evt_dispatch(ble_evt_t * p_ble_evt) --> ble_stack_init -->
static void on_write(ble_lbs_t * p_lbs, ble_evt_t * p_ble_evt)
on_write --> ble_lbs_on_ble_evt(ble_lbs_t * p_lbs, ble_evt_t * p_ble_evt) --> ble_evt_dispatch(ble_evt_t * p_ble_evt) --> ble_stack_init
按键的函数分析
button_event_handler 函数的分析
button_event_handler --> buttons_init
#define BUTTON_1 13
#define BUTTON_2 14
#define BUTTON_3 15
#define BUTTON_4 16
static void buttons_init(void)
{
uint32_t err_code;
//The array must be static because a pointer to it will be saved in the button handler module.
static app_button_cfg_t buttons[] =
{
{LEDBUTTON_BUTTON_PIN, false, BUTTON_PULL, button_event_handler},
{14, false, BUTTON_PULL, button_event_handler},//根据例程添加的键值
{15, false, BUTTON_PULL, button_event_handler},
{16, false, BUTTON_PULL, button_event_handler}
};
err_code = app_button_init(buttons, sizeof(buttons) / sizeof(buttons[0]),
BUTTON_DETECTION_DELAY);
APP_ERROR_CHECK(err_code);
}
typedef struct
{
uint8_t pin_no; /**< Pin to be used as a button. */
uint8_t active_state; /**< APP_BUTTON_ACTIVE_HIGH or APP_BUTTON_ACTIVE_LOW. */
nrf_gpio_pin_pull_t pull_cfg; /**< Pull-up or -down configuration. */
app_button_handler_t button_handler; /**< Handler to be called when button is pushed. */
} app_button_cfg_t;
sd_ble_gatts_hvx(p_lbs->conn_handle, ¶ms);
--> uint32_t ble_lbs_on_button_change(ble_lbs_t * p_lbs, uint8_t button_state)
--> static void button_event_handler(uint8_t pin_no, uint8_t button_action)
LED灯的解析:
static void led_write_handler(ble_lbs_t * p_lbs, uint8_t led_state)
static void led_write_handler(ble_lbs_t * p_lbs, uint8_t led_state)
{
if (led_state)
{
// LEDS_ON(BSP_LED_2_MASK);//BSP_LED_2_MASK LEDBUTTON_LED_PIN
LEDS_ON(BSP_LED_3_MASK);
NRF_LOG_INFO("Received LED ON!\r\n");
}
else
{
// LEDS_OFF(BSP_LED_2_MASK);
LEDS_OFF(BSP_LED_3_MASK);
NRF_LOG_INFO("Received LED OFF!\r\n");
}
}
- 52832 MDK代码分析之LED和按键
- ARM9---LED和按键
- mini2440裸机试炼之--按键控制蜂鸣器和LED
- 移植LED和按键驱动
- ARM9/ARM11裸机开发笔记1之MDK开发环境和点亮LED
- LED设备驱动二之重要代码和调试问题分析
- 分析MDK启动代码__main
- MDK __main()代码执行分析
- 按键控制Led的裸奔代码
- 按键+Led
- 按键-LED
- linux设备驱动之LED驱动代码分析
- MICRO2440裸跑之按键点亮LED
- stm32初学之LED按键中断
- 4412裸机程序之按键控制LED
- FPGA学习之按键控制led
- 6825按键代码分析
- Android 按键代码分析
- recyclerview实现拖拽排序和侧滑删除
- java开发中23种设计模式
- 工业大数据漫谈2:大数据的特性
- leetcode 60. Permutation Sequence
- IDEA 专业版破解方法
- 52832 MDK代码分析之LED和按键
- C++ 选择分支结构详解
- MP3文件分析之ID3v2.3版本
- 数据库报ORA-12519;java.sql.SQLException: Listener refused the connection with the following error解决办法
- 在adapter的getview中获取图片的时候直接创建线程遇到的问题。
- PathInterpolator
- IndentationError: unindent does not match any outer indentation level
- 通过user-agent判断是支付宝还是微信
- 关于handlebars.js模板引擎