精华内容
下载资源
问答
  • 关于STM32串口打印数据,丢失第一个字节的总结
    千次阅读
    2019-05-21 09:31:00

    这两天在做串口误码率通信的实验的时候,发现串口打印数据会发生第一发个数据丢失的情况,通过查阅资料,具体原因为stm32的usart的sr寄存器的TC为初始为1,导致第一次打印时的第一个数据被覆盖,所以打印不出;现将解决办法总结如下:

    (1)直接修改while的等待条件,while(USART_GetFlagStatus(USART1, USART_FLAG_TXE)==RESET);把TC改为TXE,因为TXE只能硬件清零,在数据写进DR时就置0,数据移出时置1,可以保证数据不会在DR被覆盖;

    (2)既然TC位初始为1导致的问题,那么我们在发送每一个字节前把TC置0也可以解决问题,写多一句

               USART_ClearFlag(UART4, USART_FLAG_TC);

    (3)条件允许情况下,也可以委屈自己一下,在输出字符前面加一没用字符,也可以解决;

    (4)在write USART_DR之后,加入一个小延时,让数据发送完毕,应该也能间接排除这个错误。 

    总结:硬件复位后,串口发送首个数据之前,先读取一下USART_SR,则能够保证首个数据发送时,不出现覆盖的情况。

    参考资源如下:

    博客园:《stm32用printf函数重定向到串口USART1发现第一个字符没打印出来具体如下:》 

    链接:http://www.cnblogs.com/god-of-death/p/6893555.html

    CSDN:《STM32串口第一个字节丢失问题的分析过程》

    链接:https://blog.csdn.net/kevinhg/article/details/40991655

    该文章为总结方便自己所用,如有侵权问题,请联系QQ:2596269490进行删除

    更多相关内容
  • STM32串口打印

    2021-12-14 13:50:03
    STM32串口打印

    @[TOC]多串口打印函数

    static char USART1_TX_BUF[1024];
    void USART1_PRINTF(char *fmt,...)
    {
    	uint16_t i,len;
    	va_list args;
    	va_start(args,fmt);
    	vsprintf((char *)USART1_TX_BUF,fmt,args);
    	va_end(args);
    	len =strlen((char *)USART1_TX_BUF);
    	for(i=0;i<len;i++)
    	{
    		while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET); //发送完成中断
    		USART_SendData(USART1,USART1_TX_BUF[i]);
    	}	
    }
    int main()
    {
    	char s0[]="abcdefg\0";
    	int i=0;
    	while(1)
    	{
    		USART1_PRINTF("%d:%s\r\n",i++,s0);
    		USART1_PRINTF("CTT\r\n");
    	}
    
    }
    
    

    串口打印信息

    展开全文
  • 都在一个main.c里,一次编译就能通过,适合新手,按照注释的引脚无脑接线就能看现象
  • python实现与STM32串口通信,收发数据,安装好串口组件和python IDE即可正常运行代码
  • stm32 利用板子自带的温湿度传感器,通过串口1打印串口调试工具上。
  • stm32实现串口打印输出

    千次阅读 2021-08-31 21:50:42
    stm32实现串口打印输出 学习内容: 1、串口原理图分析 右上图可以看出: 我们采用USB转串口的形式,进行pc与单片机之间的通信,其中我们运用的芯片为ch340c。 2、实现串口的printf打印 我们串口的要素有波特率,...

    学习目标:

    stm32实现串口打印输出


    学习内容:

    1、串口原理图分析

    在这里插入图片描述
    右上图可以看出:
    我们采用USB转串口的形式,进行pc与单片机之间的通信,其中我们运用的芯片为ch340c。

    2、实现串口的printf打印

    我们串口的要素有波特率,数据位,停止位,校验位,通信的时候需要保持一致。
    在这里插入图片描述
    保存。
    在这里插入图片描述
    stdio 就是指 “standard input & output"(标准输入输出)
    所以,源代码中如用到标准输入输出函数时,就要包含这个头文件
    我们需要添加头文件#include <stdio.h>
    并且添加以下代码:
    在这里插入图片描述
    3、由于stm32cubeIDE默认无float显示,需要自己添加。

    在这里插入图片描述
    在这里插入图片描述

    按照这个提示修改。


    学习产出:

    实现串口打印,实现浮点数的输出显示。

    展开全文
  • stm32串口1和串口3数据互通,经测试同时发256字节不丢包 void usart3_init(u32 bound) { NVIC_InitTypeDef NVIC_InitStructure; GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure;...
  • STM32CubeMX实现串口打印hello world

    千次阅读 2022-02-24 17:01:04
    硬件:stm32f103c8t6 核心板 软件:STM32CubeMX 软件:keil5 mdk cubeMX配置: 点击 GENERATE CODE 生成代码。然后打开工程 在keil5 mdk: 在文件stm32f1xx_hal_uart.h开头添加代码 #include "stm32f1xx_it.h" ...

    环境
    硬件:stm32f103c8t6 核心板(usb tx接核心板A10,Rx接A09)
    软件:STM32CubeMX
    软件:keil5 mdk
    cubeMX配置:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    点击 GENERATE CODE 生成代码。然后打开工程

    在keil5 mdk:
    在文件stm32f1xx_hal_uart.h开头添加代码

    /* External variables --------------------------------------------------------*/
    extern UART_HandleTypeDef huart1; //声明串口
    /* USER CODE BEGIN EV */
    

    在文件 main.c中的while循环里添加代码

    while (1)
      {
        /* USER CODE END WHILE */
     		HAL_UART_Transmit(&huart1, (uint8_t *)"hello windows!\r\n", 16 , 0xffff);
    		 HAL_Delay(1000);  //延时1s
        /* USER CODE BEGIN 3 */
      }
    

    编译,将程序烧录或下载进核心板,打开串口助手查看接收到的数据
    在这里插入图片描述
    在增加新功能:实现板载led亮,要在cubeMX配置GPIO

    UART函数库

    HAL_UART_Transmit():串口发送数据,使用超时管理机制
    HAL_UART_Receive():串口接收数据,使用超时管理机制
    HAL_UART_Transmit_IT():串口中断模式发送
    HAL_UART_Receive_IT():串口中断模式接收
    HAL_UART_Transmit_DMA():串口DMA模式发送
    HAL_UART_Transmit_DMA():串口DMA模式接收
    

    printf重定向办法:

    #include "stdio.h"
    printf("freeRTOS test\r\n");
    int fputc(int ch, FILE *f){
    	HAL_UART_Transmit(&huart1, (uint8_t *)&ch,1,HAL_MAX_DELAY);
    	return ch;
    }
    int fgetc(FILE *f){
    	uint8_t ch;
    	HAL_UART_Receive(&huart1, (uint8_t *)&ch,1,HAL_MAX_DELAY);
    	return ch;
    }
    
    展开全文
  • stm32f407探索者开发板,dht11温湿度传感器,通过修改stm32正点原子的代码来实现一个简单的串口打印功能
  • 最近遇到需要MCU输出数字的问题,而STM32串口输出的是字符型,最先想到的方法是将整型数据转换为字符型输出,C库函数中提供了相关的函数 。
  • 串口打印 温湿度 STM32

    2019-03-28 10:21:34
    串口打印 温湿度 STM32,本人 亲自测试,有效,由于DHT11是单总线芯片,所以采用单总线数据格式,一次通讯时间4ms左右,所以它与STM32单片机连接时,只需用到三根线,分别是VCC、GND以及DATA,DATA用于单片机与DHT11...
  • STM32 串口转CAN 代码例程 含 1.STM32_LED ,2.STM32_USART,3.STM32_USART_LED_CAN500K,等几个例子程序,方便新手入门。 并含有C#上位机程序,,通过UART串口转CAN 发送接收数据
  • stm32 串口打印函数

    2021-03-08 10:13:49
    STM32 串口打印函数 #include <stdarg.h> #include "main.h" #include "string.h" #include "usart.h" #include "usart_printf.h" #define TXBUF_SIZE_MAX 100 //串口输出 void usart_printf(UART_...
  • STM32工程中可直接调用USART1-UART5,封装好串口中断,接收指针,数据传输稳定可靠无误。
  • 通过STM32串口读取PM2.5传感器的数据,然后打印串口调试助手
  • 1、在CubeMX里面配置的时候,一定要先配置好串口IO在去选择使能串口功能。一般使用串口1,对应PA9和PA10。 2、在生成的函数里面的usart.h文件里面添加以下的函数: 注意:一定要添加#include "stdio.h"这个头文件...
  • 在MDK纯软件环境下,仿真程序数据运算,观察数据的调用和处理流程,结果。...按步骤给STM32 单片机串口初始化,建立结构体成员,调用结构体成员数据打印数组。 不需要使用单片机IO口情况下软件仿真非常方便。
  • 使用库函数编写,平台为STM32F407,串口直接打印出测量数据
  • 利用STM32F103ZET6的串口3接收ESP8266的数据,通过串口1打印出来。
  • stm32串口1串口2 DMA方式收发数据

    热门讨论 2014-08-15 22:58:24
    stm32串口1串口2,DMA方式收发数据。使用定时器定时查询DMA接收到的数据,当串口数据空闲中断,将数据拷贝到缓冲区,交由其他程序处理。可以接收任意大小的数据包。本方法占用CPU时间极少,尤其是波特率很高时,...
  • 1.设置RRC外部时钟 设置高速外部时钟 2.设置DEBUG调试 debug设置成SW 3.设置usart 设置模式为异步通信 比特率115200 起始位8位 停止位1位 没有奇偶...8.1 直接打印串口数据 /* USER CODE BEGIN WHILE */ while (1
  • 串口1给串口3发送数据串口3接收后打印串口1给串口3发送数据串口3给串口1发送数据串口1接收后打印串口1给串口3发送数据” 需要将串口3与串口1分别与电脑相连。具体硬件连接照片、硬件连接原理图、全部...
  • 这里写目录标题串口发送数据串口接受数据 串口发送数据 1、串口发送数据最直接的方式就是标准调用库函数 。 void USART_SendData(USART_TypeDef* USARTx, uint16_t Data); 第一个参数是发送的串口号,第二个参数是...
  • STM32串口自定义数据接收协议

    千次阅读 2021-09-10 16:20:16
    最近使用STM32串口数据收发,遇到了一些问题。折腾了一番,在此记录一下。
  • STM32 串口数据一直打印00的情况

    千次阅读 2021-01-22 17:03:27
    @STM32 串口数据一直发送0x00的情(这里写自定义目录标题) 欢迎使用Markdown编辑器 提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录欢迎使用Markdown编辑器前言一、pandas是什么?二、...
  • STM32F103单片机上实现自定义串口2的printf函数,串口1用系统默认printf函数,串口2自定义函数printf函数,实现和默认printf函数同样的功能。
  • STM32绑定printf格式输出的文档说明,
  • 使用STM32F103ZET6芯片,编译器:KEIL5 ARM,代码文件是C语言,通过串口1,发送16进制的数据,或者字符。
  • STM32串口打印输出乱码的解决办法

    千次阅读 2019-03-17 17:11:48
    STM32串口打印输出乱码的解决办法 前言 最近在试用uFUN开发板,下载配套的Demo程序,串口数据输出正常,当使用另一个模板工程,调用串口printf调试功能时,输出的却是乱码,最后发现是外部晶振频率不一样。很多STM32...
  • STM32 串口乱码

    2022-04-07 14:56:35
    同一个串口调试助手,用正点原子、STM32CubeMX生成的程序发送数据正常。排除串口调试助手问题。 串口配置函数问题?仔细检查过串口配置,GPIO配置,用STM32CubeMX与骄阳程序相互替换,问题仍然存在。 HAL库其它文件...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,963
精华内容 2,785
关键字:

stm32串口打印数据