Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
NXP 微控制器
NXP-MCXN236
UART
NXP MCXN236测评——rt-thread中配置启动uart5
发布于 2024-07-05 14:19:18 浏览:373
订阅该版
其实我们在上面的测试中已经看到能通过debug的模拟串口打印信息了,我们这次用的N236是在N947的配置文件的基础上更改的,同样都是MCX N系列的单片机有很多基本外设是相同的,也就是debug串口包括引脚以及外设基本上都是一致的,我们看一下FRDM-**MCXN236开发板中的debug串口相对应的具体信息:** TYPE-C连接到MCU-link(LPC55S69): ![1.png](https://oss-club.rt-thread.org/uploads/20240705/209d029f50d0b1cff4244a114db67b02.png.webp) 然后连接到MCU_LINK_RX/TX引脚: ![2.png](https://oss-club.rt-thread.org/uploads/20240705/7349ded2796dc08202b85e56403cf64a.png.webp) 最后连接到N236的P1_9/P1_8,与N947是一致的: ![3.png](https://oss-club.rt-thread.org/uploads/20240705/e3326a20d47d665ca142ef00be9deeb6.png.webp) 不过我们这次是使用一个全新的串口实现收发操作。 **env工具开启串口:** 同样的操作,来到对应的bsp文件夹下右键打开env工具: ![4.png](https://oss-club.rt-thread.org/uploads/20240705/9754d50b69d14b3ece317656fd6a5c86.png.webp) 输入menuconfig 命令,回车: ![5.png](https://oss-club.rt-thread.org/uploads/20240705/ceae2027c7251e7a8eb5538a97e9b802.png.webp) 进入配置界面Hardware Drivers Config-->On-chip Peripheral: ![6.png](https://oss-club.rt-thread.org/uploads/20240705/70378fa26cfd9ef062db17db4f17ed65.png.webp) 可以看到我们已经打开了串口2,串口4,串口5: ![7.png](https://oss-club.rt-thread.org/uploads/20240705/4ec2512f9f5031964f7c5e1257f4788d.png.webp) 主要是我们在配置文件中已经定义了这几个串口,并且对应的N947工程都开启了,注意打开UART5: ![8.png](https://oss-club.rt-thread.org/uploads/20240705/eafe1a9912b58172da6eb33ba8ccacb7.png) 通过对应的引脚查询,基本的引脚对应是正确的: ![9.png](https://oss-club.rt-thread.org/uploads/20240705/ccac4b5d7979ada90ece443bf19f9fad.png.webp) 串口的驱动文件已经在drv_usart.c中,我们只需要写**应用层代码**就可以了: ```c #define SAMPLE_UART5_NAME "uart5" /* 串口设备名称 */ static rt_device_t serial_uart5; /* 串口设备句柄 */ static struct rt_semaphore rx_sem; /* 用于接收消息的信号量 */ struct serial_configure config = RT_SERIAL_CONFIG_DEFAULT; /* 初始化配置参数 */ /* 接收数据回调函数 */ 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_uart5,-1,&ch,1)!=1)//阻塞等待接收信号量,等到信号量后读取1个字节的数据 rt_sem_take(&rx_sem,RT_WAITING_FOREVER); rt_device_write(serial_uart5,0,&ch,1);//读取到的数据通过串口错位输出 } } /* 串口主函数调用 */ static int uart_int_sample(void) { rt_err_t ret=RT_EOK; char uart_name[RT_NAME_MAX]; char str[] = "RT-Thread MCX N236 Uart5 Start!\n"; rt_strncpy(uart_name,SAMPLE_UART5_NAME,RT_NAME_MAX); serial_uart5=rt_device_find(uart_name);//查找串口设备 if(!serial_uart5) { rt_kprintf("find %s failed!\n",uart_name); return RT_ERROR; } rt_kprintf("start mq\n"); rt_device_open(serial_uart5,RT_DEVICE_FLAG_INT_RX);//以轮询方式打开串口 rt_sem_init(&rx_sem,"rx_sem",0,RT_IPC_FLAG_FIFO);//初始化信号量 rt_device_set_rx_indicate(serial_uart5,uart_input);//设置接收回调(消息队列处理)函数 rt_device_write(serial_uart5,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 uart5\n"); rt_thread_startup(thread); } else ret=RT_ERROR; return ret;//返回结果 } ``` **效果如下**,配置完成后通过Uart5发送字符串,并且通过串口5收到的数据原路返还: ![10.png](https://oss-club.rt-thread.org/uploads/20240705/1839061b54e36a68256f08be4a9877a4.png.webp)
3
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
无言的朝圣
这家伙很懒,什么也没写!
文章
5
回答
0
被采纳
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
I2C_IIC
ESP8266
UART
WIZnet_W5500
ota在线升级
cubemx
PWM
flash
freemodbus
BSP
packages_软件包
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
编译报错
中断
Debug
rt_mq_消息队列_msg_queue
SFUD
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
出出啊
1518
个答案
343
次被采纳
小小李sunny
1444
个答案
290
次被采纳
张世争
813
个答案
177
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
149
次被采纳
本月文章贡献
出出啊
1
篇文章
5
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
3
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
2
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部