前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >GD32 RT-Thread Nano+FinSH组件

GD32 RT-Thread Nano+FinSH组件

作者头像
全栈程序员站长
发布2022-08-31 17:37:08
3410
发布2022-08-31 17:37:08
举报

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

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

GD32 RT-Thread Nano+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组件
GD32 RT-Thread Nano+FinSH组件

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

GD32 RT-Thread Nano+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.cn/143581.html原文链接:https://javaforall.cn

如果您是在找激活码,但输入激活码后激活失败,最新激活码地址:https://javaforall.cn/127239.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月2,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档