导航博亿娱乐博亿在线娱乐www.by777.com产吕资料解决方案客户案例投诉建议联系我们

单片机串口设置问题

出处:本站 责任编辑: 时间:2018-12-16 [ ] 查看全部评论

  comby马克笔

  最近测试涉及到底层串口代码的修改。经过这次修改,突然发现其实自己对于串口的一些特性以前并不是十分清楚。

  关于1),在一次使用STM32串口参数9600,N,8,1与另一个 8051MCU通信的时候发现偶校验没有问题,但是无校验通信就出现异常。但是,当将STM32与电脑通信的时候,偶校验与无校验通信又完全都是正确的。8051MCU单独与电脑通信也都是完全正确的。查看代码,还真不知道有什么不对劲的。因为这段代码,用了很长时间了。后来一个同事看代码后,提醒说对于数据位的设置,偶校验和无校验是一致的,既然没有数据位,有可能会少一位。从这点看,这段代码可以修改看看。于是在这个地方,将偶校验的时候数据位长度设置为9bit,无校验的时候设置为8bit。重新测试,发现通信正常了。

  原来这段代码,由于一直用偶校验进行通信,所以对于奇校验和无校验的参数设置,没有测试过。虽然,已经存在很长时间,但是由于一直没有用到奇校验和无校验,于是这个BUG。一直潜伏到现在。直到这次使用到才发现。

  关于2),是在一次使用中发现,串口线的连接如果与从机分离,则串口上会莫名接收到一些00数据。一开始没有在意,以为是离开确定电平后,导致的什么干扰造成的。但是,没有去考虑是什么造成接收这么容易受干扰。直到有一次,和同事确认串口的初始化电平设置时,他告诉说是悬空设置。这下子感觉不对了,悬空很容易造成受干扰。于是马上查看串口的初始化代码,发现确实是悬空设置。马上修改了。在测试,将连接的串口悬空,也没有再收到。

  首先,UART不需要接收和发送两端严格的时钟同步,在不通信的时候IO电平呈现高电平,即空闲。所以对于UART来说,如果没有数据交互,数据线是呈现高电平的。

  为了提高UART的抗干扰性,无论在哪一种工作模式下,都能够保证数据线上有稳定的电平。所以串口设置时,对于串口输入引脚设置为上拉输入。对于串口的设置,输出一般设置为push-pull,输入一般设置为pull up。

  (这里有一个疑问,为什么串口还会留下悬空输入?既然一般情况下,上拉输入对于接收方而言会处于一个比较稳定的状态。如果将输入设置为悬空输入反而会引入接收不稳定的因素,为什么会有悬空输入。在什么地方,又会使用悬空输入呢?在不同电压的时候可能是一种情况,及3.3VTTL电平的CPU,与5.0VTTL的CPU直接使用串口通信的时候,为了避免电平问题采用悬空有可能是一个种情况。)

  这里也提出一个问题,对于系统的底层代码要格外严谨。保证开发出来的代码,有高的稳定性,可靠性。才能保证其他程序顺利开发。

  同时对于代码的测试要尽可能覆盖所有代码。对于开发过程中,引入的功能及代码要进行实际测试,明确其执行到的时候对于程序的影响。没有运行过的代码,在程序中就是一座可能喷发的活火山。所以对于添加的功能及代码,要确保执行过。

  本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

  单片机中一个程序的运行过程分为取指令,分析指令和执行指令几个步骤。取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。下面我们将举个实例来说明指令的执行过程:开机时,程序计算器PC变为0000H

  什么是单片机:单片机又称单片微控制器,它不是完成某一个逻辑功能的芯片,而是把一个计算机系统集成到一个芯片上。概括的讲:一块芯片就成了一台计算机。它的体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。同时,学习使用单片机了解计算机原理与结构的最佳选择。可以说,二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。不过,这种电脑,通常是指个人计算机,简称PC机。它由主机、键盘、显示器等组成。还有一类计算机,大多数人却不怎么熟悉。这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。因为积小,通常都藏在被控机械的“肚子”里。它在

  1 软件方面这应该是最大的区别了。引入了操作系统。为什么引入操作系统?有什么好处?1、方便。主要体现在后期的开发,即在操作系统上直接开发应用程序。不像单片机一样一切都要重新写。前期的操作系统移植工作,还是要专业人士来做。2、安全。这是LINUX的一个特点。LINUX的内核与用户空间的内存管理分开,不会因为用户的单个程序错误而引起系统死掉。这在单片机的软件开发中没见到过。3、高效。引入进程的管理调度系统,使系统运行更加高效。在传统的单片机开发中大多是基于中断的前后台技术,对多任务的管理有局限性。2 硬件方面现在的8位单片机技术硬件发展的也非常得快,也出现了许多功能非常强大的单片机。但是与32arm相比还是有些差距

  目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:智能仪器单片机具有体积小、功耗低、控制功能强、扩展

  新板子焊接好后,在编译下载的时候第一次遇到了这样的问题:Warning: Stack pointer is setup to incorrect alignment. Stack addr = 0xAAAAAAAA开始以为是调试器的问题,我用的Jlink的SWD接口模式,换了STLink还是这个毛病,后来提示需要板子初始化,试了无果,后来查看IAR的帮助文档发现是Flash被保护了,以下摘自Help文档:按照说明,在IAR安装目录下找到指定的运行程序JLinkSTM32.exe(D:\Program Files (x86)\IAR Systems\Embedded Workbench 6.0\arm\bin)在JLink与板子有效连

  如题!这两天在做一个项目,用的是STM8L152的单片机,调试的时候一直出现一个问题,就是每次都在一个地方停住了,用仿真器仿真调试的时候一直会死在一个地方,后来发现产生了莫名的中断。具体是这样的,我使用了IO口模拟I2C通信,一开始把IO口初始化为输出用了以下语句:GPIO_Init(GPIOC, GPIO_Pin_1, GPIO_Mode_Out_OD_HiZ_Fast);//SCL引脚置为输出GPIO_Init(GPIOC, GPIO_Pin_0

  站点相关:综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430C2000单片机论坛单片机资源下载单片机习题与教程

来顶一下
近回首页
返回首页

相关导读

    无相关信息

专题推荐

网站首页 | 关于我们 | 服务条款 | 广告服务 | 联系我们 | 网站地图 | 免责声明 | 返回顶部
Copyright © 2016-2018 博亿在线娱乐 Inc, All rights reserved.
Powered by www.g22.com,Template designed by 博亿在线娱乐