STM32F103打印(UART1)

不使用板载ch340转串口,直接用自己的ch340和杜邦线连单片机的PA9和PA10,接UART1的打印

STM32F103打印(UART1)_第1张图片

STM32F103打印(UART1)_第2张图片 

 

 

重写printf函数

/*printf函数首先定义了一个char指针fmt,
 * 然后后面紧跟的是printf的变参,那么
 * 变参转换就开始了,下一个函数va_start
 * 定义了一个指向变参的首指针args,紧接
 * 着利用vsprintf函数,按照fmt格式以及
 * 通过args指针,将变参一个个按照规定好
 * 的格式转换数据,结果复制到char(*)outbuf
 * 这个数组中,最后结束可变参数处理。*/
int ch_printf(const char * fmt,...){
    char msg[100];//printf More than 100 bytes will burst the stack
    uint16_t len;
    va_list list;
    va_start(list, fmt);//list 是指向fmt 的指针。list is a pointer pointed to fmt ,fmt is variable paramter

    len = vsprintf(msg,fmt,list);//change the fmt  format ,by list pointer,then copy to msg
//    sprintf(msg,fmt,……);sprintf is equal to vsprintf
    va_end(list);
    HAL_UART_Transmit(&huart1, (uint8_t *)msg,len, 1000);
    return 0;
}
uint8_t bytes_sum(uint8_t *buf, uint16_t len) {
    ch_printf("[%s] len :%d\r\n", __func__ , len);

    uint8_t res = 0;
    for (int i = 0; i < len; i++) {
        res += buf[i];
    }
    return res;
}

你可能感兴趣的:(stm32,单片机,arm)