[综合信息] 华大MCU HC32L13X芯片如何使用printf输出

[复制链接]
2132|7
 楼主| drer 发表于 2019-6-19 11:13 | 显示全部楼层 |阅读模式
华大单片机HC32L13X系列MCU默认PA09为UART0 TXD功能引脚。我们可以在ddl.c中对其进行串口初始化设置,相关代码如下:
void Debug_UartInit(void)   //串口初始化
{
#ifdef __DEBUG
   
    M0P_GPIO->PA09_SEL_f.SEL = 1;
    M0P_GPIO->PADIR_f.PA09 = 0;

    M0P_UART0->SCNT = 52;       //波特率9600
    M0P_UART0->SCON_f.OVER = 1;
    M0P_UART0->SCON_f.SM = 1;
        

#endif
}
 楼主| drer 发表于 2019-6-19 11:14 | 显示全部楼层
void Debug_Output(uint8_t u8Data)   //发送一个字节
{
    M0P_UART0->SCON_f.REN = 0;
    M0P_UART0->SBUF = u8Data;  
        while (TRUE != M0P_UART0->ISR_f.TC)
    {
        ;
    }
    M0P_UART0->ICR_f.TCCF = 0;

}
 楼主| drer 发表于 2019-6-19 11:14 | 显示全部楼层
int fputc(int ch, FILE *f)
{

    if (((uint8_t)ch) == '\n')
    {
        Debug_Output('\r');
    }
    Debug_Output(ch);

    return ch;
}
 楼主| drer 发表于 2019-6-19 11:15 | 显示全部楼层
主程序中代码如下:
#define DEBUG
#include "ddl.h"
#include "uart.h"
#include "gpio.h"
#include "sysctrl.h"

int main()
{

    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);
    Sysctrl_SetPeripheralGate(SysctrlPeripheralUart0,TRUE);
#ifdef DEBUG
    Debug_UartInit();                                         //调试串口初始化
#endif
   
#ifdef DEBUG
    printf("This is a UART Test!");                           //输出调试内容
#endif  
    while(1)
    {
     ;
    }
}
jackyle6 发表于 2020-5-11 16:56 | 显示全部楼层
赞一个!
walton1226 发表于 2020-5-11 17:32 | 显示全部楼层
M0P_UART0->SCNT = 52;       //波特率9600
此时UART时钟多少?

评论

手册2.2(608)页:4M,OVER8  发表于 2020-8-18 15:19
viva911 发表于 2020-8-18 15:20 | 显示全部楼层
神奇喔,这样就可以了,例程里为什么要把相关部分注释掉?!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

3317

帖子

4

粉丝
快速回复 在线客服 返回列表 返回顶部