查看: 607|回复: 2
收起左侧

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

[复制链接]

  离线 

  • TA的每日心情
    慵懒
    前天 09:25
  • 签到天数: 57 天

    [LV.5]

    RISC-V商家RISC-V活跃会员RISC-V热心会员RISC-V推广达人

    发表于 2020-6-26 20:14:52 | 显示全部楼层 |阅读模式

    有人预言,RISC-V或将是继Intel和Arm之后的第三大主流处理器体系。欢迎访问全球首家只专注于RISC-V单片机行业应用的中文网站

    您需要 登录 才可以下载或查看,没有帐号?立即注册

    x
    本帖最后由 小飞飞 于 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 组件基本命令的效果图如下所示:

    GD32VF 单片机芯片及应用-RISC-V单片机快速入门03-基于RT_Thread Nano添加控制台risc-v单片机中文社区(1)

    二,添加步骤

    1.导入工程

    将上一节内容进行复制,修改.project中工程名字为lesson3

    GD32VF 单片机芯片及应用-RISC-V单片机快速入门03-基于RT_Thread Nano添加控制台risc-v单片机中文社区(2)
    重新import进来新的工程

    GD32VF 单片机芯片及应用-RISC-V单片机快速入门03-基于RT_Thread Nano添加控制台risc-v单片机中文社区(3)

    2.控制台输出

    适配号控制台输出,就可以使用RT_Thread中rt_kprintf()函数进行串口信息的打印,方便调试Bug、获取系统当前运行状态。

    (1) 串口初始化

    在gd32vf102c_start.c中定义调试串口初始化函数void uart_debug_init(void),同时在gd32vf103c_start.h中声明。

    GD32VF 单片机芯片及应用-RISC-V单片机快速入门03-基于RT_Thread Nano添加控制台risc-v单片机中文社区(4)

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

    GD32VF 单片机芯片及应用-RISC-V单片机快速入门03-基于RT_Thread Nano添加控制台risc-v单片机中文社区(5)

    (2) 实现 rt_hw_console_output

    在gd32vf102c_start.c文件中,实现rt_hw_console_output如下:
    1. void rt_hw_console_output(const char str)
    2. {
    3.     rt_enter_critical();
    4.     while(str != '\0')
    5.     {
    6.         if ('\n' == *str)
    7.         {
    8.             usart_data_transmit(EVAL_COM0, '\r' );
    9.             while ( usart_flag_get(EVAL_COM0, USART_FLAG_TBE)== RESET);
    10.         }
    11.         usart_data_transmit(EVAL_COM0, (uint8_t) *str++ );
    12.         while ( usart_flag_get(EVAL_COM0, USART_FLAG_TBE)== RESET);
    13.     }
    14.     rt_exit_critical();
    15. }
    复制代码

    (3) 修改main.c中led_process_thread_entry函数
    1. void led_process_thread_entry(void parameter)
    2. {
    3.     rt_err_t ret = RT_EOK;
    4.     while(1)
    5.     {
    6.         / insert 500 ms delay /
    7.         rt_thread_mdelay(500);
    8.         / toggle the LED /
    9.         gpio_bit_write(GPIOA, GPIO_PIN_1, (bit_status)(1-gpio_input_bit_get(GPIOA, GPIO_PIN_1)));
    10.         rt_kprintf("toggle the LED\r\n");
    11.         / insert 500 ms delay */
    12.         rt_thread_mdelay(500);
    13.     }
    14. }
    复制代码

    增加rt_kprintf("toggle the LEDrn");函数,每隔1S打印一次数据。

    三,运行结果

    运行结果如下所示

    GD32VF 单片机芯片及应用-RISC-V单片机快速入门03-基于RT_Thread Nano添加控制台risc-v单片机中文社区(6)

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

    本篇完*

    题主优质好文
    相信自已,未来是自已创造的。
    点评回复

    使用道具 举报

      离线 

    该用户从未签到

    发表于 2020-6-27 09:49:57 | 显示全部楼层
    能跟第三方调试软件结合起来,高手啊!!
    全球首家只专注于RISC-V单片机行业应用的中文网站

      离线 

  • TA的每日心情
    拍拍
    2021-6-6 10:14
  • 签到天数: 11 天

    [LV.3]

    发表于 2020-6-27 12:17:41 | 显示全部楼层
    大佬,带带我呗!!!
    全球首家只专注于RISC-V单片机行业应用的中文网站
    高级模式
    B Color Image Link Quote Code Smilies @朋友

    本版积分规则

    关闭

    RISC-V单片机中文网上一条 /2 下一条




    版权及免责声明|RISC-V单片机中文网 |网站地图

    GMT+8, 2021-7-29 00:09 , Processed in 1.675469 second(s), 52 queries .

    快速回复 返回顶部 返回列表