3.最初的项目
3.1.应用回调user_app_main_loop_callbacks结构user_callback_config.h如下:
静态常量结构体arch_main_loop_callbacksuser_app_main_loop_callbacks={.app_on_init=user_on_init,//默认情况下,看门狗定时器在系统唤醒时重新加载并恢复。//用户必须考虑看门狗定时器的处理(保持它运行,//冻结它,重新加载它,恢复它,等等),当app_on_ble_powered()正在//调用,并可能潜在地影响主循环。.app_on_ble_powered=零,//默认情况下,看门狗定时器在系统唤醒时重新加载并恢复。//用户必须考虑看门狗定时器的处理(保持它运行,//冻结它,重新加载它,恢复它,等等),当app_on_system_powered()正在//调用,并可能潜在地影响主循环。.app_on_system_powered=零,.app_before_sleep=零,.app_validate_sleep=零,.app_going_to_sleep=零,.app_resume_from_sleep=零,};
我们还需要添加一些蓝牙堆栈回调,来做这个修改user_app_callbacks
结构user_callback_config.h如下:
静态常量结构体app_callbacksuser_app_callbacks={.app_on_connection=user_on_connection,.app_on_disconnect=user_on_disconnect,.app_on_update_params_rejected=零,.app_on_update_params_complete=零,.app_on_set_dev_config_complete=user_on_set_dev_config_complete,.app_on_adv_nonconn_complete=零,.app_on_adv_undirect_complete=零,.app_on_adv_direct_complete=零,.app_on_db_init_complete=default_app_on_db_init_complete,.app_on_scanning_completed=零,.app_on_adv_report_ind=零,.app_on_get_dev_name=default_app_on_get_dev_name,.app_on_get_dev_appearance=default_app_on_get_dev_appearance,.app_on_get_dev_slv_pref_params=default_app_on_get_dev_slv_pref_params,.app_on_set_dev_info=default_app_on_set_dev_info,.app_on_data_length_change=零,.app_on_update_params_request=default_app_update_params_request,.app_on_generate_static_random_addr=default_app_generate_static_random_addr,.app_on_svc_changed_cfg_ind=零,.app_on_get_peer_features=零,#如果(BLE_APP_SEC).app_on_pairing_request=default_app_on_pairing_request,.app_on_tk_exch=default_app_on_tk_exch,.app_on_irk_exch=零,.app_on_csrk_exch=零,.app_on_ltk_exch=default_app_on_ltk_exch,.app_on_pairing_succeeded=零,.app_on_encrypt_ind=零,.app_on_encrypt_req_ind=零,.app_on_security_req_ind=零,.app_on_addr_solved_ind=零,.app_on_addr_resolve_failed=零,.app_on_ral_cmp_evt=零,.app_on_ral_size_ind=零,.app_on_ral_addr_ind=零,# endif/ / (BLE_APP_SEC)};
然后我们需要为新的回调函数添加函数原型user_empty_peripheral_template.h如下:
无效user_on_init(无效);无效user_on_set_dev_config_complete(无效);
最后,我们需要添加实际的用户空间回调函数user_empty_peripheral_template.c如下:
无效user_on_init(无效){arch_printf("r \ n \% s”,__FUNCTION__);default_app_on_init();}无效user_on_set_dev_config_complete(无效){arch_printf("r \ n \% s”,__FUNCTION__);default_app_on_set_dev_config_complete();}
静态常量结构体arch_main_loop_callbacksuser_app_main_loop_callbacks={.app_on_init=user_on_init,//默认情况下,看门狗定时器在系统唤醒时重新加载并恢复。//用户必须考虑看门狗定时器的处理(保持它运行,//冻结它,重新加载它,恢复它,等等),当app_on_ble_powered()正在//调用,并可能潜在地影响主循环。.app_on_ble_powered=零,//默认情况下,看门狗定时器在系统唤醒时重新加载并恢复。//用户必须考虑看门狗定时器的处理(保持它运行,//冻结它,重新加载它,恢复它,等等),当app_on_system_powered()正在//调用,并可能潜在地影响主循环。.app_on_system_powered=零,.app_before_sleep=零,.app_validate_sleep=零,.app_going_to_sleep=零,.app_resume_from_sleep=零,};
我们还需要添加一些蓝牙堆栈回调,来做这个修改user_app_callbacks
结构user_callback_config.h如下:
静态常量结构体app_callbacksuser_app_callbacks={.app_on_connection=user_on_connection,.app_on_disconnect=user_on_disconnect,.app_on_update_params_rejected=零,.app_on_update_params_complete=零,.app_on_set_dev_config_complete=user_on_set_dev_config_complete,.app_on_adv_nonconn_complete=零,.app_on_adv_undirect_complete=零,.app_on_adv_direct_complete=零,.app_on_db_init_complete=default_app_on_db_init_complete,.app_on_scanning_completed=零,.app_on_adv_report_ind=零,.app_on_get_dev_name=default_app_on_get_dev_name,.app_on_get_dev_appearance=default_app_on_get_dev_appearance,.app_on_get_dev_slv_pref_params=default_app_on_get_dev_slv_pref_params,.app_on_set_dev_info=default_app_on_set_dev_info,.app_on_data_length_change=零,.app_on_update_params_request=default_app_update_params_request,.app_on_generate_static_random_addr=default_app_generate_static_random_addr,.app_on_svc_changed_cfg_ind=零,.app_on_get_peer_features=零,#如果(BLE_APP_SEC).app_on_pairing_request=default_app_on_pairing_request,.app_on_tk_exch=default_app_on_tk_exch,.app_on_irk_exch=零,.app_on_csrk_exch=零,.app_on_ltk_exch=default_app_on_ltk_exch,.app_on_pairing_succeeded=零,.app_on_encrypt_ind=零,.app_on_encrypt_req_ind=零,.app_on_security_req_ind=零,.app_on_addr_solved_ind=零,.app_on_addr_resolve_failed=零,.app_on_ral_cmp_evt=零,.app_on_ral_size_ind=零,.app_on_ral_addr_ind=零,# endif/ / (BLE_APP_SEC)};
然后我们需要为新的回调函数添加函数原型user_empty_peripheral_template.h如下:
无效user_on_init(无效);无效user_on_set_dev_config_complete(无效);
最后,我们需要添加实际的用户空间回调函数user_empty_peripheral_template.c如下:
无效user_on_init(无效){arch_printf("r \ n \% s”,__FUNCTION__);default_app_on_init();}无效user_on_set_dev_config_complete(无效){arch_printf("r \ n \% s”,__FUNCTION__);default_app_on_set_dev_config_complete();}
3.2.睡眠模式app_default_sleep_mode在user_config.h如下:
静态常量sleep_state_tapp_default_sleep_mode=ARCH_EXT_SLEEP_ON;
静态常量sleep_state_tapp_default_sleep_mode=ARCH_EXT_SLEEP_ON;
3.4.串口调试
3.4.1。使能串口# undefCFG_PRINTF语句,并将其更改为:
#定义CFG_PRINTF
请注意
有两个# undefCFG_PRINTF
文件中的语句,一个用于DA14585/6,一个用于DA14531,请确保更改一个与您正在处理的设备相关的语句!
在user_periph_setup.h将DA14531 devkit PRO和USB作为UART发送输出的GPIO修改为P0_5,如下所示:
#定义UART2_TX_PIN GPIO_PIN_5
这将自动为UART TX选择和配置适当的GPIOuser_empty_peripheral_template.c:
# include“arch_console.h”
我们现在可以使用以下函数:
arch_puts ()
,以通过UART传输简单的字符串
arch_printf ()
,通过UART格式化和传输字符串
#定义CFG_PRINTF
请注意
有两个# undefCFG_PRINTF
文件中的语句,一个用于DA14585/6,一个用于DA14531,请确保更改一个与您正在处理的设备相关的语句!
在user_periph_setup.h将DA14531 devkit PRO和USB作为UART发送输出的GPIO修改为P0_5,如下所示:
#定义UART2_TX_PIN GPIO_PIN_5
这将自动为UART TX选择和配置适当的GPIOuser_empty_peripheral_template.c:
# include“arch_console.h”
我们现在可以使用以下函数:
arch_puts ()
,以通过UART传输简单的字符串arch_printf ()
,通过UART格式化和传输字符串