1.目的
串口通信,用于打印log,方便测试
2.分析
串口通信,用于打印log,方便测试
3.平台:
协议栈版本:SDK10.0.0
编译软件:keil 5.12
硬件平台:微雪开发板nrf51822
例子:SDK 10.0.0\SDK10.0\examples\ble_peripheral\ble_app_hrs\pca10028\s110\arm4
4.步骤
1.查看main()函数里面的
app_trace_init();
跳进去可以看到: 函数没有具体的内容。查看可以知道是没有定义ENABLE_DEBUG_LOG_SUPPORT
#else // ENABLE_DEBUG_LOG_SUPPORT
#define app_trace_init(...)
#define app_trace_log(...)
#define app_trace_dump(...)
#endif // ENABLE_DEBUG_LOG_SUPPORT
/** @} */
#define ENABLE_DEBUG_LOG_SUPPORT 1
3.app_trace.c里面定义 添加 #include “app_trace.h”
#include
#include
#include
#include
#include "app_trace.h" //add
void app_trace_init(void)
{
uint32_t err_code = NRF_SUCCESS;
const app_uart_comm_params_t comm_params =
{
RX_PIN_NUMBER, //定义RX脚
TX_PIN_NUMBER, //定义TX脚
RTS_PIN_NUMBER,
CTS_PIN_NUMBER,
APP_UART_FLOW_CONTROL_DISABLED, //流控关闭
false,
UART_BAUDRATE_BAUDRATE_Baud38400 //选择波特率
};
APP_UART_FIFO_INIT(&comm_params,
UART_RX_BUF_SIZE,
UART_TX_BUF_SIZE,
uart_event_handle, //uart_error_handle, 这里把uart_errror_handle改为uart_event_handle
APP_IRQ_PRIORITY_LOW,
err_code);
UNUSED_VARIABLE(err_code);
}
uart_event_handle代码如下:
void uart_event_handle(app_uart_evt_t * p_event)
{
static uint8_t data_array[20];
static uint8_t index = 0;
uint32_t err_code;
switch (p_event->evt_type)
{
case APP_UART_DATA_READY:
UNUSED_VARIABLE(app_uart_get(&data_array[index]));
//接收数据地方
printf("data_array[0]: %x \r\n",data_array[0]); //printf("data_array[1]: %x \r\n",data_array[1]);
//}
//SEGGER_RTT_printf(0,"data_array: %x \r\n",data_array[0]);
// index++;
// if ((data_array[index - 1] == '\n') || (index >= (BLE_NUS_MAX_DATA_LEN)))
// {
// err_code = ble_nus_string_send(&m_nus, data_array, index);
// if (err_code != NRF_ERROR_INVALID_STATE)
// {
// APP_ERROR_CHECK(err_code);
// }
//
// index = 0;
// }
break;
case APP_UART_COMMUNICATION_ERROR:
APP_ERROR_HANDLER(p_event->data.error_communication);
break;
case APP_UART_FIFO_ERROR:
APP_ERROR_HANDLER(p_event->data.error_code);
break;
default:
break;
}
}
主函数代码如下:
int main(void)
{
uint32_t err_code;
bool erase_bonds;
// Initialize.
app_trace_init();
timers_init();
buttons_leds_init(&erase_bonds);
ble_stack_init();
device_manager_init(erase_bonds);
gap_params_init();
advertising_init();
services_init();
sensor_simulator_init();
conn_params_init();
// Start execution.
application_timers_start();
err_code = ble_advertising_start(BLE_ADV_MODE_FAST);
APP_ERROR_CHECK(err_code);
app_trace_log("hello world");
// Enter main loop.
for (;;)
{
power_manage();
}
}
hello world
发送和接收一样
ok!!测试ok