若因__use_no_semihosting编译不过,就要检查有无错误调用,多半在SEGGER_RTT_Syscalls_KELL.c中。若用到此文件则在sdk_config.h中多加一个宏定义
// <q> RETARGET_ENABLED - retarget - Retargeting stdio functions
#ifndef RETARGET_ENABLED
#define RETARGET_ENABLED 1
#endif
(加于SLIP_ENABLED前)
log与uart不共存时,NRF_LOG_BACKEND_UART_ENABLED 值改为0
system_nrf52.c 或 system_nrf52840.c 中与寻常不同 多了include "nrf_erratas.h" 并且无定义 errata_36、errata_66、errata_98、errata_103、errata_115、errata_120、errata_136 等函数,是因为装了官方的一个有错误的pack包 8.29.0,解决方法是,将 8.29.0 移除并删除,关闭 keil 工程并在该路径下删除 _build、RTE文件夹及 ble_app_uart_pca10056_s140.uvguix.June6 用户文件。重新打开后工程里的 system_nrf52.c 或 system_nrf52840.c 即可恢复正常