首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

LinuxShell编程(2)

小姐姐照片一张 UNIX系统中,Shell拥有一个强大特性:文件名替换。...$ *能够实现部分文件替换功能,它实际还可以与其他字符配合使用,以限制所能够匹配到文件名范围。...$ chap *能够匹配以chap开头所有文件。指定命令被调用之前,这些文件名替换就已经完成了。...第二个echo中,首个*能够匹配t字符之前任意多个字符,另一个*匹配t之后任意多个字符,因此,只要包含t文件名,就会被打印出来。...指定字符范围时候,唯一限制就是第一个字符字母表必须位于最后一个字符之前,因此[z-f]并不是一个有效字符范围,而[f-z]就没有问题。

77710

Linux开发】串口接收不定长数据,接收中断+超时判断方案

前言 Linux 开发时,经常会遇到串口通信来完成两个设备之间交互。...空闲中断法: 当串口一段时间内没有接收到新数据时,会触发空闲中断。 空闲中断实际与接收中断超时判断原理相似,但空闲中断是硬件自带功能,而接收中断超时判断则需要我们自己实现。...当接收FIFO中有数据,但在一定时间内没有新数据到来时触发。位值为(1UL<<3),即二进制00001000。...(TLS_UART_1, rx_fifo_buf, rx_len); // 发送 } } } } 小结 STM 32 串口通信功能在linux 开发和嵌入式开发中是最频繁使用功能之一...如何判断一次发送数据量,对接收者来说就是一个挑战。 前面提到有三种方案可以解决这个问题,本文介绍了接收中断和超时检测方法来处理,并且W 801 开发板提供了详尽指导教程。

14910
您找到你想要的搜索结果了吗?
是的
没有找到

FPGA零基础学习:UART协议驱动设计

UART接口标准有很多,有RS232、RS485等等。 台式PC一般会有一个DB9,接口标准为RS232。 ? 此接口各个工业板也有很多。...即上游模块把想要发送数据写入到发送器中FIFO里,发送器控制逻辑检测到FIFO中有数据时,就读出来进行发送。...负责将tx_fifo数据按照UART协议规定发送出去。 rx_ctrl模块:接收逻辑控制部分。负责将外部数据线上数据按照UART协议规定解析出来,存储到tx_fifo中。...tx_fifo_rden为tx_fifo读使能信号,拉高一拍,读出一个数据,所以每次只能拉高一拍。tx_en为低器件,且外部tx_fifo中有数据时,拉高tx_fifo_rden。...我们开发板,使用USB UART芯片就是CP2102,所以在此需要安装驱动。 打开04_串口驱动,安装CP210x_windows_drivers。 文件中有两个安装程序。

62330

FPGA零基础学习:UART协议驱动设计

UART接口标准有很多,有RS232、RS485等等。 台式PC一般会有一个DB9,接口标准为RS232。 此接口各个工业板也有很多。...即上游模块把想要发送数据写入到发送器中FIFO里,发送器控制逻辑检测到FIFO中有数据时,就读出来进行发送。...负责将tx_fifo数据按照UART协议规定发送出去。 rx_ctrl模块:接收逻辑控制部分。负责将外部数据线上数据按照UART协议规定解析出来,存储到tx_fifo中。...tx_fifo_rden为tx_fifo读使能信号,拉高一拍,读出一个数据,所以每次只能拉高一拍。tx_en为低器件,且外部tx_fifo中有数据时,拉高tx_fifo_rden。...我们开发板,使用USB UART芯片就是CP2102,所以在此需要安装驱动。 打开04_串口驱动,安装CP210x_windows_drivers。 文件中有两个安装程序。

86730

S3C2440—UART原理简介

方式传输数据,而且每个UART都分别有一个64个字节接收FIFO和一个64个字节发送FIFO。...UART由波特率发生器、发送器、接收器和控制逻辑组成,使用系统时钟可以达到115.2Kbit/s,如果使用UEXTCLK引脚提供外部时钟,则可以达到更高波特率,波特率可以通过编程进行控制。...使用UART之前,需要设置波特率、传输格式(有多少个数据位、是否使用校验位、是奇校验还是偶校验、有多少个停止位、是否使用流量控制),选择UART通道工作模式为中断模式或DMA模式。...设置各个FIFO触发阈值,即发送FIFO中有多少个数据时产生中断,接收FIFO中有多少个数据时产生中断。...读取UFSTATn寄存器可以知道各个FIFO是否已经满、其中有多少个数据。

66230

【STM32H7教程】第30章 STM32H7USART应用之八个串口FIFO实现

大家自己做板子,测试串口收发是乱码的话,重点看stm32h7xx_hal_conf.h文件中HSE_VALUE大小跟板子实际晶振大小是否一致,然后再看PLL配置。  ...每个串口都有2个FIFO缓冲区,一个是用于发送数据TX_FIFO,一个用于保存接收数据RX_FIFO。 我们来看下这个FIFO定义,bsp_uart_fifo.h文件。...如果超过了FIFO大小,就需要等待有空间可用,针对这种情况有个重要知识点,就是当缓冲刚刚填满时候要判断发送空中断是否开启了,如果填满了还没有开启,就会卡死while循环中,所以多了一个刚填满时判断...电后串口打印信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1 程序设计: 系统栈大小分配: RAM空间用DTCM: 硬件外设初始化 硬件外设初始化是 bsp.c 文件实现...电后串口打印信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1 程序设计: 系统栈大小分配: RAM空间用DTCM: 硬件外设初始化 硬件外设初始化是 bsp.c 文件实现

2.7K50

嵌入式:万字详解通信接口设计

UART 操作 (1)数据发送 UART传送数据数据帧是可编程,它包含1个起始位、58个数据位,1个可选奇偶位和12个停止位,由控制寄存器ULCONn定义。...(3)自动流控制 自动流控制AFC(Auto Flow Control)模式下,UART数据发送由nCTS(清除发送信号)控制,只有该信号有效情况下,UART发送器才会将数据传送到FIFO...(6)UART错误状态FIFO UART有一个错误状态FIFO,用来指出FIFO哪个数据接收时出错,错误中断发生在有错误数据被读取时。...其工作原理如下: 红外与普通UART对比(发送) 红外与普通UART对比(接收) 与UART相关寄存器 UART控制寄存器(ULCONn) UART控制寄存器(UCONn) UART FIFO...控制寄存器(UFCONn) UART Modem控制寄存器(UMCONn) UART TX/RX状态寄存器(UTRSTATn) UART错误状态寄存器(UERSTATn) UART FIFO状态寄存器(

81540

【STM32H7教程】第31章 STM32H7USART应用之RS485

FIFO也是建立30章基础。  ...31.4 RS485驱动设计 RS485驱动实现是建立第31章讲解串口FIFO基础,关键知识点已经第31章节做了详细讲解,这里把485驱动涉及到两个关键地方做个说明。...如果超过了FIFO大小,就需要等待有空间可用,针对这种情况有个重要知识点,就是当缓冲刚刚填满时候要判断发送空中断是否开启了,如果填满了还没有开启,就会卡死while循环中,所以多了一个刚填满时判断...多机接线效果: 电后串口打印信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1 程序设计: 系统栈大小分配: RAM空间用DTCM: 硬件外设初始化 硬件外设初始化是 bsp.c...多机接线效果: 电后串口打印信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1 程序设计: 系统栈大小分配: RAM空间用DTCM: 硬件外设初始化 硬件外设初始化是 bsp.c

2.1K20

FreeRTOS例程4-串口DMA收发不定长数据

2编程要点 2.1DMA发送 2.1.1串口DMA发送配置 由于是发送不定长数据,先不需要配置发送长度,每次发送时,再配置。...模式 DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full; //FIFO大小 DMA_InitStructure.DMA_MemoryBurst...模式 DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full; //FIFO大小 DMA_InitStructure.DMA_MemoryBurst...DMA_Cmd (Uart_Rx_DMAStream,ENABLE);//使能 } 2.2.2串口空闲中断 串口空闲中断作用与一篇FreeRTOS例程3-串口中断接收不定长数据与二值信号量使用介绍一样...,都是发送完一串字符后被触发,这次由于使用了DMA接收,所以接收数据DMA缓冲区,且接收数据长度可用根DMA接收通道总长度与剩余长度差值来计算,将接收数据复制出来使用即可,同时释放自定义串口空闲信号量

2.4K20

【STM32H7教程】第66章 STM32H7低功耗串口LPUART应用之串口FIFO和停机唤醒实现

大家自己做板子,测试串口收发是乱码的话,重点看stm32h7xx_hal_conf.h文件中HSE_VALUE大小跟板子实际晶振大小是否一致,然后再看PLL配置。...每个串口都有2个FIFO缓冲区,一个是用于发送数据TX_FIFO,一个用于保存接收数据RX_FIFO。 我们来看下这个FIFO定义,bsp_lpuart_fifo.h文件。...,主要实现如下三个功能   收到新数据后,会将数据压入RX_FIFO。  ...如果超过了FIFO大小,就需要等待有空间可用,针对这种情况有个重要知识点,就是当缓冲刚刚填满时候要判断发送空中断是否开启了,如果填满了还没有开启,就会卡死while循环中,所以多了一个刚填满时判断...电后串口打印信息: 波特率 115200,数据位 8,奇偶校验位无,停止位 1 程序设计: 系统栈大小分配: RAM空间用DTCM: 硬件外设初始化 硬件外设初始化是 bsp.c 文件实现

1.9K20

【STM32H7教程】第29章 STM32H7USART串口基础知识和HAL库API

COM Contronller串口控制器 串口相关寄存器基本都在这部分。 TxFIFO和RxFIFO 串口发送和接收都支持了硬件FIFO功能。...比如ES8266串口WIFI芯片,电时有个奇怪波特率74880bps,当然STM32是可以支持。 可编程数据字长度,支持7bit,8bit和9bit。 可配置停止位。...29.2.8 单工,半双工和全双工通讯 单工:一个单工串行通讯系统中,一般至少有两根线(信号线和地线),数据传送只有一个方向,例如可以使用单工数据传送将数据从一个简单数据监测系统传送到PC。...29.3.2 串口句柄结构体UART_HandleTypeDef HAL库USART_TypeDef基础封装了一个结构体UART_HandleTypeDef,定义如下: typedef struct...第4步:如果需要,可以编程高级特性,比如TX/RX交换引脚,自动波特率检测。通过第1步串口结构体变量huart结构体成员AdvancedInit来设置。

2K51

【STM32H7教程】第65章 STM32H7低功耗串口LPUART基础知识和HAL库API

COM Contronller串口控制器 串口相关寄存器基本都在这部分。   TxFIFO和RxFIFO 串口发送和接收都支持了硬件FIFO功能。  ...TX和RX引脚互换功能 发送偏移寄存器(TX Shift Reg)和接收偏移寄存器(RX Shift Reg)与TX引脚,RX引脚之间弄了个交叉连接,这里意思是支持了引脚互换功能,这样大家设计PCB...65.2.8 单工,半双工和全双工通讯 单工:一个单工串行通讯系统中,一般至少有两根线(信号线和地线),数据传送只有一个方向,例如可以使用单工数据传送将数据从一个简单数据监测系统传送到PC。...65.3.2 低功耗串口句柄结构体UART_HandleTypeDef HAL库USART_TypeDef基础封装了一个结构体UART_HandleTypeDef,定义如下: typedef struct...第4步:如果需要,可以编程高级特性,比如TX/RX交换引脚,自动波特率检测。通过第1步串口结构体变量huart结构体成员AdvancedInit来设置。

1.8K21

W800W801开发版入门(二)——串口通信UART

UART简介 通用异步收发传输器,即为UART(Universal Asynchronous Receiver/Transmitter),是一种常见数据通信协议,用于计算机和外部设备之间传输数据。...UART中,字母"A"代表"异步",表示UART通信不依赖于共享时钟信号来同步数据传输,而是使用特殊起始位和停止位来标志数据字开头和结尾,以便发送器和接收器能够协调数据传输。...采用这种异步通信方式使UART非常适用于各种设备之间数据传输,特别是需要不同速率设备之间进行通信时。UART通信较为简单和灵活,可以很多低速或嵌入式应用中使用。...> 0) { rx_len = tls_uart_read(TLS_UART_0, rx_fifo_buf, rx_length);//串口0接收到数据 // 去除接收到字符中换行符...:%s\n",rx_length,rx_fifo_buf); rx_length = 0; tls_uart_write(TLS_UART_0, rx_fifo_buf, rx_len)

14110

Linux-485收发切换延迟解决方法

通常由CPU引出三根管脚:两个UART管脚(记作PIN_RX、PIN_TX)和一个485收发方向控制管脚(记作PIN_DIR)。...应用程序编写时,原来普通串口通信基础,加上485收发方向控制即可。 具体说来,UART发送过程中,将PIN_DIR脚拉高,发送完毕再将PIN_DIR脚拉低,使485总线可以接收数据。...知识储备 解决此问题,需要有如下知识储备: 了解485通信原理 了解Linux终端设备驱动架构,搞清楚板串口对应实际驱动源文件 掌握Linux设备驱动中中断处理机制:顶半部、底半部(tasklet...实现方法 本应用中对应串口设备驱动文件为linux/drivers/tty/serial/8250/8250_core.c 3.1 由应用程序控制是否打开串口设备485功能 串口驱动里切换485方向对性能有一些影响...应用程序串口接收read()函数一直处于阻塞状态,直到数据信号线中传输完毕驱动层中有数据可读。

7.5K30

NUC505 - HS USB

跟着看RXTOIF描述: 当RX FIFO非空且RX FIFO无活动发生,定时溢出计数器等于TOIC时,该位置位。 总和之即:超时中断要产生,需要RX FIFO非空,并且TOIC超时溢出并使能。...那么问题就在于当正好到RX FIFO阈值中断时,中断服务函数把数据全都读出来了导致RX FIFO空了,所以就不满足了,自然就无法产生超时溢出中断了!真是蛋疼设计,那怎么解决呢?...解决方法很简单,阈值中断中让rx fifo不空就完事了。留一个字节fifo里!问题完美解决!...顺便再吐槽一下:UART0RX和TX FIFO是16, UART1和UART2RX TX FIFO是64!...就三个UART还整不一样,顺便赞一下:RS485模式,使用RTS控制485换向端,真香!

1.1K20

6-ESP8266 SDK开发基础入门篇--操作系统入门使用

控制指示灯亮 0xaa 0x55 0x00  就控制指示灯灭 注意哈,我是用假设没有操作系统思路,其实如果有了操作系统应该用操作系统提供API实现 因为8266是用FreeRtos,,,我还没有深入了解这个系统...其实就是满中断里面把数据存到咱定义数组,空闲中断里面读出来剩余数据 然后置位一个标志,说明接收到一条完整数据了 LOCAL void uart0_rx_intr_handler(void *para...//只是告诉我们这个单片机内部FIFO是128字节大小 uint32 uart_intr_status = READ_PERI_REG(UART_INT_ST(uart_no)) ;//读取中断状态...控制LED 1S亮 1S灭 对了因为咱用是操作系统哈,所以千万别这样想 ?...其实这就是操作系统魅力所在....如果任务延时一样,那么你会看着两个函数是同时进行 首先说一点哈 ? ?

55620

8_UART串口编程

8.2.2.4 UART1_UCR2: ​ 控制寄存器2:主要用于设置串口发送帧格式,帧长,是否奇偶校验,是否忽略有RTS,软复位等,本章只使用其中5位,后续UART编程会详细讲解。...8.2.2.6 UART1_UFCR: ​ 串口FIFO控制寄存器,设置发送与接收fifo大小,最大32字节,串口时钟分频系数等,只要把RFDIV此位设置为不分频,其他用默认值即可,更详细使用会在后面的...8.3.5 完善回显功能 ​ 我们会发现一小节所写函数中有点问题,当我们按下回车时候不会换行到行首,而是直接到行首,所以我们稍微修改main函数完善它。 ​...8.3.6 实现串口发送字符串功能 8.3.6.1 步骤1:实现打印字符串函数 ​ 实现打印字符串函数**,**发送单字节基础,加上判断语句,实现连续打印字符。 ​...8.4 移植printf 8.4.1 1.3章节工程文件基础移植 ​ ①uart.c中加入raise函数,用于防止编译失败。 ​

1.4K10
领券