精华内容
下载资源
问答
  • 串口接收 串口接收流程 编程USARTx_CR1的M位来定义字长。 编程USARTx_CR2的STOP位来定义停止位位数。 编程USARTx_BRR寄存器确定波特率。 使能USARTx_CR1的UE位使能USARTx。 如果进行多缓冲通信,配置USARTx_CR3的...

    串口接收

    串口接收流程

    1. 编程USARTx_CR1的M位来定义字长。
    2. 编程USARTx_CR2的STOP位来定义停止位位数。
    3. 编程USARTx_BRR寄存器确定波特率。
    4. 使能USARTx_CR1的UE位使能USARTx。
    5. 如果进行多缓冲通信,配置USARTx_CR3的DMA使能(DMAT)。
    6. 使能USARTx_CR1的RE位为1使能接收器。
    7. 如果要使能接收中断(接收到数据后产生中断),使能USARTx_CR1的RXNEIE位为1。

    当串口接收到数据时

    1. USARTx_SR(ISR)的RXNE位置1。表明移位寄存器内容已经传输到RDR(DR)寄存器。已经接收到数据并且等待读取。
    2. 如果开启了接收数据中断(USARTx_CR1寄存器的RXNEIE位为1),则会产生中断。(程序上会执行中断服务函数)
    3. 如果开启了其他中断(帧错误等),相应标志位会置1。
    4. 读取USARTx_RDR(DR)寄存器的值,该操作会自动将RXNE位清零,等待下次接收后置位。

    串口接收流程(HAL库)

    配置过程:

    接收配置步骤①~⑥和发送流程一样,调用HAL_UART_Init函数HAL_StatusTypeDef HAL_UART_Init(UART_HandleTypeDef *huart);

    步骤⑦开启接收中断:HAL_StatusTypeDef HAL_UART_Receive_IT(UART_Ha

    展开全文
  • python串口接收数据

    2021-03-17 02:44:28
    然后在左上角的搜索框搜索pyserial并选中pys 如何用python写个串口通信的程序 就是打开串口后,启动一个线程来监听串口数据的进入,有数据时,就做数据的处理(也可以发送一个事件,并携带接收到的数据)。...

    python3.5 读取串口中的数据怎么解码

    数据: b'\x0e\xbeUS\xf8]m\xf6\x97Z\n'

    采用默认通信参数 import serial t = serial.Serial('com1',9600) n = t.write('you are my world')print t.portstrprint n str = t.read(n)print str

    de33ce212175c5198cd8b6b2c264e7e1.png

    可以自己设置参数 import timeimport serialser = serial.Serial( #下

    python 串口传输问题

    商量的协议是这样的 市区代码(4byte) 假如我用python a = 0xe serial

    首先用USB线连上串口设备,然后确认是哪个COM口,下面用COM3为例。 import serial t=serial.Serial('COM3',115200) command = "aabbccddee" //十六进制字符串 t.write(command.decode("hex")) //转换成十六进制发送,否则设备不认识 print t.rea

    Python如何进行多串口通信?一个串口控制电机 一个用什么函数实现?

    下载 pyserial包 def OpenCom(self,*args): #设置端口和波特率 selComPort =‘com2’ #波特率 selBaudRate =9600 #奇偶校验 selParity = 'N' try: if(not self.mySerial): self.mySerial = serial.Serial(port=selComPort, baudrate=selBaudRate,b

    python 串口数据如何读取及转换

    python 串口数据如何读取及转换  我来答 分享 微信扫一扫 新浪微博 QQ空间 举报 浏览9 次 可选中1个或多个下面的关键词,搜索相关资料。

    串口发送16进制1234,用python接收的是'\x01\x01\x

    首先要引用Python的第三方库:serial,打开pycharm。

    点击file,里面有一个setting。进入setting后点击“progect”下的Project Interpreter,如图。

    然后在页面中,点击右边的加号,如图。

    然后在左上角的搜索框搜索pyserial并选中pys

    如何用python写个串口通信的程序

    就是打开串口后,启动一个线程来监听串口数据的进入,有数据时,就做数据的处理(也可以发送一个事件,并携带接收到的数据)。 我没有用到串口处理太深的东西。 客户的原程序不能给你,不过我给你改一下吧。 里面的一些东西,已经经过了处理。

    stm32用串口上传数据我怎么用Python读取

    printf("%d.%d %d.%d",\DHT11_Data.humi_int,DHT11_Data.humi_deci,DHT1可以使用串口模块serial读取

    如何用串口工具模拟器向python发送数据

    串口模块的波特率比较特别,找了几个串口工具都不支持。。。所以,干脆用python自己来写了,其实已经好奇好久了,别人的工具各种不顺手。 需要pyserial的支持,兼容各种平台,不需要新编译二进制文件。 先贴一个定时发送的代码: import serial

    我想用python做一个串口监听工具

    作为第三方工具,在不占用串口的情况下实现监听串口软件的收发数据。 网我可以告诉你原理,目前还木有现成的模块来做这个事情。 串口是作为流设备存在的,其驱动是操作系统底层实现好的。在windows里其实很简单,底层驱动里,限制的串口是非共享方式打开的,不允许别人访问,就这么简单,要想一定实现这个。

    怎么编写一个上位机读取串口数据 python3运行速度还算可以,就是界面编辑比较复杂。我也用wxpython做了一套上位机程序,每秒和下位机交换3个数据。

    展开全文
  • MCU-串口接收实现

    2021-08-02 16:33:49
    MCU-串口接收实现 例程仓库:https://gitee.com/ll0_0ll/MCU-UART 1.串口接收中断+空闲中断 空闲中断是接受数据后出现一个字节的高电平(空闲)状态,就会触发空闲中断。 接收中断是接收一个字节后就会触发。 串口...

    MCU-串口接收实现

    例程仓库:https://gitee.com/ll0_0ll/MCU-UART
    MCU-串口发送实现:https://blog.csdn.net/lblmlms/article/details/119328471

    1.串口接收中断+空闲中断

    空闲中断是接受数据后出现一个字节的高电平(空闲)状态,就会触发空闲中断。
    接收中断是接收一个字节后就会触发。

    1. 串口开启接收中断和空闲中断(RXNE+IDLE)
    2. 在接收中断中将数据放入接收buff
    3. 在空闲中断中发出信号,通知上层应用数据帧接收完毕
    void USART1_IRQHandler(void)
    {
        u8 tmp;
        if (USART_GetITStatus(USART1, USART_IT_RXNE) == SET)//接收中断
        {
            tmp = USART_ReceiveData(USART1);
            ringbuf_write(tmp, &g_ringbuf);
            USART_ClearITPendingBit(USART1, USART_IT_RXNE);
        }
        if(USART_GetITStatus(USART1, USART_IT_IDLE) == SET) //空闲中断
        {
            has_one_frame = 1;
    
            USART1->SR;
            USART1->DR;
        }
    
    }
    

    2.串口空闲中断+循环DMA+RingBuff

    这种方法的缺点是一旦数据处理比较慢,而剩余缓存空间不够大,那么未处理的数据将自动被DMA接收的新数据所覆盖,所以缓存大小一定要有富余

    1. 开启空闲中断和相应串口DMA循环模式
    2. 初始化一段内存空间作循环队列
    3. 串口来了数据,DMA会自动存放到队列的那段内存上,并且开了循环模式它会循环存放
    4. 在空闲中断里,查询出数据帧的长度,移动队列尾,发出信号
    void USART1_IRQHandler(void)
    {
        uint16_t count;
        static uint16_t last_count = UART1_RINGBUF_SIZE;
        if (USART_GetITStatus(USART1, USART_IT_IDLE) == SET)
        {
    
            count = DMA_GetCurrDataCounter(USART_TX_DMA_CHANNEL); //获取剩余的数据数量
            if ((last_count - count) <= 0)
            {
                last_count += UART1_RINGBUF_SIZE;
            }
            ringbuf_move_tail(&task_uart1_ringbuf, last_count - count);
            LOG_A("count:%d,last_count:%d", count, last_count);
    
            last_count = count;
            has_one_frame = 1;
    
            USART1->SR;
            USART1->DR;
        }
    
    }
    
    展开全文
  • 硬件平台:STM32F030CC软件平台:RT-Thread-NANO V3.1.2问题:在移植FinSH控制台时,配置串口1为中断接收,但接收到的字符是乱码的。串口数据发送正常。串口1的配置代码:static void RccConfigure(void){/* Enable ...

    硬件平台:STM32F030CC

    软件平台:RT-Thread-NANO V3.1.2

    问题:在移植FinSH控制台时,配置串口1为中断接收,但接收到的字符是乱码的。串口数据发送正常。

    串口1的配置代码:static void RccConfigure(void)

    {

    /* Enable AHB Clock */

    RCC_AHBPeriphClockCmd( RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB |

    RCC_AHBPeriph_GPIOC | RCC_AHBPeriph_DMA1, ENABLE);

    /* Enable APB1 Clock */

    RCC_APB1PeriphClockCmd( RCC_APB1Periph_TIM3 | RCC_APB1Periph_TIM14 |

    RCC_APB1Periph_USART2 | RCC_APB1Periph_PWR |

    RCC_APB1Periph_SPI2, ENABLE);

    /* Enable APB2 Clock */

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

    }

    /****************************************************************************************************************

    *****************************************************************************************************************

    *** Function name---------- serialB_low_gpio_init

    *** Descriptions----------- 串口GPIO的功能复用及初始化

    *** Input parameters------- none

    *** Output parameters------ none

    *** Return value----------- none

    *****************************************************************************************************************

    ****************************************************************************************************************/

    static void serialB_low_gpio_init(void)

    {

    GPIO_InitTypeDef GPIO_InitStructure = {0};

    /* gpio connect to usart a */

    GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);

    GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);

    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;

    GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;

    GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;

    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

    /* gpio initialize */

    GPIO_InitStructure.GPIO_Pin = SERIAL_B_TX_PIN;

    GPIO_Init(SERIAL_B_TX_PORT, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = SERIAL_B_RX_PIN;

    GPIO_Init(SERIAL_B_TX_PORT, &GPIO_InitStructure);

    }

    /****************************************************************************************************************

    *****************************************************************************************************************

    *** Function name---------- serialB_low_nvic_init

    *** Descriptions----------- 初始化串口DMA中断优先级

    *** Input parameters------- none

    *** Output parameters------ none

    *** Return value----------- none

    *****************************************************************************************************************

    ****************************************************************************************************************/

    static void serialB_low_nvic_init(void)

    {

    NVIC_InitTypeDef NVIC_InitStructure;

    NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;

    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

    NVIC_InitStructure.NVIC_IRQChannelPriority = 2;

    NVIC_Init(&NVIC_InitStructure);

    }

    /****************************************************************************************************************

    *****************************************************************************************************************

    *** Function name---------- serialB_low_uart_init

    *** Descriptions----------- 串口初始化

    *** Input parameters------- baudrate: 波特率

    *** |-- databit: 数据位

    *** |-- paritybit:校验位

    *** |-- stopbit: 停止位

    *** Output parameters------ none

    *** Return value----------- true成功,false失败

    *****************************************************************************************************************

    ****************************************************************************************************************/

    static int serialB_low_uart_init(SerialBaudRateTypedef baudrate, SerialDataBitTypedef databit,

    SerialParityBitTypedef paritybit, SerialStopBitTypedef stopbit)

    {

    USART_InitTypeDef USART_InitStructure;

    USART_DeInit(SERIAL_B_USART);

    USART_InitStructure.USART_BaudRate = baudrate;

    USART_InitStructure.USART_WordLength = databit;

    USART_InitStructure.USART_Parity = paritybit;

    USART_InitStructure.USART_StopBits = stopbit;

    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;

    USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;

    USART_Init(SERIAL_B_USART, &USART_InitStructure);

    /* 串口接收中断使能 */

    USART_ITConfig(SERIAL_B_USART, USART_IT_RXNE, ENABLE);

    /* 使能串口 */

    USART_Cmd(SERIAL_B_USART, ENABLE);

    return true;

    }

    /****************************************************************************************************************

    *****************************************************************************************************************

    *** Function name---------- msh_configure

    *** Descriptions----------- 配置msh控制台串口

    *** Input parameters------- serial: 串口设备

    *** |-- cfg: 串口参数

    *** Output parameters------ none

    *** Return value----------- RT_EOK

    *****************************************************************************************************************

    ****************************************************************************************************************/

    rt_err_t msh_configure(struct rt_serial_device *serial, struct serial_configure *cfg)

    {

    serialB_low_gpio_init(); /* 串口GPIO的复用及初始化 */

    serialB_low_nvic_init(); /* 串口的中断优先级配置 */

    /* 串口参数配置、相关串口中断使能 */

    serialB_low_uart_init(SERIAL_BAUDRATE_115200, SERIAL_DATABIT_8, SERIAL_PARITYBIT_NONE, SERIAL_STOPBIT_1);

    return RT_EOK;

    }

    展开全文
  • 之前有过一篇文章,不过那个只支持1个串口,而stm32f103大容量有5个串口,写这一篇的目的正是为了支持所有串口,可通过宏定义USE_USARTx进行设置使用串口的情况。关于基础部分,主要是原理的讲解可参考:...
  • arduino串口接收的问题

    2020-12-23 20:48:03
    我用auduino的串口向人机界面发送了16进制数据串,例如:发送【013E0088A3】人机界面马上会返回一串16进制数【013E0423322E87EFA4】,所以发送完数据后需要马上开始接收,怎么写程序能...我用auduino的串口向人机...
  • STM32F407串口接收并解码字符串

    千次阅读 2020-12-23 19:03:29
    STM32F407串口接收并解码字符串 usart2.c 串口2初始化 //初始化串口2 //bound:波特率 void uart2_init(u32 bound) { //GPIO端口设置 GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_...
  • STM32_串口接收

    2021-06-25 16:43:14
    该方式一般用于数据量小且接收频率低的场合,通过检测帧尾或对RXNE中断次数计数来判断一帧数据是否接收完毕。 2 IDLE中断(空闲中断) 针对没有帧尾且长度不固定的情况,可以通过IDLE中断来判断一帧数据是否接收...
  • 但发现采用linux或windows开发时发现串口响应较慢。在网上没有查到相关的资料,于是在手上的linux产品上进行试验。(MAX6Q) 试验一 、采用linux文件读写方式测试响应速度 测试代码 #include “testfuncrun.h” #...
  • 串口接收空闲中断

    2021-11-24 21:45:23
    有一个疑问:如果一个主设备一个从设备用串口进行通信,(主设备发、从设备收)如果双方没有约定特定的字符、规定的接收长度进行判断发送的过程已经结束了的话,请问:怎么进行判断接收已经接收了呢?       ...
  • 文章目录摘要配置工程配置串口及DMA生成源码修改源码重定向printf添加串口接收所需变量添加串口及IDLE处理函数声明变量及函数启用IDLE中断修改中断函数编译下载 摘要   基本串口通信通常只能接收到定长数据,无法...
  • C# 串口接收的优化处理 引言 在VS中实用串口接收通讯的时候往往会遇到等待数据或需要解决接收数据效率的问题。这里小结一种比较实用的的方法,其通过线程接收来控制协调,约束时间和数据极限大小来输出处理,大大...
  • 串口接收字符串程序

    2020-12-23 17:08:56
    /*****************************************************************************函数功能:单片机接收电脑串口发送的字符串,已验证正常,最大可接收100个字符最近一直在研究这个串口接收字符串问题,也看了网上很多...
  • stm32串口接收数据的几种方式

    千次阅读 2021-01-26 11:12:09
    stm32串口接收数据的几种方式 转载自:http://bbs.elecfans.com/jishu_357017_1_1.html 本例程通过PC机的串口调试助手将数据发送至STM32,接收数据后将所接收的数据又发送至PC机,具体下面详谈。。。 实例一...
  • STM32F103串口2,接收到数据之后,再次发送数据串口接收缓冲区的数据没有被覆盖,接收不到数据了,这个怎么办?void Usart2_Init(u32 bound){//GPIO¶Ë¿úéèÖÃGPIO_InitTypeDef GPIO_InitStructure;USART_...
  • 问题描述:最近在做一个关于串口读压力模块压力值的项目,用到的压力模块的基本工作原理为,通过串口向压力模块发送读压力指令"1:R:MRMD:0:0"(字符串),压力...我做该项目的思路是通过DMA传输的方式将串口接收到的...
  • GD32串口接收发送数据总结

    千次阅读 2021-04-26 16:52:49
    在使用GD32串口接收数据的过程中,遇到了数据无法接收的问题,在导师的帮助下,需要调用usart_flag_get函数来使RBNE置1,RBNE:读数据时缓冲区非空,当数据缓存区接收到来自移位寄存器的数据时,该位置1. 0:读数据...
  • STM32串口接收特定字符串并控制LED

    千次阅读 2021-04-21 09:51:08
    本文使用的是STM32F103 其实串口通信控制LED非常简单,只需要把两个例程中的一部分内容无脑复制就可以了。
  • 串口接收不定长数据

    2021-06-18 17:05:13
    这个通用的方法,其实原理就是传输两个字节间是否超过了指定时间,如果超过了一定的时间,就认为是接收完一帧数据了。首先我们要知道,串口是接收一个字节,就会发生一次... //串口接收开始计时 if(uart2Ri_cnt
  • 我是Arduino初学者,今日尝试用Arduino nano 收串口发来16进制数据,再由软串口转发给下级设备,下级设备返回16进制数据。首先简单测试代码如下:#include SoftwareSerial mySerial(2,3);void setup(){Serial.begin...
  • stc51单片机串口接收多字节数据

    千次阅读 2021-06-03 16:52:54
    stc51单片机串口接收多字节数据 简介 51单片机有2个定时器,一个做串口波特率,一个做数据截止帧延时检测,硬件平台测试使用的是stc8的单片机,但是可以往51移植 代码 #include "stc8.h" unsigned char flag=0; //...
  • STM32双串口接收数据

    2021-05-16 15:04:05
    工程要求需要至少两个串口,一个串口用于接收传感器数据,另一个串口用于接收上位机或者遥控器发来的指令,本次开发的软件使用的是CubeMX和keil5的编译环境,使用的单片机是STM32F103RCT6,使用串口3接收传感器的...
  • 接收函数里,通过buffer.AddRange()方法不断地将接收到的数据加入到buffer中,并同时对 buffer中的数据进行检验, 如果达到一定的长度并且校验结果正确(校验方法在发送方和接收方一致),再进行处理。 //针对...
  • 十六进制 HEX /hexadecimal /ˌheksəˈdesɪml/ 十进制 DEC /decimalism/'desiməlizəm/ 二进制 BIN /binary/ˈbaɪnəri/ 八进制 OCT /octonary /ˈ...串口向电脑发送数据: #include <REGX52.H> void...
  • 串口通讯最主要的就是要不丢数据,不丢帧,基本设想就是建立一个大的串口缓冲区,串口接收到的数据使用循环队列的方式全部往这个缓冲区放,不过这种方式需要把串口缓冲区弄大一点,防止数据覆盖。在stm32中,利用DMA...
  • 并不是说不使能串口接受中断就无法接收数据,只是为了在串口接收数据的时候防止其程序打扰串口数据的接收,所以跑到中断中去接收数据。 不使用串口接收中断的情况下,数据会到DR,然后你及时把DR的数据读出来,不然...
  • 这个必须要将数据进行缓存,因为一次来的数据可能并不是你所期望的一帧数据,可能多,也可能少,同时可能由于某种原因,一帧数据没有完,后一帧的数据又来了,会导致数据错乱,所以也要确定一帧数据到达的时间,超过...
  • 【STM32】串口接收任意字符串

    千次阅读 2021-11-16 17:55:52
    之前写了一篇STM32hal库串口中断接收任意字符 实际上是不完美的,他接收到换行符就完蛋了。 花了点时间深入研究了一下hal库的串口中断函数,发现他其实是不完美的,有一些BUG。 所以查了资料,找了很久,才找到这个...
  • HAL库串口接收不定长数据包,数据以’\0’为结尾标志。 串口中断: uint8_t USART1_Receive_message [50]={0}; uint8_t Receive_Number=0;//一次性接收了多少个数据 uint8_t Receive_times=0;//接收信息次数 uint8_t...
  • } /* USER CODE END 3 */ } 实验现象 第三种方法:定时器中断判断串口是否传输完成 此方法可以看做是看作中断接收的一种拓展用法,不同于上一种方法介绍的需要特定的格式的数据帧来判定,此方法结合了定时器,以5ms...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 97,441
精华内容 38,976
关键字:

串口接收

友情链接: dxflib-3.17.0-src.zip