930电子网

 找回密码
 立即注册
艾克姆科技推出最新产品STC32G12K128开发板
查看: 20727|回复: 4

printf如何通过uart打印log到串口?

[复制链接]

13

主题

23

帖子

177

积分

注册会员

Rank: 2

积分
177
发表于 2020-11-26 14:46:31 | 显示全部楼层 |阅读模式

printf如何通过uart打印到串口?
下面是主要函数,函数已经做了uart相关配置,com口和波特率连接正确(用其它例程验证过),但是串口就是无法打印出log,求大神指导~

//串口事件回调函数,该函数中判断事件类型并进行处理
void uart_error_handle(app_uart_evt_t * p_event)
{
    //通讯错误事件
    if (p_event->evt_type == APP_UART_COMMUNICATION_ERROR)
    {
        APP_ERROR_HANDLER(p_event->data.error_communication);
    }
    //FIFO错误事件
    else if (p_event->evt_type == APP_UART_FIFO_ERROR)
    {
        APP_ERROR_HANDLER(p_event->data.error_code);
    }
}
//串口配置
void uart_config(void)
{
        uint32_t err_code;
        //定义串口通讯参数配置结构体并初始化
  const app_uart_comm_params_t comm_params =
  {
    RX_PIN_NUMBER,//定义uart接收引脚
    TX_PIN_NUMBER,//定义uart发送引脚
    RTS_PIN_NUMBER,//定义uart RTS引脚,
    CTS_PIN_NUMBER,//定义uart CTS引脚
    APP_UART_FLOW_CONTROL_DISABLED,//关闭uart硬件流控
    false,//禁止奇偶检验
    NRF_UART_BAUDRATE_115200//uart波特率设置为115200bps
  };
  //初始化串口,注册串口事件回调函数
  APP_UART_FIFO_INIT(&comm_params,
                         UART_RX_BUF_SIZE,
                         UART_TX_BUF_SIZE,
                         uart_error_handle,
                         APP_IRQ_PRIORITY_LOWEST,
                         err_code);
  APP_ERROR_CHECK(err_code);
}

int main(void)
{
        /* UART初始化 */
        uart_config();
        nrf_delay_ms(2000);

        printf("uart init sucess\r\n");  //就是这个简单的log,串口愣是打印不出来

        return 1;
}
}

回复

使用道具 举报

52

主题

354

帖子

6545

积分

版主

Rank: 7Rank: 7Rank: 7

积分
6545
发表于 2020-11-26 15:04:47 | 显示全部楼层
1:将retarget.c文件添加到工程。
2:sdk_config.h里面勾选“RETARGET_ENABLED”。
回复 支持 反对

使用道具 举报

13

主题

23

帖子

177

积分

注册会员

Rank: 2

积分
177
 楼主| 发表于 2020-11-26 15:38:30 | 显示全部楼层
强光手电 发表于 2020-11-26 15:04
1:将retarget.c文件添加到工程。
2:sdk_config.h里面勾选“RETARGET_ENABLED”。


这个retarget.c工程里原来就有,“RETARGET_ENABLED”这个选项灭有找到,在哪里?其它带有UART的都勾选了

sdk_config.h有下面这一段:
// <q> RETARGET_ENABLED  - retarget - Retargeting stdio functions
#ifndef RETARGET_ENABLED
#define RETARGET_ENABLED 1
#endif

是我的sdk_config.h 文件少东西了吗?

回复 支持 反对

使用道具 举报

52

主题

354

帖子

6545

积分

版主

Rank: 7Rank: 7Rank: 7

积分
6545
发表于 2020-11-26 15:50:46 | 显示全部楼层
pengyanxin 发表于 2020-11-26 15:38
这个retarget.c工程里原来就有,“RETARGET_ENABLED”这个选项灭有找到,在哪里?其它带有UART的都勾选 ...

这是对的,有这个就可以了。把你的程序改成下面这样测试:
  1. while(true)  
  2. {  
  3.     //串口输出字母A
  4.     while (app_uart_put('A') != NRF_SUCCESS);
  5.       
  6.     //使用printf打印字符串text
  7.     printf("test");
  8.    nrf_delay_ms(1000);
  9. }
复制代码


回复 支持 反对

使用道具 举报

13

主题

23

帖子

177

积分

注册会员

Rank: 2

积分
177
 楼主| 发表于 2020-11-26 16:13:18 | 显示全部楼层
强光手电 发表于 2020-11-26 15:50
这是对的,有这个就可以了。把你的程序改成下面这样测试:

还是没有串口打印~
换成开发板带的例程就可以,输入什么就返回什么~~
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|官方淘宝店|930电子网 ( 皖ICP备16000695号-2 )

GMT+8, 2024-12-4 01:09 , Processed in 0.069476 second(s), 21 queries .

快速回复 返回顶部 返回列表