Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
UART
NXP 微控制器
NXP-MCXN947
NXP MCXN947测评之 uart
发布于 2024-03-22 21:55:11 浏览:338
订阅该版
【实现步骤】 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_盼盼
这家伙很懒,什么也没写!
文章
35
回答
19
被采纳
0
关注TA
发私信
相关文章
1
试贴-消灭0主题
2
LPC M4的一些资料
3
LPC4088的临时分支
4
lpc1788 ad 不稳定
5
1788 LCD控制器缓冲区字节问题
6
一起来学习LPC4088吧
7
上传LPC4088的realtouch主工程
8
RealBoard 4088预定帖 [第一批板子不多,预定提前结束]
9
晒RealBoard LPC4088开箱照啦,速带小板凳前来围观
10
4088主程序需要的SD卡资源
推荐文章
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
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部