在开发nrf52832主要遇到如下问题。但仍然有printf重定向问题未解决。因不影响项目使用。先把过程记录下来。方便日后翻阅。
NRF52832的串口有一个例程:
nRF5_SDK_15.2.0_9412b96\examples\peripheral\uart\pca10040\blank\ses
串口有普通的uart和使用TE的uart。TE就是TASK and event。是IC内部的一个工作机制。将事件和任务关联起来。目的是快速响应。两种串口使用的初始化函数不同。
如下是例程的串口初始化代码
const app_uart_comm_params_t comm_params =
{
RX_PIN_NUMBER,
TX_PIN_NUMBER,
RTS_PIN_NUMBER,
CTS_PIN_NUMBER,
UART_HWFC,
false,
#if defined (UART_PRESENT)
NRF_UART_BAUDRATE_115200
#else
NRF_UARTE_BAUDRATE_115200
#endif
};
APP_UART_FIFO_INIT(&comm_params,
UART_RX_BUF_SIZE,
UART_TX_BUF_SIZE,
uart_error_handle,
APP_IRQ_PRIORITY_LOWEST,
err_code);
1.若要使用普通模式,需要在main函数中加入这句
2. sdk_config.h的配置NRF_LOG_BACKEND_UART_ENABLED宏需要设置为0.否则初始化的时候会返回NRF_ERROR_INVALID_STATE 错误。表示外设已经初始化了一次了。
-
增加编译文件和增加头文件。注意这个库使用到了fifo组件。所以需要包含进这个fifo组件和头文件
-
上面改好后。就可以使用函数app_uart_get(), app_uart_put()实现收发。
printf不知道为何从RTT输出,不从串口输出。查了下nordic的论坛,尚未找到对症的答案。先放着先。