其他分享
首页 > 其他分享> > CH579/CH573/CH53/CH57x/CH58x printf 的串口修改与禁用

CH579/CH573/CH53/CH57x/CH58x printf 的串口修改与禁用

作者:互联网

本文目的

本文将记录如何在沁恒的ble芯片上修改printf的串口重定向,禁用,以及相关的注意事项

适用芯片

SDK中 printf重定向实现原理

在keil中

在mounriver studio(eclipse+gcc)中

宏定义

官网的默认例程中,printf 通过PRINT宏来定义:
在CH573SFR.h文件中

#ifdef  DEBUG
#define PRINT(X...) printf(X)
#else
#define PRINT(X...)
#endif

其中这个DEBUG 宏在IDE的全局定义中是:
image

初始化

在main函数中,上来进行串口初始化:

#ifdef DEBUG
  GPIOA_SetBits(bTXD1);
  GPIOA_ModeCfg(bTXD1, GPIO_ModeOut_PP_5mA);
  UART1_DefInit( );
#endif

串口输出

以下定义在文件"CH57x_sys.c"中
其中这里的Debug_UART0-Debug_UART3 对应就是0-3

#ifdef DEBUG
int _write(int fd, char *buf, int size)
{
    int i;
    for(i=0; i<size; i++)
    {
#if  DEBUG == Debug_UART0
        while( R8_UART0_TFC == UART_FIFO_SIZE );                        /* 等待数据发送 */
        R8_UART0_THR = *buf++;                                               /* 发送数据 */
#elif DEBUG == Debug_UART1
        while( R8_UART1_TFC == UART_FIFO_SIZE );                        /* 等待数据发送 */
        R8_UART1_THR = *buf++;                                               /* 发送数据 */
#elif DEBUG == Debug_UART2
        while( R8_UART2_TFC == UART_FIFO_SIZE );                        /* 等待数据发送 */
        R8_UART2_THR = *buf++;                                               /* 发送数据 */
#elif DEBUG == Debug_UART3
        while( R8_UART3_TFC == UART_FIFO_SIZE );                        /* 等待数据发送 */
        R8_UART3_THR = *buf++;                                               /* 发送数据 */
#endif
    }
    return size;
}

#endif

修改printf 的串口

注意事项

标签:CH57x,CH579,int,串口,PRINT,ifdef,printf,DEBUG
来源: https://www.cnblogs.com/iot-fan/p/14744671.html