社区首页 >问答首页 >如何在没有创建RS232任务的情况下从RS232端口读取数据(嵌入式FreeRTOS C)?

如何在没有创建RS232任务的情况下从RS232端口读取数据(嵌入式FreeRTOS C)?
EN

Stack Overflow用户
提问于 2021-12-08 22:10:43
回答 2查看 202关注 0票数 -1

我想为嵌入式系统编写C代码,这样在RS232端口接收的数据应该被连续读取,而不需要为读取数据创建单独的"RS232任务“。

有人能帮我吗?

我只需要一种基本的方法来读取数据,而不需要创建任务。

EN

回答 2

Stack Overflow用户

发布于 2021-12-08 23:44:59

标识告诉您是否接收到某些数据的函数。通常,它返回一个布尔值或接收到的字节数。(顺便说一句,RS232上的大多数协议允许每次传输5到8位数据。)

在条件块中使用该函数调用实际读取一个或多个接收字节的下一个函数。如果没有收到任何信息,这将阻止循环阻塞。

示例(在您的示例中不知道函数是如何命名的):

代码语言:javascript
代码运行次数:0
复制
/* any task */ {
    for (;;) /* or any other way of looping */ {
        /* do some stuff, if needed */
        if (areRs232DataAvailable()) {
            uint8_t data = fetchRs232ReceivedByte();
            /* handle received data */
        }
        /* do some stuff, if needed */
    }
}
票数 0
EN

Stack Overflow用户

发布于 2021-12-10 22:51:42

我会问,为什么您认为从UART读取数据(我认为这就是您所说的"RS-232")需要一项任务?解决方案将在很大程度上取决于您的平台和环境,除了FreeRTOS之外,您还没有指定它,它不提供任何串行I/O支持。

如果您的平台或设备库已经包含了串行I/O,那么您可以使用它,但是在非常低的级别,UART将拥有一个状态寄存器和一个包含该数据的寄存器或FIFO。您可以简单地轮询数据可用性,然后读取数据。

为了避免在处理器忙于其他任务时丢失数据,您可以使用中断或DMA。至少,UART能够在接收到字符时产生中断。中断处理程序将新数据放入FIFO缓冲区(例如RTOS消息队列),并将接收从缓冲区异步读取的串行数据的任务。

DMA的工作方式类似,但是您可以对数据进行排队,以响应DMA中断。这将降低中断速率,但您必须处理部分完整DMA缓冲区无限期等待的可能性。而且,并不是所有的平台都必须支持作为DMA源的UART,甚至根本不支持DMA。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70285415

复制
相关文章
freeRTOS任务创建
我们曾经在公众号里给大家推送过关于freeRTOS在NXP kinetis KV4x上的移植,得到了猿友大量的反馈,很多猿友还是感觉对基础的一些东西不懂,今天我们就从基础的任务创建讲起,任务创建是RTOS学习中很重要的一步,因为你的应用就是基于大量的任务来实现的,那么在freeRTOS下如何来创建任务呢,首先打开任意一个移植好的例程或者我们移植的demo,找到task.h和tasks.c这两个文件里面定义声明了许多与任务相关的类型和函数。我们今天要讲的任务创建就来自这里。任务的创建主要有两个函数,先来看第一
用户1605515
2018/04/10
1.1K0
freeRTOS任务创建
RS232电平转换电路_rs422转rs232
SP3232EEN是RS-232电平转换芯片,与之相近的芯片还有SP3222,其区别见下表:
全栈程序员站长
2022/09/22
9250
RS232电平转换电路_rs422转rs232
FreeRTOS 任务调度 任务创建
FreeRTOS 的任务调度在 Source/include/task.c 中实现,包含了任务的创建、切换、挂起、延时和删除等所有功能。涉及到的链表组织见文章 <FreeRTOS 任务调度 List 组织> 。任务切换实现代码量比较大,因此关于任务调度这一块会分几个文章来描述,这一篇主要分析任务的创建的调用与实现。
orientlu
2018/09/13
3.3K0
FreeRTOS 任务调度  任务创建
嵌入式入门级学习——基于国产平台T3开发板的测试教程(3)
本文主要为嵌入式入门开发者的接口、网口等板卡基础快速测试,当初级学习的开发者拿到板卡,如何在最快时间内测试板卡正常?,继续测试教程(2)的按键、时钟设置、DDR读写、Micro SD接口读写、eMMC读写等测试部分,接下来是测试板卡的SATA接口、USB接口读写、USB HOST模式测试、USB DEVICE模式、串口测试等是否正常。
创龙科技Tronlong
2022/03/31
5.3K0
嵌入式入门级学习——基于国产平台T3开发板的测试教程(3)
RS232串口的Windows编程纪要
再次是一篇入门文,各路神仙退散。 直接进入主题,又不是历史课,关于RS232那些前世今生的故事就不摆了。 硬件链接 首先以9针小口为例(大口应当只能去博物馆看了吧)看一下管脚排布,其实RS232本身没进博物馆都已经够让我惊讶了。 (图片来自互联网) 通常使用的接线图: (图片来自互联网) 硬件接口部分的重点: 绝大多数情况下,我们只需要接2号、3号、5号,RXD/TXD/SG三根线就能正常工作。(顺便多说一句,古老的大串口是2、3、7号) 直连模式一般用于延长线或者大小口的转换线。
俺踏月色而来
2018/06/15
1.6K0
i.MX 8M Mini——四核Cortex-A53+Cortex-M4多核CPU如何实现工控
随着ARM处理器性能不断增强,当前越来越多产品都倾向尽量用单一架构的高性能ARM平台来满足产品的不同功能要求。但是,在工业应用领域还是要面对一些实时控制和通讯的要求,单一系统架构无法完全满足。面对复杂的工业应用场景,创龙科技推出了基于NXP i.MX 8M Mini设计的工业核心板和评估板,提供了四核Cortex-A53 + 单核Cortex-M4异构多核的组合使用方法,使Cortex-M4发挥出MCU实时控制性的特性,从而满足复杂的工业应用场景。
创龙科技Tronlong
2022/04/24
1.5K0
i.MX 8M Mini——四核Cortex-A53+Cortex-M4多核CPU如何实现工控
RS232电平和TTL电平
结论:TTL电平和RS232电平,无论是在电压范围还是在极性上(RS232是负逻辑)都有很大的不同。显然,这两种电平是不能直接相连的。为了把单片机的TTL电平转换成RS232电平,通常我们需要一个专用的转换芯片,比如SP3232。
全栈程序员站长
2022/08/01
7470
利用python发出rs232信号
最近接的一个项目涉及到用PC机的usb口收发rs232信号。为此,我写了一个简单的python程序,向usb口发送信号,然后通过一个usb转232线缆将信号转为rs232的。最后用万用表检查rs232端有无输出。
py3study
2020/01/10
2.4K0
利用python发出rs232信号
FreeRTOS静态和动态创建任务
静态创建任务 源代码 xTaskCreateStatic 静态的方式创建任务,需要用户先申请任务控制模块和任务栈需要的内存(一般使用静态内存),然后把内存地址传递给函数,函数负责其他初始化。 函数按顺序完成: * 根据用户传递内存,初始化任务 TCB * 初始化任务堆栈 * 将新建任务加入到就绪链表中 * 如果调度器运行,新任务优先级更高,触发系统切换
心跳包
2020/08/31
1.5K0
FreeRTOS例程1-基础任务创建
这里的返回值是BaseType_t,实际它是long类型,可以在portmacro.h文件中看到其定义:
xxpcb
2020/08/04
5510
TTL与RS232连接
大家好,又见面了,我是你们的朋友全栈君。同为 5 伏电源电压时, CMOS 与 TTL 基本上可以直接连接. 但是要注意两点:
全栈程序员站长
2022/07/23
4620
详解FreeRTOS:嵌入式多任务系统的任务状态(理论篇—6)
不同的嵌入式多任务系统可能有不同的任务状态定义,本专栏以FreeRTOS为例讲一讲任务状态。
不脱发的程序猿
2023/05/26
5260
详解FreeRTOS:嵌入式多任务系统的任务状态(理论篇—6)
STM32通信串口RS232
RS232是美国电子工业协会(Electronic Industries Association,EIA)于1962年发布的串行通信接口标准,其中RS为英文“Recomend Standard”的缩写,中文翻译为“推荐标准”,232为标识号。该标准对串行通信的物理接口及逻辑电平都做了规定,其输出的电平称为RS232电平。
韦东山
2022/05/05
1.1K0
STM32通信串口RS232
RS232 DB9串口设备
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/126665.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/23
5310
RS232 DB9串口设备
利用Java实现串口全双工通讯For RS232
Install RS232 Driver For ubuntu 对于Ubuntu而言,RS232串口通信驱动模块已经是源码编译安装了的,但是未必已经驱动了的,需要我们手工驱动。 sudo modprobe usbserial sudo modprobe pl2303 启动之后,我们可以查看系统加载驱动模块了没有,如下: ➜ ~ lsmod | grep pl2303 pl2303 20480 0 usbserial 40960 1 pl23
AlicFeng
2018/06/08
2.1K0
RS232串口的Windows编程纪要
再次是一篇入门文,各路神仙退散。 直接进入主题,又不是历史课,关于RS232那些前世今生的故事就不摆了。 硬件链接 首先以9针小口为例(大口应当只能去博物馆看了吧)看一下管脚排布,其实RS232本身没进博物馆都已经够让我惊讶了。 (图片来自互联网) 通常使用的接线图: (图片来自互联网) 硬件接口部分的重点: 绝大多数情况下,我们只需要接2号、3号、5号,RXD/TXD/SG三根线就能正常工作。(顺便多说一句,古老的大串口是2、3、7号) 直连模式一般用于延长线或者大小口的转换线。
俺踏月色而来
2018/06/21
4.6K7
基于 RS232/422/485 总线 DVFRAME 和 MODBUS 通讯
1、个人经验,基于以太网的通讯协议,通讯速率由快到慢,依次顺序 TCP/IP, Pvi, ModbusTCP, OPC…
剑指工控
2021/11/09
1.3K0
基于 RS232/422/485 总线  DVFRAME 和 MODBUS 通讯
详解FreeRTOS:嵌入式多任务系统的多任务机制(理论篇—2)
在详解FreeRTOS:嵌入式软件系统架构(理论篇—1)文章中,讲解到轮询系统架构、前后台系统架构和多任务系统架构的特点和区别。从本篇文章开始讲一讲嵌入式多任务系统架构的理论知识。
不脱发的程序猿
2023/05/10
5990
详解FreeRTOS:嵌入式多任务系统的多任务机制(理论篇—2)
认识UART接口[通俗易懂]
—————————————————————————————————————————-
全栈程序员站长
2022/10/05
4.4K0
认识UART接口[通俗易懂]
【工控技术】如何通过S7-1200与第三方设备实现自由口通信
西门子S7-1200 紧凑型PLC由于其性价比高,所以常被用作小型自动化控制设备的控制器,这也使得它经常与第三方的设备(扫描枪、打印机等设备进行通讯。因为没有第三方的设备,这里就以超级终端为例介绍自由口通讯。
剑指工控
2021/11/09
2.2K0

相似问题

用C语言读取rs232端口

13

使用python从RS232端口读取

11

从com端口rs232读取阻止模式

10

C#独立地从2 RS232(COM-端口)读取数据

15

用射频识别从RS232端口读取数据

22
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文