GD32 RT-Thread Nano+FinSH组件

GD32 RT-Thread Nano+FinSH组件一、FinSH组件的命令执行流程图二、执行环境1.芯片:GD32F10x2.串口: #defineFINSH_UART USART1 #defineFINSH_UART_CLK RCU_USART1 #defineFINSH_TX_PIN GPIO_PIN_2 …

大家好,又见面了,我是你们的朋友全栈君。

一、FinSH组件的命令执行流程图

GD32 RT-Thread Nano+FinSH组件

二、执行环境

1.芯片:GD32F10x

2.串口:

#define FINSH_UART                  

USART1

#define FINSH_UART_CLK            

RCU_USART1

#define FINSH_TX_PIN                

GPIO_PIN_2

#define FINSH_RX_PIN                

GPIO_PIN_3

#define FINSH_GPIO_PORT            

GPIOA

#define FINSH_GPIO_CLK             

RCU_GPIOA

3.编译环境:KEIL

4.RT-Thread:RT-Thread Nano(3.1.3版本)

三、添加步骤

1.添加FinSH组件相关文件

1)路径:../rt-thread-3.1.3/components/finsh

2)KEIL中添加文件

GD32 RT-Thread Nano+FinSH组件

2.在rtconfig.h文件中添加宏 #define RT_USING_FINSH

GD32 RT-Thread Nano+FinSH组件

3.配置对应的串口

#define FINSH_UART                   USART1

#define FINSH_UART_CLK               RCU_USART1

#define FINSH_TX_PIN                 GPIO_PIN_2

#define FINSH_RX_PIN                 GPIO_PIN_3

#define FINSH_GPIO_PORT              GPIOA

#define FINSH_GPIO_CLK               RCU_GPIOA

/*初始化FINSH组件对应的串口,同时进行初始化*/

void rt_thread_finsh_uart_init(void)

{

   

    /* enable GPIO clock */

    rcu_periph_clock_enable(FINSH_GPIO_CLK);

    /* enable USART clock */

    rcu_periph_clock_enable(FINSH_UART_CLK);

    /* connect port to USARTx_Tx */

    gpio_init(FINSH_GPIO_PORT, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, FINSH_TX_PIN);

    /* connect port to USARTx_Rx */

    gpio_init(FINSH_GPIO_PORT, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, FINSH_RX_PIN);

    /* USART configure */

    usart_deinit(FINSH_UART);

    usart_baudrate_set(FINSH_UART, 115200U);

    usart_word_length_set(FINSH_UART, USART_WL_8BIT);

    usart_stop_bit_set(FINSH_UART, USART_STB_1BIT);

    usart_parity_config(FINSH_UART, USART_PM_NONE);

    usart_hardware_flow_rts_config(FINSH_UART, USART_RTS_DISABLE);

    usart_hardware_flow_cts_config(FINSH_UART, USART_CTS_DISABLE);

    usart_receive_config(FINSH_UART, USART_RECEIVE_ENABLE);

    usart_transmit_config(FINSH_UART, USART_TRANSMIT_ENABLE);

    usart_enable(FINSH_UART);

}

4.编写void rt_hw_console_output(const char *str)和rt_hw_console_getchar函数

/* 实现 2:输出一个字符,系统函数,函数名不可更改 */

void rt_hw_console_output(const char *str)

{

rt_enter_critical();//进入临界段

while(*str != ‘\0’)

{

if(*str == ‘\n’)

{

usart_data_transmit(FINSH_UART, (uint8_t)’\r’);

while(RESET == usart_flag_get(FINSH_UART, USART_FLAG_TBE));                //等待发送结束

}

usart_data_transmit(FINSH_UART, (uint8_t)*str++);//发送接收到的数据

while(RESET == usart_flag_get(FINSH_UART, USART_FLAG_TBE));                //等待发送结束

}

rt_exit_critical();//退出临界段

}

char rt_hw_console_getchar(void)

{

    int ch = -1;

if(usart_flag_get(FINSH_UART, USART_FLAG_RBNE) != RESET)        

    {

        ch = (uint8_t)usart_data_receive(FINSH_UART);

    }

    else

    {

        if(usart_flag_get(FINSH_UART, USART_FLAG_RBNE) != RESET)        

        {

           usart_flag_clear(FINSH_UART, USART_FLAG_RBNE);

        }

        rt_thread_mdelay(10);

    }

    return ch;

}

四、完整代码

GD32103C-START.rar-C/C++文档类资源-CSDN下载

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/143581.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月21日 上午11:20
下一篇 2022年5月21日 上午11:20


相关推荐

  • pythonconsole使用_pycharm add new configuration

    pythonconsole使用_pycharm add new configurationPycharm的下方工具栏中有两个窗口:PythonConsole和Terminal(如下图)Terminal叫做终端,即命令行模式(命令行模式与系统的CMD(命令提示符)一样,可以运行各种系统命令);PythonConsole叫做Python控制台,即Python交互模式(Python交互模式主要有两种:CPython用>>>作为提示符,而IPython用In[序号]:作为提示符)。Python交互式模式可以直接输入代码,然后执行,并立刻得到结果,因此Pytho

    2022年8月26日
    8
  • JLink、STLink、DAPLink、CMSIS DAP使用区别

    JLink、STLink、DAPLink、CMSIS DAP使用区别先上张全家福 都是工作时大家常用的几款下载器 手边就这几个 另还有几个打冷宫里了 挨个给大家说说作参考 不讲参数 整那虚的没卵用 实际的使用感受更实际 J Link 大名鼎鼎 各种版本 各种款式 号称支持芯片量最多 优点 快 稳 常用的几种下载器 实测 JLink 最快 STM32F407 芯片 109K 代码实测 8 秒搞掂烧录 缺点 最贵 大多数 JLink 不支持 STM8 听说 STM8

    2026年3月16日
    2
  • 三极管驱动继电器电路

    三极管驱动继电器电路    继电器线圈需要流过较大的电流(约50mA)才能使继电器吸合,一般的集成电路不能提供这样大的电流,因此必须进行扩流,即驱动。图1所示为用NPN型三极管驱动继电器的电路图,图中阴影部分为继电器电路,继电器线圈作为集电极负载而接到集电极和正电源之间。当输入为0V时,三极管截止,继电器线圈无电流流过,则继电器释放(OFF);相反,当输入为+VCC时,三极管饱和,继电器线圈有相当的电流流过,…

    2022年6月24日
    29
  • ECharts地图,echarts自定义map地图,echarts添加标注,自定义坐标、图标、icon

    ECharts地图,echarts自定义map地图,echarts添加标注,自定义坐标、图标、iconECharts 如何自定义省 市 县区地图 各省市直辖区的 map 地图 ECharts 如何在地图上自定义图片 图标 根据经纬度显示自定义建筑图片 添加自定义覆盖物前言最近在做一个项目中 需求是 要显示中国某个省份下 某个市的地图 而地图还要有块级效果 自定义地图颜色 还要在地图上显示不同的建筑物图片 还要每隔几秒后 数据是从后端用 ws 实时推送过来的 要根据推送过来的数据 动态切换显示对

    2026年3月20日
    2
  • 音标分类

    音标分类国际音标一共 48 个 其中元音 20 个 辅音 28 个 元音又分为单元音和双元音 辅音又分为清辅音和浊辅音 清辅音即不震动声带的音标 浊辅音即能引起声带震动的音标 除了清辅音之外余下的都是浊辅音 我们根据下面图片 来整体了解一下音标分类 图片来自百度网络 音标分类 单元音 i i u

    2026年3月20日
    1
  • Django(55)GenericAPIView源码分析

    Django(55)GenericAPIView源码分析源码分析GenericAPIView继承自APIView,也就是在APIView基础上再做了一层封装,源码如下:classGenericAPIView(views.APIView):query

    2022年7月31日
    10

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号