梁山派GD32F450/470-RT-Thread Nano移植(二)

在上一篇文章中,我实现了在keil中给梁山派移植rt-thread nano,但在官方的移植教程中,除了系统的移植,还有在 rt-thread nano 上添加uart控制台与 finsh的教程,所以我在本文中将实现在梁山派的nano上添加uart控制台。
文件信息如下
移植步骤如下:
1、打开不含uart控制台的文件,将梁山派的串口文件加到工程中,如下图所示
在keil工程中双击hardware文件夹,并在弹出的窗口中选中串口文件并添加进工程中
添加完成后再将文件路径添加到工程包含路径中
然后我们再将需要的gd32f4库函数文件加入工程,双击firmware文件夹,找到
�02库函数点灯firmwaregd32f4xx_standard_peripheralsource
路径下的gd32f4xx_misc.c和gd32f4xx_usart.c文件添加到工程中(方法与添加串口文件基本一致,这里不再赘述)
编译无错
2、实现串口初始化
rt-thread的控制台需要通过uart_init实现串口初始化,在board.c文件中已经搭好了基本框架,但是未开启
所以我们首先要在rtconfig.h 中使能 rt_using_console 宏定义(这个时候编译有错是正常的)
然后在board.c文件中完善串口初始化函数uart_init
进入bsp_usart.c文件
复制usart_gpio_config函数中的全部代码,粘贴到board.c的uart_init函数中
/* 开启时钟 /
rcu_periph_clock_enable(bsp_usart_tx_rcu); // 开启串口时钟
rcu_periph_clock_enable(bsp_usart_rx_rcu); // 开启端口时钟
rcu_periph_clock_enable(bsp_usart_rcu); // 开启端口时钟
/ 配置gpio复用功能 /
gpio_af_set(bsp_usart_tx_port,bsp_usart_af,bsp_usart_tx_pin);
gpio_af_set(bsp_usart_rx_port,bsp_usart_af,bsp_usart_rx_pin);
/ 配置gpio的模式 /
/ 配置tx为复用模式 上拉模式 /
gpio_mode_set(bsp_usart_tx_port,gpio_mode_af,gpio_pupd_pullup,bsp_usart_tx_pin);
/ 配置rx为复用模式 上拉模式 /
gpio_mode_set(bsp_usart_rx_port, gpio_mode_af,gpio_pupd_pullup,bsp_usart_rx_pin);
/ 配置tx为推挽输出 50mhz /
gpio_output_options_set(bsp_usart_tx_port,gpio_otype_pp,gpio_ospeed_50mhz,bsp_usart_tx_pin);
/ 配置rx为推挽输出 50mhz /
gpio_output_options_set(bsp_usart_rx_port,gpio_otype_pp, gpio_ospeed_50mhz, bsp_usart_rx_pin);
/ 配置串口的参数 /
usart_deinit(bsp_usart); // 复位串口
usart_baudrate_set(bsp_usart,band_rate); // 设置波特率
usart_parity_config(bsp_usart,usart_pm_none); // 没有校验位
usart_word_length_set(bsp_usart,usart_wl_8bit); // 8位数据位
usart_stop_bit_set(bsp_usart,usart_stb_1bit); // 1位停止位
/ 使能串口 /
usart_enable(bsp_usart); // 使能串口
usart_transmit_config(bsp_usart,usart_transmit_enable); // 使能串口发送
usart_receive_config(bsp_usart,usart_receive_enable); // 使能串口接收
/ 中断配置 */
nvic_irq_enable(bsp_usart_irq, 2, 2); // 配置中断优先级
usart_interrupt_enable(bsp_usart,usart_int_rbne); // 读数据缓冲区非空中断和溢出错误中断
usart_interrupt_enable(bsp_usart,usart_int_idle); // 空闲检测中断
在borad.c中添加头文件,这一步是为了将bsp_usart.h中的一些宏定义引入,不然会报错
#include bsp_usart.h
最后再将下图中是波特率修改为115200(这个就是控制台串口的波特率,后面如果需要使用其他通信速率,可以来这里修改)
串口初始化完成
3、实现 rt_hw_console_output
这个就相当于串口输出,实现了它,rt-thread的串口输出函数rt_kprintf才能够使用
将下面代码复制到rt_hw_console_output函数中去
rt_size_t i = 0, size = 0;char a = 'r';size = rt_strlen(str);for (i = 0; i < size; i++){ if (*(str + i) == 'n') { usart_send_data((uint8_t)a); } usart_send_data((uint8_t)*(str + i));}复制前
复制后(编译无错)
以上就实现了在梁山派的nano上添加uart控制台(实现打印)
搞个例程试一试
在main函数的循环中添加
rt_kprintf(rt-threadr);
例程现象如下:
总结如下:
在梁山派的nano上添加uart控制台
编写使用rt_kprintf函数串口打印的例程

人工智能是如何改变企业及在此过程中节省开支的?
台积电董事长曾称:没有林本坚就不会有今天这规模
地下车库CO传感器报警系统
苹果计划2020年推出一款AR智能眼镜
千兆以太网的主要特点_千兆以太网的传输介质
梁山派GD32F450/470-RT-Thread Nano移植(二)
BED150-20W小方形LED防爆灯原理用途
展会回顾 安泰电子2023微纳科技与先进材料创新大会精彩瞬间
LED节能灯拆解,内部与节能灯到底有多大的区别?
电源设计中的更小尺寸
印度利用人工智能对交通设备进行智能控制
AD9958高性能可双路输出的DDS器件
百度与中国长城合作,建自主可控人工智能平台
无线充电技术真的会成为未来的趋势吗
具有改善电能质量功能的智能电表系统的设计
国信证券专题研究:陶瓷芯为市场主流,棉芯仍有用武之地
iPhone12系列各种问题总结
年省电1325万度,广州联通IDC是如何做到的?
水表检定出现误差的因素有哪些
中央广播电视总台版权交易中心22日在上海启动建设