在app_config.h中添加如下代码
#ifndef UART_PRINT_DEBUG_ENABLE
#define UART_PRINT_DEBUG_ENABLE 1
#endif
/// PRINT DEBUG INFO ///
#if (UART_PRINT_DEBUG_ENABLE)
#define PRINT_BAUD_RATE 115200
#define DEBUG_INFO_TX_PIN GPIO_PC2
#define PULL_WAKEUP_SRC_PC2 PM_PIN_PULLUP_10K
#define PC2_OUTPUT_ENABLE 1
#define PC2_DATA_OUT 1 //must
#endif
注意:官方的参考手册写的是PA0,我将其改成了PC2,请注意修改的位置
从串口打印的数据来看,每隔5秒打印一次,这里应该和蓝牙的广播间隔有关。当连接蓝牙后,这个位置是不会打印。有知道为什么的小伙伴解答一下!!!
增加调试打印的一些信息:
/*
* mat_log.h
*
* Created on: 2022-8-16
*
*/
#ifndef MAT_LOG_H
#define MAT_LOG_H
#include "tl_common.h"
#define DEBUG 1
#define ERR 1
#define INFO 1
#if INFO
#define LOG_INFO(str, ...) printf("[INFO]:"str "\r\n", ##__VA_ARGS__)
#else
#define LOG_INFO(str, ...)
#endif
#if ERR
#define LOG_ERR(str, ...) printf("[ERR]:"str "\r\n", ##__VA_ARGS__)
#else
#define LOG_ERR(str, ...)
#endif
#if DEBUG
#define LOG_DEBUG(str, ...) printf("[DEBUG]:"str "\r\n", ##__VA_ARGS__)
#else
#define LOG_DEBUG(str, ...)
#endif
#endif
关于上诉问题的解答:
为什么在while(1)中的数据打印会如此的慢,其实是因为在蓝牙demo中,蓝牙会休眠所导致的,请参考IIC那一章关闭休眠的方法:Tlsr8258开发-IIC_他日仙界再相逢,一声道友尽沧桑的博客-CSDN博客
/*
*在app.c中有这么一个函数,这里休眠时间在30ms,这样就所以160 * 30 = 4800ms,和上面打印的数据相吻合
*/
void ble_remote_set_sleep_wakeup (u8 e, u8 *p, int n)
{
if( blc_ll_getCurrentState() == BLS_LINK_STATE_CONN && ((u32)(bls_pm_getSystemWakeupTick() - clock_time())) > 80 * SYSTEM_TIMER_TICK_1MS){ //suspend time > 30ms.add gpio wakeup
bls_pm_setWakeupSource(PM_WAKEUP_PAD); //gpio pad wakeup suspend/deepsleep
}
}