小飞飞 发表于 2020-6-26 20:14:52

RISC-V单片机快速入门03-基于RT_Thread Nano添加控制台

本帖最后由 小飞飞 于 2020-8-28 19:47 编辑

RISC-V单片机快速入门01-开发环境搭建
RISC-V单片机快速入门02-移植RT_Thread Nano
RISC-V单片机快速入门03-基于RT_Thread Nano添加控制台
RISC-V单片机快速入门04-基于RT_Thread Nano添加FinSH
RISC-V单片机快速入门05-串口助手发送AT指令启动TCP Server
RISC-V单片机快速入门06-控制ESP8266启动Http Server
RISC-V单片机快速入门07-板载LCD显示ESP8266数据



本系列上一篇:RISC-V单片机快速入门02-移植RT_Thread Nano,完成了GD32VF103在RT_Thread Nano上的移植,

本篇我们为其增加控制台输出功能,以及通过FinSH组件和用户交互功能。
一,基础知识

1.FinS H简介
RT-Thread FinSH 是 RT-Thread 的命令行组件(shell),提供一套供用户在命令行调用的操作接口,主要用于调试或查看系统信息。它可以使用串口 / 以太网 / USB 等与 PC 机进行通信,使用 FinSH 组件基本命令的效果图如下所示:

二,添加步骤

1.导入工程
将上一节内容进行复制,修改.project中工程名字为lesson3
重新import进来新的工程

2.控制台输出
适配号控制台输出,就可以使用RT_Thread中rt_kprintf()函数进行串口信息的打印,方便调试Bug、获取系统当前运行状态。
(1) 串口初始化
在gd32vf102c_start.c中定义调试串口初始化函数void uart_debug_init(void),同时在gd32vf103c_start.h中声明。

然后再board.c中rt_hw_board_init()函数中调用uart_debug_init()。

(2) 实现 rt_hw_console_output
在gd32vf102c_start.c文件中,实现rt_hw_console_output如下:void rt_hw_console_output(const char str)
{
    rt_enter_critical();
    while(str != '\0')
    {
      if ('\n' == *str)
      {
            usart_data_transmit(EVAL_COM0, '\r' );
            while ( usart_flag_get(EVAL_COM0, USART_FLAG_TBE)== RESET);
      }
      usart_data_transmit(EVAL_COM0, (uint8_t) *str++ );
      while ( usart_flag_get(EVAL_COM0, USART_FLAG_TBE)== RESET);
    }
    rt_exit_critical();
}
(3) 修改main.c中led_process_thread_entry函数void led_process_thread_entry(void parameter)
{
    rt_err_t ret = RT_EOK;
    while(1)
    {
      / insert 500 ms delay /
      rt_thread_mdelay(500);
      / toggle the LED /
      gpio_bit_write(GPIOA, GPIO_PIN_1, (bit_status)(1-gpio_input_bit_get(GPIOA, GPIO_PIN_1)));
      rt_kprintf("toggle the LED\r\n");
      / insert 500 ms delay */
      rt_thread_mdelay(500);
    }
}
增加rt_kprintf("toggle the LEDrn");函数,每隔1S打印一次数据。
三,运行结果
运行结果如下所示


四,QQ交流群:728522642 (备注:物联网项目交流)
本篇完*

xdqfc 发表于 2020-6-27 09:49:57

能跟第三方调试软件结合起来,高手啊!!

春野樱 发表于 2020-6-27 12:17:41

大佬,带带我呗!!!
页: [1]
查看完整版本: RISC-V单片机快速入门03-基于RT_Thread Nano添加控制台