如题:
最近使用tlsr8250 做项目,SDK B85M_SINGLE_BLE_SDK
测试使用b85m_driver_test 测试串口 使用dma或者ndam都是可以正常。
开始做项目工程,在b85m_ble_sample的例子基础上添加自己的逻辑和初始化配置函数。
刚开始,我第一个添加就是uart功能,因为这是最基础的,也方面使用。
我把b85m_driver_test uart 相关的初始化代码添加过去,还有中断处理函数。
发现调试过程中,发送可以正常,但是接收一直很不正常,有时候有,有时候没有。
我一度怀疑自己哪里弄错了,比如串口引脚选择,串口硬件接线,反复调试,还是不行。
为了消除硬件问题,我又回到driver例子去测试,发现正常。百思不得姐。
最后我从初始化出发,把driver 的 main 初始化替换sample main 初始化,我发现可以。
我知道问题在 ble初始化,导致了uart出问题,我一度怀疑是串口的引脚被占用了,检测发现并没有。幸好后面再 telink fae的的提醒下 需要关闭休眠。
把 app_config.h 文件中
#define BLE_APP_PM_ENABLE 0
#define PM_DEEPSLEEP_RETENTION_ENABLE 0
使能关闭就可以了。串口也可以正常收发了。
telink 代码说明很少,我之前 知道关闭这PM_DEEPSLEEP_RETENTION_ENABLE
但是一直不知道 BLE_APP_PM_ENABLE 也是需要关闭。
才导致这么长时间掉坑里面。
现在分享给大家。