Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
AB32VG1
RT-Thread
RT-Thread Studio
中科蓝讯AB32VG1开发板串口测试
发布于 2021-03-26 12:54:29 浏览:1285
订阅该版
[tocm] # AB32VG1串口测试 这是测试AB32VG1开发板的串口1,实现将接收到的数据加1,再输出的功能。 ## 1、新建工程 打开RT-Thread Studio,文件->新建->RT-Thread项目。 选择基于开发板,AB32BG1-AB-PROUGEN,其他默认即可。 ![新键项目.png](https://oss-club.rt-thread.org/uploads/20210326/0687bfe2a5516e1ef4ee9211e8d694f3.png) Project name:里填写工程名,这里我填的是test-uart。 点“完成”,环境就自动创建项目工程了。 ![正在创建.png](https://oss-club.rt-thread.org/uploads/20210326/a55fcad366ef49a89fcd4a856bbb403d.png) 稍等片刻,工程就创建好了。 ![创建完成.png](https://oss-club.rt-thread.org/uploads/20210326/01a2afbed0e01902b1dee2bcfd21085a.png) 工程创建好了之后,就可以点编译试一下。 ![编译.png](https://oss-club.rt-thread.org/uploads/20210326/5173585d6de4df4f68bdf122eb180daa.png) 我这里直接是报编译成功。 ![编译成功.png](https://oss-club.rt-thread.org/uploads/20210326/2fd2f6dbd2e1a6a2deb832e62c4d76d9.png) ## 2、修改文件 打开libraries->hal_drivers->drv_usart.c 找到uart_isr()这个函数。 ![修改串口中断函数.png](https://oss-club.rt-thread.org/uploads/20210326/ebb355831c9fbe04c58ad8c74ad87efb.png) 把注释的部分放开。 ![修改串口中断函数成功.png](https://oss-club.rt-thread.org/uploads/20210326/cfc077e8ad34345dd5e5cf6c153b9485.png) 由于文件里默认的波特率是1500000。我们平时用有点太高了,所以在初始化函数rt_hw_usart_init()里加上一些设置,设置成115200. ![设置波特率.png](https://oss-club.rt-thread.org/uploads/20210326/7c0d7ab138f998d2a096e561de587402.png) ## 3、添加测试程序 新键usart1.c文件,把官方的串口测试程序拷进去。 ``` /* * Copyright (c) 2006-2021, RT-Thread Development Team * * SPDX-License-Identifier:
Apache
-2.0 * * Change Logs: * Date Author Notes * 2021-03-24
zh
the first version */ /* * 程序清单:这是一个 串口 设备使用例程 * 例程导出了 uart_sample 命令到控制终端 * 命令调用格式:uart_sample uart1 * 命令解释:命令第二个参数是要使用的串口设备名称,为空则使用默认的串口设备 * 程序功能:通过串口输出字符串"hello RT-Thread!",然后错位输出输入的字符 */ #include
#define SAMPLE_UART_NAME "uart1" /* 用于接收消息的信号量 */ static struct rt_semaphore rx_sem; static rt_device_t serial; /* 接收数据回调函数 */ static rt_err_t uart_input(rt_device_t dev, rt_size_t size) { /* 串口接收到数据后产生中断,调用此回调函数,然后发送接收信号量 */ rt_sem_release(&rx_sem); return RT_EOK; } static void serial_thread_entry(void *parameter) { char ch; rt_kprintf("test
uart
.\n"); rt_device_write(serial, 0, &ch, 1); while (1) { /* 从串口读取一个字节的数据,没有读取到则等待接收信号量 */ while (rt_device_read(serial, -1, &ch, 1) != 1) { /* 阻塞等待接收信号量,等到信号量后再次读取数据 */ rt_sem_take(&rx_sem, RT_WAITING_FOREVER); } /* 读取到的数据通过串口错位输出 */ ch = ch + 1; rt_device_write(serial, 0, &ch, 1); } } static int uart_sample(int argc, char *argv[]) { rt_err_t ret = RT_EOK; char uart_name[RT_NAME_MAX]; char str[] = "hello RT-Thread!\r\n"; if (argc == 2) { rt_strncpy(uart_name, argv[1], RT_NAME_MAX); } else { rt_strncpy(uart_name, SAMPLE_UART_NAME, RT_NAME_MAX); } /* 查找系统中的串口设备 */ serial = rt_device_find(uart_name); if (!serial) { rt_kprintf("find %s failed!\n", uart_name); return RT_ERROR; } /* 初始化信号量 */ rt_sem_init(&rx_sem, "rx_sem", 0, RT_IPC_FLAG_FIFO); /* 以中断接收及轮询发送模式打开串口设备 */ rt_device_open(serial, RT_DEVICE_FLAG_INT_RX); /* 设置接收回调函数 */ rt_device_set_rx_indicate(serial, uart_input); /* 发送字符串 */ rt_device_write(serial, 0, str, (sizeof(str) - 1)); /* 创建 serial 线程 */ rt_thread_t thread = rt_thread_create("serial", serial_thread_entry, RT_NULL, 1024, 25, 10); /* 创建成功则启动线程 */ if (thread != RT_NULL) { rt_thread_startup(thread); } else { ret = RT_ERROR; } return ret; } /* 导出到
msh
命令列表中 */ MSH_CMD_EXPORT(uart_sample, uart device sample); ``` 这里注意一下,官方代码是测试的`uart2`,这里要改下 ``` #define SAMPLE_UART_NAME "uart1" ``` 下面就是编译了。 ![编译2.png](https://oss-club.rt-thread.org/uploads/20210326/9e054dd7e9e8b6e6784ebcf030d1737f.png) 很幸运,一次就成功了。 ## 4、下载程序 打开下载工具,Downloader.exe,选择串口,点一下“开发”。选择`rtthread,dcf`文件。 ![打开下载软件.png](https://oss-club.rt-thread.org/uploads/20210326/9cdc9c2618b9c17b34978454a14d65a2.png) 点“开始”。 ![下载.png](https://oss-club.rt-thread.org/uploads/20210326/d5f628e343ade1caf61e8cac5b426c1a.png) 下载完成后,就打印出了RT-Thread的标志性界面。 输入命令`uart_sample` ![运行测试程序.png](https://oss-club.rt-thread.org/uploads/20210326/2fcaaf5a7d04453fe3d2b20b335473cf.png) 将测试板的TX RX接到电脑串口,*注意一下,这是TTL电平,高电平是3.3V*。 ![测试结果.png](https://oss-club.rt-thread.org/uploads/20210326/367a3ee9dce4cfbdb06e39cb11c7ef02.png) 发送0x31,返回0x32。数字增加1,实验成功。 ## 5、总结 RT-Thread Studio、RT-Thread是完美的组合,在此基础上就AB32VG1的开发简直是水到渠成的。AB32VG1自带蓝牙功能,可以结合串口,实现蓝牙串口功能。 程序地址:[https://github.com/leton-tian/AB32-UART.git](https://github.com/leton-tian/AB32-UART.git)
1
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
templeton
这家伙很懒,什么也没写!
文章
3
回答
1
被采纳
0
关注TA
发私信
相关文章
1
rt_thread studio 啥时候能用呢
2
RT_Thread使用反馈帖子
3
RTT studio 下的 AT指令问题。
4
什么时候RTT Sdudio支持Ubuntu,Deepin和UOS操作系统
5
rt thread Studio 关于J-LINK下载问题
6
RT-Thread studio 调试设置问题
7
RTT-Studio 如何设置调试配置参数?
8
rt_thread studio 软件包配置
9
RT-Studio目前只能开发STM32的项目吗?
10
rtt studio 生成hex名字修改
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
805
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部