基于 GD32L233C使用RTThread_rt_kprintf
①:在rtconfig.h中打开console
②:魔术棒中勾选USB MicroLIB
③:board.c中头文件添加:
#include <rthw.h>
#include "systick.h"
#include <rtthread.h>
#include "gd32l23x.h"
#include "gd32l233c_start.h"
#include "gd32l23x_usart.h"
④:在rt_hw_board_init()中添加:
//通过"gd32l233c_start.h"中的函数初始化串口0
gd_eval_com_init(EVAL_COM);
⑤:屏蔽#error "TODO 2“
//#error "TODO 2: Enable the hardware uart and config baudrate."
⑥:屏蔽#error "TODO 3“,重映射串口DEBUG_USARTx到rt_kprintf()函数
void rt_hw_console_output(const char *str)
{
//#error "TODO 3: Output the string 'str' through the uart."
/**
* [url=home.php?mod=space&uid=159083]@brief[/url] 重映射串口DEBUG_USARTx到rt_kprintf()函数
* Note:DEBUG_USARTx是在bsp_usart.h中定义的宏,默认使用串口1
* @param str:要输出到串口的字符串
* @retval 无
* [url=home.php?mod=space&uid=1020061]@attention[/url] */
/* 进入临界段 */
rt_enter_critical();
/* 直到字符串结束 */
while (*str!='\0')
{
/* 换行 */
if (*str=='\n')
{
usart_data_transmit(EVAL_COM, '\r');
while (usart_flag_get(EVAL_COM, USART_FLAG_TC) == RESET);
}
usart_data_transmit(EVAL_COM, *str++);
while (usart_flag_get(EVAL_COM, USART_FLAG_TC) == RESET);
}
/* 退出临界段 */
rt_exit_critical();
}
⑦:修改完便可以使用rt_kprintf打印了
基于 GD32L233C使用printf
main中添加如下,可使用printf
①:头文件添加stdio:
#include "stdio.h"
②:在最后添加:
/* retarget the C library printf function to the USART */
int fputc(int ch, FILE *f)
{
usart_data_transmit(USART0, (uint8_t) ch ); //发送字符
while (usart_flag_get(USART0,USART_FLAG_TC) == RESET); //检查是否发送完毕
return (ch);
}
③:便可以使用printf打印了