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下载

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • itextpdf生成列表基本用法

    itextpdf生成列表基本用法随时随地阅读更多技术实战干货,获取项目源码、学习资料,请关注源代码社区公众号(ydmsq666)、博主微信(guyun297890152)、QQ技术交流群(183198395)。在上一篇文章使用itextpdf生成表格基本用法中,介绍了生成表格的基本步骤和一些常用设置,同样的,在某些需求下,我们需要在pdf中展示列表,体现条理性,itextpdf同样支持,这个开源库支持很多种列表风格来满足…

  • 送给刚刚開始学cocos2d-x引擎 移植Android的同学

    送给刚刚開始学cocos2d-x引擎 移植Android的同学

  • Linux平台基于v4l2开发免驱摄像头->输出为Opencv Mat

    V4L2简介作者:onesixthree链接:https://www.jianshu.com/p/fd5730e939e7来源:简书VideoforLinuxtwo(Video4Linux2)简称V4L2,是V4L的改进版。V4L2是linux操作系统下用于采集图片、视频和音频数据的API接口,配合适当的视频采集设备和相应的驱动程序,可以实现图片、视频、音频等的采集。可以对uvc免驱…

  • 电子元件-OMRON继电器详细讲解

    目录:一、什么是继电器1、继电器简述2、继电器的构造和原理3、继电器的用途示例4、继电器的分类5、电磁铁的分类6、继电器的动作说明二、一般继电器的使用方法1、继电器的工作和原理2、关于品质和可靠性3、继电器的试验方法三、一般继电器术语说明1、继电器全部2、继电器接点部3、继电器线圈部4、电气的性能5、现象与状态6、动作形态7、外形与形状四、一般继电器使用注意事项1、使用继电器时2、关于继电器的选择3、关于电路设计.

  • linux tar 绝对路径,tar打包使用绝对路径详解

    linux tar 绝对路径,tar打包使用绝对路径详解首先应该明确:*nix系统中,使用tar对文件打包时,一般不建议使用绝对路径。通常是在两台环境相似的机器上进行同步复制的时候,才有需要使用绝对路径进行打包。使用绝对路径打包时如果不指定相应的参数,tar会产生一句警告信息:”tar:Removingleading`/’frommembernames”,并且实际产生的压缩包会将绝对路径转化为相对路径。比如:root@queen~#t…

  • 资源网站链接_资源库在线

    资源网站链接_资源库在线1.rpm包下载www.rpmfind.netftp://rpmfind.net/linux2.根据依赖的库文件,查找相应的rpm包https://pkgs.org/3.Cacti相关监控模板https://docs.cacti.net/templates4.percona各版本备份数据工具下载(innobackupex、xtrabackup等)https…

发表回复

您的电子邮箱地址不会被公开。

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