Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
UART
NXP MCXN947测评之 uart
发布于 2024-03-22 21:55:11 浏览:153
订阅该版
【实现步骤】 1、在工程下面打开env工具,使用 menuconfig打开图形化配置工具,菜单Hardware Drivers Config → On-chip Peripheral Drivers → Enable UART。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240322/4c8fa3b9d454d8b9e18aa0fd737c5f9d.png.webp) 打开uart4、uart5、uart2三个串口。 保存好后,使用scons --target=mdk5来生成工程。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240322/a93768c4ad3e795c7fa3c4392a0b5f72.png.webp) 由于工程的shell占用的是uart4,而uart2,我的开发板是没有引出的,所以使用uart5来做测试。uart5的TX为RX分P1_17、P1-16。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240322/591bef8e52a932fcf3019d34a83288bc.png.webp) 他的IO为开发板的52、51 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240322/44d04270995ccce7b9b8210a09b9a4f3.png.webp) 【代码实现】 1、在工程中添加uart的分组,新建一个uart.h与uart.c并把他加入分组与头文件中。 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240322/5de7bd93dc93eca12b74abbaa198cf42.png.webp) 2、编写代码如下: ```c #include "uart.h" #include
#include
#include "string.h" #define UART_NAME "uart5" static rt_device_t serial;//串口设备句柄 static struct rt_semaphore rx_sem; 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; /* 接收到信号量后处理串口数据 */ while(1) { while(rt_device_read(serial,-1,&ch,1)!=1)//阻塞等待接收信号量,等到信号量后读取1个字节的数据 rt_sem_take(&rx_sem,RT_WAITING_FOREVER); ch; rt_device_write(serial,0,&ch,1);//读取到的数据通过串口错位输出 } } static int uart_int_sample(int argc,char* argv[])//主函数 { rt_err_t ret=RT_EOK; char uart_name[RT_NAME_MAX]; char str[]="helloworld!\r\n"; rt_strncpy(uart_name,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_kprintf("start mq\n"); rt_device_open(serial,RT_DEVICE_FLAG_INT_RX);//以DMA接收及轮询方式打开串口 rt_sem_init(&rx_sem,"rx_sem",0,RT_IPC_FLAG_FIFO);//初始化信号量 rt_device_set_rx_indicate(serial,uart_input);//设置接收回调(消息队列处理)函数 rt_device_write(serial,0,str,(sizeof(str)-1));//发送字符串 rt_thread_t thread=rt_thread_create("serial",serial_thread_entry,RT_NULL,1024,25,10);//创建串口处理线程 if(thread!=RT_NULL) { rt_kprintf("start thread\n"); rt_thread_startup(thread); } else ret=RT_ERROR; return ret;//返回结果 } MSH_CMD_EXPORT(uart_int_sample,uart device test);//调试指令 ``` 【实验效果】 下载程序后,打开终端按tab键后可以找发现uart_int_sample在命令中了,执行uart_int_sample命令,并打开串口组手,接入uart5的串口。输入hello world以及其的字符,成功的返回 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20240322/2fef0e854767cbe788c96005557c6b86.png.webp) 【感受】 当时我接收评测组说我成功入选,但是后面又通知我说,我是名单之外的。所以我这次是一个编外人员,因此我使用的MCXN947跟这次试用的开发板不是一样的,所以IO什么的不一定适合于你。
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
Lu_盼盼
这家伙很懒,什么也没写!
文章
32
回答
19
被采纳
0
关注TA
发私信
相关文章
1
rt thread 2.0.2 usart 接收缓存问题
2
关于STM32串口通信的问题
3
STM32F1+RTT串口接收终端数据丢失问题
4
UART TX丢数据?
5
RTT打开串口的时候如何自定义波特率呢?
6
STM32F4的USART数据接收问题
7
串口1234使用问题
8
串口接收回调函数
9
LPC18xx UART问题讨论
10
x1000串口配置的失败问题
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
机器人操作系统 (ROS2) 和 RT-Thread 通信
4
国产MCU移植系列教程汇总,欢迎查看!
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
串口
LWIP
Env
SPI
Bootloader
AT
ART-Pi
Hardfault
CAN总线
FinSH
USB
文件系统
DMA
RT-Thread
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
ota在线升级
WIZnet_W5500
I2C_IIC
UART
flash
cubemx
packages_软件包
freemodbus
PWM
潘多拉开发板_Pandora
定时器
BSP
ADC
中断
flashDB
编译报错
socket
keil_MDK
GD32
msh
Debug
SFUD
MicroPython
ulog
SDIO总线
rt_mq_消息队列_msg_queue
本月问答贡献
小小李sunny
4
个答案
3
次被采纳
踩姑娘的小蘑菇
6
个答案
2
次被采纳
a1012112796
4
个答案
2
次被采纳
聚散无由
1
个答案
2
次被采纳
三世执戟
9
个答案
1
次被采纳
本月文章贡献
比特饼干
2
篇文章
3
次点赞
Z_Y
2
篇文章
1
次点赞
聚散无由
1
篇文章
4
次点赞
zhuzhuzhu
1
篇文章
4
次点赞
踩姑娘的小蘑菇
1
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部