精华内容
下载资源
问答
  • 在用原子的F407探索者开发板时,由于是用的野火的工程模板,导致了一些串口发送乱码、定时器定时不准的问题。如果你也有类似的问题,这个或许可以帮到你。 原因 SYSCLK 系统时钟来源有三个方面:HSI,HSE 和 PLL。在...

    前言

    在用原子的F407探索者开发板时,由于是用的野火的工程模板,导致了一些串口发送乱码、定时器定时不准的问题。如果你也有类似的问题,这个或许可以帮到你。

    原因

    SYSCLK 系统时钟来源有三个方面:HSI,HSE 和 PLL。在我们实际应用中,因为对时钟速度要求都比较高我们才会选用 STM32F4 这种级别的处理器,所以一般情况下,都是采用 PLL 作为 SYSCLK时钟源,而系统时钟配置不正确就是PPL这里出了问题。

    先看一下主PPL在整个时钟树中间的位置。
    在这里插入图片描述
    在这里插入图片描述

    高速系统时钟一般由PPL_P提供,一般配置为最高168M。

    根据公式:
    PLL = HSE * N / (M * P) = 8MHz * 336 / (8 * 2) = 168MHz

    参数 说明
    HSE 晶振大小(MHz)
    N 倍频器倍频系数
    P 分频器分频系数
    M 分频器分频系数

    系数可以随意选择,只要是让公式最后的结果为168应该都可以,但是在标准库中一般N、PD固定了的。HSE会随着板子上不同的晶振而修改,还有M也可以用来修改系统时钟频率。不过不建议随意修改,因为我菜,菜,菜,留下了没有技术含量的眼泪。

    接下来只要在库文件中修改HSE和PPL_M就可以了。

    修改

    之所以会出现这个问题,是由于系统时钟配置不正确

    1. 要将高亮的地方改为8000000
    (在stm32f4xx.h里面)
    在这里插入图片描述

    2. 将高亮的地方改为8
    (在system_stm32f4xx.c里面)

    在这里插入图片描述
    经过这两个修改就可以正常使用了。

    展开全文
  • 在进行嵌入式串口发送的时候, 偶尔会出现首字节乱码的情况。 解决 LL_USART_TransmitData8(PRINTF_USART, (uint8_t) c); while (!LL_USART_IsActiveFlag_TC(PRINTF_USART)){} 在每次发送完数据之后, 检查串口...

    问题

    在进行嵌入式串口发送的时候, 偶尔会出现首字节乱码的情况。

    解决

        LL_USART_TransmitData8(PRINTF_USART, (uint8_t) c);
    	while (!LL_USART_IsActiveFlag_TC(PRINTF_USART)){}
    

    在每次发送完数据之后, 检查串口是否发送完成,而不是检查串口数据寄存器是否为空, 特别是在循环发送的时候, 检查数据寄存器是否为空的话,很容易出现影子寄存器被覆盖的现象, 而造成乱码。

    展开全文
  • 51单片机串口通信发送乱码

    千次阅读 2020-07-20 09:33:56
    简单来说,就是发送数据过程中被中断了,因为字节和位数的问题产生乱码。 解决方法 考虑到之后还是要用到ES=1;所以只能局部关闭再打开。 #include"reg52.h" #include"string.h" typedef unsigned int u16; ...

    STC89C52单片机串行接口乱码

    玩普中科技的51单片机时 ,检查了波特率没问题,依旧乱码, 最后通过排除法发现时中断允许位的原因,跟大家分享

    简单来说,就是发送数据过程中被中断了,因为字节和位数的问题产生乱码。

    解决方法

    考虑到之后还是要用到ES=1;所以只能局部关闭再打开。
    本代码波特率4800 晶振12M

    	#include"reg52.h"
    	#include"string.h"
    	typedef unsigned int u16;
    	typedef unsigned char u8;
    	void UsartInit()
    	{
    		TMOD=0X20;
    		PCON=0x80;
    		TH1=0XF3;
    		TL1=0XF3;
    		TR1=1;
    		SCON=0X50;
    		ES=1;
    		EA=1;
    		
    	}
    	void main()
    	{
    		u8 i;
    		u8 a[]="hello world!";
    		UsartInit();
    		while(1)
    		{
    		ES=0;
    		for(i=0;i<strlen(a);i++)
    		{
    			
    			SBUF=a[i];
    			while(!TI);
    			TI=0;
    		}
    		ES=1;
    		for(i=0;i<200;i++);
    		}
    		
    	}
    

    如果有遗漏或者不对之处,还请指正。

    展开全文
  • STM32踩坑:STM32串口发送乱码问题

    千次阅读 2020-10-16 09:36:05
    STM32串口发送乱码问题 小编是一个嵌入式初学者,才学没多久,将近两个月的样子,在学习过程中遇到了一些问题,在这里给大家分享一下解决方案。 今天要分享的问题是 STM32 串口发送字符串,但是在调试助手上面接收到...

    STM32串口发送乱码问题

    小编是一个嵌入式初学者,才学没多久,将近两个月的样子,在学习过程中遇到了一些问题,在这里给大家分享一下解决方案。

    今天要分享的问题是 STM32 串口发送字符串,但是在调试助手上面接收到的字符却是一串乱码,看着让人头疼。
    这是乱码的图片
    这是乱码的图片

    然后问了公司办公室的大佬,也在网上查了一下资料,总结了一下,原因大致有两点:
    1) 开发板上外部时钟的晶振与代码中的外部时钟的晶振不一致(这是我写的串口实验发生乱码的原因)
    在这里插入图片描述

    2) 串口调试助手接收数据的波特率与串口初始化时的波特率不一致(这种乱码情况我没有遇见过)

    如果是第一种情况,那么找到 stm32Fxxx.h (F1 系列的是 stm32F1xx.h,F3 系列的是 stm32F3xx.h,F4 系列的是 stm32F4xx.h,F7 系列的是 stm32F7xx.h,没用过 F3 系列的,不过文件应该是对应的)文件,找到以下相对应的代码进行修改即可。

    //以下代码是对 HSE 外部高速时钟的晶振的一个设置
    //修改前
    #define HSE_VALUE    ((uint32_t)25000000) /*!< Value of the External oscillator in Hz */
    
    //修改后
    #define HSE_VALUE    ((uint32_t)8000000) /*!< Value of the External oscillator in Hz */
    

    这里我是将参数 25000000 改成了 8000000,具体的还是要看开发板上晶振模块的数值。

    如果是第二种情况,那么就需要检查串口调试助手接收数据的波特率与串口初始化时的波特率(一般在串口初始化函数中,如果使用的自带的函数初始化,那么需要找到对应的文件进行修改)是否一致了,下面是我自己的检查结果截图,仅供参考。
    波特率检查结果
    下面是修改成功后,调试助手收到的结果截图。
    最终结果
    以上均为小编自己的总结,若存在侵权,请联系小编。

    展开全文
  • 串口发送数据

    2019-03-02 01:00:04
    说明:单片机连接电脑,在串口工具上查看单片机发来的数据。接收数据下一章再教。...单片机最小开发板和单片机学习板的晶振不同(学习板的一般为120000),所以在TX发送数据的时候,会乱码。 记住:用学习板烧...
  • void CMXC18083SDlg::OnBnClickedButton2()//“发送数据”单击事件 { //默认方式是十六进制手动发送 //TODO: 在此添加控件通知处理程序代码 CString temp; UpdateData(true); temp = m_strSend;//"发送...
  • java 采用串口通信实现LED屏发送数据中文乱码问题 1.定义:Pointer p = new Pointer(MemoryBlockFactory.createMemoryBlock(1024)); 2.设值、字节转换:p.setMemory(“中文”.getBytes(“GBK”));【c++中采用char*、...
  • 以上是一段串口发送一个文件里面的内容。 现在需求如下,,, 现在想把文件的内容按照字节分数组,temp[0],temp[1],temp[2].......... 每个数组里面存放258个字节的内容。其中前两个字节是固定的 temp[0]={0xFF+...
  • QTextCodec可将各类编码转换为Unicode,也可讲Unicode编码的数据转换为各类编码 利用QTextCodec::codeForName(char *)定义要源或者目标编码 再使用QTextCodec::toUnicode(const QByteArray &)将源目标转换成...
  • 串口输出中文乱码

    千次阅读 2020-07-29 17:14:03
    最近在使用OpenMV,但是由于没有转接板和软排线来连接串口,不过手上有一块STM32F4的开发板,于是就想到将其作为一个转接,通过其接收OpenMV发送数据,并将其转发到电脑上,结果串口助手一直输出乱码。 寻找问题...
  • 串口助手向单片机发数据乱码,或者单片机向串口助手乱码,通常是由于不同的串口软件,发送的有的是数据的16进制,有的是数据的ASCii码,查一下,然后修改下程序就可以了
  • 1、查看你使用的USB转串口是3.3V的串口还是5V串口,如果发送方使用的是3.3V然后你使用的USB转串口是5V是可以收到数据的但收到的数据都是错误的 2、查看波特率、奇偶校验、停止位等是否设置正确。 3、如果是STM32,...
  • 串口调试助手向STM32发送数据过多时,串口调试助手会自动返回一组乱码数据,如图。想知道原理和解决方法!!!波特率、缓冲区字节之类的参数都是设置正确的。数据在120个字节以下,不会出现次现象。求解答!!!!!...
  • 我把源代码打开后找到bsp文件夹,发现里面有stm32f40x的移植工程,于是惊喜万分,没有做任何修改就把工程下载到了我自己的stm32f407 开发板上,led显示的状态正常,可就是串口发回来的数据全是乱码...从网站上看了看好多...
  • 关于STM32 USART DMA数据发送串口助手接收显示乱码问题总结 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解...
  • 参照网上例程,学习了下SCI发送数据。 CCS使用小结: 1、Ctrl + / 注释代码很方便 2、CCS项目管理中,不要轻易删除某个.c或.h的文件。在MDK或者IAR中,删了只是把文件从工程项目中去掉,文件还在。而在CCS中,删...
  • arm3358开发板与其他自带单片机的裸机进行串口通信,开发板发送汉字时出现乱码。 问题出在数据定义上: //unsigned char AT_SCREENOUT[]="sthis is test 1234\r\n"; 1、//unsigned char AT_SCREENOUT[]="s测试1234...
  • 问题描述如标题,如果发送的是全英文的时候或少数中文字的时候,对比发送和保存文件内容一致,没有丢数据。我(用了14万行文件发送,收到的数据对比都正确) 个人认为:GB2312编码中文字是2个字节表示,串口在读...
  • 一般我们发送一个字符的话就是使用下面这个函数。 比如: USART_SendData(USART1,'a');...然而呢,大家应该发现了,如果直接这么用的话,接受到的数据乱码。 然后,经过多次尝试的朋友可能发现:如果在中间...
  • 用stm32写了个串口程序 上位机发送一个数字 返回一个数字,可是返回的是些不认识的字符,波特率已经同步9608 数据停止位 等都是一样的,tx接rx 还是乱 换了3个串口调试助手都是一样的,有谁知道,谢谢解答
  • 1.sendStr是我定义的要发送的字符数组,为什么写数据之后,收回来的数据乱码。 2.请教一下这个读串口线程应该在初始化对话框那里OnInitDialog那里,还是打开串口OpenSerialPort那里,还是具体写数据时创建,来...
  • 串口调试工具,和板端对发乱码: 只连了RXD和TXD没连3.3v电源和接地,连接后正常发送 串口调试收发正常,PC端linux下软件经串口传输失败: 虚拟机用串口需要在 虚拟机->可移动设备下添加后设置,出现ttyUSB0后可...
  • 我在用C++做一个串口程序,用了MSComm控件,新手遇见了点问题,我用串口助手试了试我的程序,如果十六进制发送那么我接收的数据串口助手发送数据不一致,出现了乱码。我还想把我接收到的数据存储在txt文件中,...
  • 串口收发乱码解决方案

    千次阅读 2020-08-03 13:08:30
    在使用基于stm32f103rct6芯片的板子实现485收发时,发现可以发送也可以接收,但是收发的数据都是乱码。 第一步,因为可收可发,引脚肯定没问题; 第二步检查波特率,检查后发现波特率也没问题; 第三步检查时钟配置...
  • 后面经过排查发现是串口发送函数导致的,出错代码如下。出错原因就是发送完成标志还没有置位,就进入了低功耗模式,导致退出时再次发送就会出问题(具体原因还未知,手册里面有这样一段话“ 数据发送期间不应复位 ...
  • 问题:测试51单片机串口通信时,设置主程序为单片机将接收到的数据发送出去,但在串口助手接收到的单片机发来的数据总是乱码。 解决:经检查,是晶振频率设置错误,将原先的12MHz改为11.0592MHz后通信正常。在设置的...
  • 在代码中,用串口发送数据乱码...... 检查配置发现:RCC中的HSI Calibration Value为16,查看Cube生成的代码: 默认值16是针对47x或48x的,我使用的432x不能使用该值,手动设置该值为0,串口输出数据不再乱码了....
  • 开始以为是乱码,后来才发现,当串口工具波特率设置为115200,数据格式设置为ASCII码时,串口打印的的信息貌似和模块硬件以及固件程序有关,当串口工具波特率设置为9600,数据格式设置为HEX时,串口输出的信息是F...
  • 发送数据太快的问题 需要在发送端加延时;   用这个东西监控一下端口状况: ...我用过一个串口跟踪器一样的东西,但是这个东西也...用串口监控软件监控串口,在出现乱码的时候先确定下是发送的问题还是接收到问题

空空如也

空空如也

1 2 3 4 5 ... 8
收藏数 146
精华内容 58
关键字:

串口发送数据乱码