打印
[综合信息]

华大MCU HC32L13X芯片如何使用printf输出

[复制链接]
1690|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)
    {
     ;
    }
}

使用特权

评论回复
5
jackyle6| | 2020-5-11 16:56 | 只看该作者
赞一个!

使用特权

评论回复
6
walton1226| | 2020-5-11 17:32 | 只看该作者
M0P_UART0->SCNT = 52;       //波特率9600
此时UART时钟多少?

使用特权

评论回复
评论
viva911 2020-8-18 15:19 回复TA
手册2.2(608)页:4M,OVER8 
7
viva911| | 2020-8-18 15:20 | 只看该作者
神奇喔,这样就可以了,例程里为什么要把相关部分注释掉?!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

60

主题

3315

帖子

4

粉丝