Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
UART
关于官网上《串口设备应用笔记》串口问题
发布于 2018-11-06 16:46:56 浏览:2949
订阅该版
硬件板子为安富莱STM32F429的板子,默认uart1用作打印,打印功能正常,将uart2用作测试,uart2连接电脑串口小助手上,用的BSP为STM32F4xx_hal,将官网手册的app_uart.c源码假如工程中,运行后问题如下: 1.发送问题 ![1.png](/uploads/201811/06/153256pclyvkwqyhyw9c3y.png) 通过uart_putchar函数最终会调用串口驱动的如下函数: ![2.png](/uploads/201811/06/153449ki4vzsam1h1jjse9.png) 通过单步调试,程序可以执行 uart->UartHandle.Instance->DR = c;但是执行完电脑上并没有接收到数据,并且uart2寄存器也没有数据。 我把程序中uart1和uart2功能换位置,更改了如下代码: rtconfig.h中由#define RT_CONSOLE_DEVICE_NAME "uart1"改成#define RT_CONSOLE_DEVICE_NAME "uart2" app_uart.c中由uart_open("uart2") != RT_EOK改成了uart_open("uart1") != RT_EOK 是否还需要其他地方改动? 改动完之后,发现两个串口都没有数据输出,但都可以接收数据(上位机发数据都能进入中断)。 是不是还有其他地方需要改动的?求指教 2.接收问题 ![3.png](/uploads/201811/06/164420wh4z64fhfahe2hfm.png)![4.png](/uploads/201811/06/164421xllp8rll9plxwo83.png) 根据流程图,有点没弄明白,为什么发送事件标志后,会去执行rt_device_read函数?
查看更多
5
个回答
默认排序
按发布时间排序
misonyo
2018-11-07
这家伙很懒,什么也没写!
使用list_device命令看看是否2个串口设备都有的。不懂事件的话建议先学习一下内核基础知识。 红框里面如果没有读到数据,那么就会等待一个事件,这个时候线程已经挂起,当串口接收到数据的时候,接收中断里面会发送这个事件,这个时候挂起的线程就会被激活,然后继续读数据,这个时候已经有数据了,就会帆帆读取到的数据。
yangjie
认证专家
2018-11-07
hello
1、关于uart的sample可以看看这个(可以使用env下载外设示例):uart_sample.c ,[https://github.com/RT-Thread-packages/peripheral-sample](https://github.com/RT-Thread-packages/peripheral-sample) 2、线程由于接收不到事件而挂起,当其他线程或者中断发送事件的时候,通过参数 set 指定的事件标志来设定 event 事件集对象的事件标志值,然后遍历等待在event事件集对象上的等待线程链表,判断是否有线程的事件激活要求与当前 event对象事件标志值匹配,如果有,则唤醒该线程。
fengshao1370
2018-11-07
这家伙很懒,什么也没写!
>使用list_device命令看看是否2个串口设备都有的。不懂事件的话建议先学习一下内核基础知识。 > >红框里面如果 ... --- 有2个设备的,今天我又测试了下,发现开发板有一个TX的电阻没有焊,弄过之后调通了。另外,关于事件问题,我原来是看的指南,里面有历程如下: [attach]6782[/attach] 按照这个历程就比较容易理解,因为当发送事件后,执行的函数为rt_event_recv()函数,这样返回RT_EOK,会继续执行if函数,这个和下图不一样 [attach]6783[/attach] 这个执行完rt_event_recv()函数后,为什么会又返回去执行rt_device_read()函数,按理说执行完就完了吧,我是这样理解的。请指教一下
misonyo
2018-11-08
这家伙很懒,什么也没写!
>有2个设备的,今天我又测试了下,发现开发板有一个TX的电阻没有焊,弄过之后调通了。另外,关于事件问题 ... --- rt_event_recv()函数返回后是不是还要判断while循环的条件??因为还没有退出循环呀
fengshao1370
2018-11-08
这家伙很懒,什么也没写!
>rt_event_recv()函数返回后是不是还要判断while循环的条件??因为还没有退出循环呀 ... --- 貌似是啊,基础没打牢啊:L,多谢多谢
撰写答案
登录
注册新账号
关注者
0
被浏览
2.9k
关于作者
fengshao1370
这家伙很懒,什么也没写!
提问
4
回答
10
被采纳
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
国产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组件
最新文章
1
在用clangd开发RTT吗,快来试试如何简单获得清晰干净的工作区
2
GD32F450 片内 flash驱动适配
3
STM32H7R7运行CherryUSB
4
RT-Smart首次线下培训,锁定2024 RT-Thread开发者大会!
5
使用RC522软件包驱动FM1722
热门标签
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
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部