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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Python翻译Excel文件

    Python翻译Excel文件朋友需要翻译大量 Excel 文件内容 看我是否能搭把手 我的思路很简单 就是将 Excel 文件内容读出后 调用翻译软件的 API 然后再爬回翻译好的内容 写入 Excel 读取 Excel 文件内容的方法 我这里要处理的是 xlsx 文件 可以 importopenpy 如果要处理 xls 文件 就不能用这个 而是 importxlrd 或者先将 xks 文件转为 xlsx 文件再使用本文代码 具体这两个包提

    2025年10月4日
    2
  • Plc编程入门基础知识,在短时间内如何学会编程[通俗易懂]

    Plc编程入门基础知识,在短时间内如何学会编程[通俗易懂]Plc编程入门基础知识,在短时间内如何学会编程PLC:可编程逻辑控制器。实质是一种专用于工业控制的计算机,其硬件结构基本上与微型计算机相同,基本组成如下图所示:工业生产和科技的发展都离不开plc的自动化控制,作为一名电工,想要不被时代所抛弃,就要不断充实自己、投资自己、学习PLC。那么电工学习PLC该如何入门呢?我是一个自动化行业职业计划者。给初学者略略总结一下,希望对你有所帮助。1选择学习的类型市场的主流plc有三菱,西门子,欧姆龙等等,我推荐先学习三菱,西门子基本上了解这两种,不愁没饭吃2从基

    2025年10月7日
    3
  • nema23_关于NEMA SM 23的说明

    nema23_关于NEMA SM 23的说明Unfortunately,NEMASM23isambiguousaboutthepointofresolutionofthecombinedforcesandmoments.Theresolutionpointshavebeeninterpretedtobethefollowingtwopoints:NEMASM23没有给出设备整体校核时所有作…

    2025年8月13日
    1
  • mysql groupadd_Linux下groupadd命令无法添加用户和组的解决

    mysql groupadd_Linux下groupadd命令无法添加用户和组的解决今天需要给一个linux服务器安装mysql,在安装mysql的时候,出现错误提示:[root@localhostsoftwaretools]#rpm-ivhMySQL-server-5.5.23-1.rhel5.x86_64.rpmPreparing…###########################################[100%]1…

    2025年7月6日
    2
  • 【SSH学习】

    【SSH学习】什么是SSH?简单说,SSH是一种网络协议(安全外壳协议),用于计算机之间的加密登录。如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会泄露。SSH之所以能够保证安全,原因在于它采用了公钥加密。整个过程是这样的:(1)远程主机收到用户的登录请求,把自己的公钥发给用户(2)用户使用这个公钥,将登录密码加密后,发送回来。(3)远程主机用自己的私钥,解密登录密码,如果密码正确,就同意用户登录。SSH基本用法1.SSH远程登陆

    2022年6月24日
    30
  • ExecuteNonQuery()_sql存储过程返回值

    ExecuteNonQuery()_sql存储过程返回值本文实例讲述了C#中ExecuteNonQuery()返回值注意点。对于C#数据库程序设计有一定的借鉴价值。分享给大家供大家参考之用。具体分析如下:首先,在查询某个表中是否有数据的时候,我们通常用ExecuteNonQuery(),并通过判断值是否大于0来判断数据的存在与否。结果与我所设想的很不一致,调试时才发现,其执行后返回的结果是-1,对此我很是不理解,回头查了下资料,如下显示:SqlComm…

    2025年10月26日
    2

发表回复

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

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