串口初始化程序代码c语言
单片机串口用程序为什么要初始化?
单片机串口用程序为什么要初始化?
单片机串口通信需要定义一些基本配置参才能使用,这就是初始化。
初始化的主要内容包括:
1、波特率发生器配给,就是当前串口使用哪个定时器产生波特率。
2、波特率具体的数值,例如是9600还是115200。
3、收发数据的格式,例如有没有起始位或停止位?有没有校验位等。
4、当前串口中断服务程序的向量址是什么。
昆仑通泰触摸屏与西门子S7-200连接下载问题,串口父设备初始化失败。望哪位指点一下,谢谢?
1.线接对没,西门子的是3,8脚 2.通讯协议选对没 3,端口选对没
串口中断触发方式?
在串口中断里面,一旦接收到数据就会发生中断,同时收到数据就会清除标识位(好像是这样,我忘记那个问答是哪个平台看到的了),所以没有清除标志位串口也正常工作。通用定时器中断则是在计数器向上向下溢出时,计数器初始化的时候产生中断,但是这个就需要手动清除标志位了。
? 最后我想电位下降了不是又要回到高电位吗,所以我也尝试把沿下降沿设置为沿上升沿触发,发现按键有的时候有用,大多数时候没用,后来意识到,沿着上升沿触发之后引脚电位应该判断是不是高电位,所以中断函数里面需要判断的是KEY21,这样就正常了。
post什么意思?
post上电自检:是微机接通电源后,系统进行的一个自我检查的例行程序。这个过程通常称为post上电自检(poweronselftest)。对系统的几乎所有的硬件进行检测。
post是如何进行自检测的?
主板在接通电源后,系统首先由(poweronselftest,上电自检)程序来对内部各个设备进行检查。在我们按下起动键(电源开关)时,系统的控制权就交由bios来完成,由于此时电压还不稳定,主板控制芯片组会向cpu发出并保持一个reset(重置)信号,让cpu初始化,同时等待电源发出的powergood信号(电源准备好信号)。当电源开始稳定供电后(当然从不稳定到稳定的过程也只是短暂的瞬间),芯片组便撤去reset信号(如果是手动按下计算机面板上的reset按钮来重启机器,那么松开该按钮时芯片组就会撤去reset信号),cpu马上就从地址ffff0h处开始执行指令,这个地址在系统bios的地址范围内,无论是awardbios还是amibios,放在这里的只是一条跳转指令,跳到系统bios中真正的启动代码处。系统bios的启动代码首先要做的事情就是进行post(poweronselftest,加电自检),由于电脑的硬件设备很多(包括存储器、中断、扩展卡),因此要检测这些设备的工作状态是否正常。
这一过程是逐一进行的,bios厂商对每一个设备都给出了一个检测代码(称为postcode即开机自我检测代码),在对某个设置进行检测时,首先将对应的postcode写入80h(地址)诊断端口,当该设备检测通过,则接着送另一个设置的postcode,对此设置进行测试。如果某个设备测试没有通过,则此postcode会在80h处保留下来,检测程序也会中止,并根据已定的报警声进行报警(bios厂商对报警声也分别作了定义,不同的设置出现故障,其报警声也是不同的,我们可以根据报警声的不同,分辨出故障所在。
post自检是按什么顺序进行检测的?
post自检测过程大致为:加电-cpu-rom-bios-systemclock-dma-64kbram-irq-显卡等。检测显卡以前的过程称过关键部件测试,如果关键部件有问题,计算机会处于挂起状态,习惯上称为核心故障。另一类故障称为非关键性故障,检测完显卡后,计算机将对64kb以上内存、i/o口、软硬盘驱动器、键盘、即插即用设备、cmos设置等进行检测,并在屏幕上显示各种信息和出错报告。在正常情况下,post过程进行得非常快,我们几乎无法感觉到这个过程。
post自检测代码含义是什么?
当系统检测到相应的错误时,会以两种方式进行报告,即在屏幕上显示出错信息或以报警声响次数的方式来指出检测到的故障。
cmosbatteryfailed(cmos电池失效)。
原因:说明cmos电池的电力已经不足,请更换新的电池。
cmoschecksumerror-defaultsloaded(cmos执行全部检查时发现错误,因此载入预设的系统设定值)。
原因:通常发生这种状况都是因为电池电力不足所造成,所以不妨先换个电池试试看。如果问题依然存在的话,那就说明cmosram可能有问题,最好送回原厂处理。
displayswitchissetincorrectly(显示开关配置错误)。
原因:较旧型的主板上有跳线可设定显示器为单色或彩色,而这个错误提示表示主板上的设定和bios里的设定不一致,重新设定即可。
pressesctoskipmemorytest(内存检查,可按esc键跳过)。
原因:如果在bios内并没有设定快速加电自检的话,那么开机就会执行内存的测试,如果你不想等待,可按esc键跳过或到bios内开启quickpoweronselftest。
harddiskinitializing【pleasewaitamoment...】(硬盘正在初始化请等待片刻)。
原因:这种问题在较新的硬盘上根本看不到。但在较旧的硬盘上,其启动较慢,所以就会出现这个问题。
harddiskinstallfailure(硬盘安装失败)。
原因:硬盘的电源线、数据线可能未接好或者硬盘跳线不当出错误(例如一根数据线上的两个硬盘都设为master或slave。)
secondaryslavehardfail(检测从盘失败)。
原因:1cmos设置不当(例如没有从盘但在cmos里设有从盘)2硬盘的电源线、数据线可能未接好或者硬盘跳线设置不当。
harddisk(s)diagnosisfail(执行硬盘诊断时发生错误)。
原因:这通常代表硬盘本身的故障。你可以先把硬盘接到另一台电脑上试一下,如果问题一样,那只好送修了。
floppydisk(s)fail或floppydisk(s)fail(80)或floppydisk(s)fail(40)(无法驱动软驱)。
原因:软驱的排线是否接错或松脱?电源线有没有接好?如果这些都没问题,那买个新的吧。
keyboarderrorornokeyboardpresent(键盘错误或者未接键盘)
原因:键盘连接线是否插好?连接线是否损坏?
memorytestfail(内存检测失败)
原因:通常是因为内存不兼容或故障所导致。
overrideenable-defaultsloaded(当前cmos设定无法启动系统,载入bios预设值以启动系统)。
原因:可能是你在bios内的设定并不适合你的电脑(像你的内存只能跑100mhz但你让它跑133mhz),这时进入bios设定重新调整即可。
presstabtoshowpostscreen(按tab键可以切换屏幕显示)
原因:有一些oem厂商会以自己设计的显示画面来取代bios预设的开机显示画面,而此提示就是要告诉使用者可以按tab来把厂商的自定义画面和bios预设的开机画面进行切换。
resumingfromdisk,presstabtoshowpostscreen(从硬盘恢复开机,按tab显示开机自检画面)。
原因:某些主板的bios提供了suspendtodisk(挂起到硬盘)的功能,当使用者以suspendtodisk的方式来关机时,那么在下次开机时就会显示此提示消息。
biosromchecksumerror-systemhalted(bios程序代码在进行总和检查(checksum)时发现错误,因此无法开机)
原因:遇到这种问题通常是因为bios程序代码更新不完全所造成的,解决办法重新刷写烧坏主板bios。
harddiskinitizlizing【pleasewaitamoment...】(正在对硬盘做起始化(initizlize)动作)
原因:这种讯息在较新的硬盘上根本看不到。但在较旧型的硬盘上,其动作因为较慢,所以就会看到这个讯息。
post自检响铃次数是如何定义的?
post上电自检还会通过报警声响次数的方式来指出检测到的故障。但需要注意:由于目前主板bios类型大致可分为award公司、ami公司、phoenix公司(award已与phoenix合并),因此不同类型的bios,其自检响铃次数所定义的自检错误是不一致的,因此一定要分清。
post自检发现错误后如何提示?
post自检如发现有错误,将按两种情况处理:对于严重故障(致命性故障)则停机,此时由于各种初始化操作还没完成,不能给出任何提示或信号;对于非严重故障则给出提示或声音报警信号(以上介绍),等待用户处理。通过bios自检功能(post自检),我们就可以方便的侦测出主板的故障所在,以便正确的解决。
如我们按下电源键后,只有电源指示灯亮,电脑屏幕没有任何反映,也没有报警声;那么针对这种情况,我们又应如何解决呢?
屏幕没有显示,也没有报警声,我们就无法从post自检功能得到相应的信息;大家都知道,计算机是一个复杂而且精密的产品组合,因此一个环节出现问题,可能都无法启动机器(我们主要谈硬件方面)。因此,如出现黑屏,无报警声响的故障现象,我们就应根据电脑的启动过程来分析问题所在了。
电脑的启动过程是什么?
我们在按下启动键时,首先启动的应是电源(因为如果没有电源供电,那么主板上所有的配件都是无法工作的)。但是为了保证安全使用,电源部分采取了一系列安全保护措施;因此开关电源从起振到稳定之间会有一段时间的延迟,等待各组电压都稳定下来后,电源各部分会输出一个检测信号,这个信号为高电平时表示该部分电压正常,这些部分包括输入电压和各组输出电压。这些信号总和的结果就是一个powergood信号(也称为powerok或pwrok信号);如果主板接受不到这个信号,那么时钟芯片会持续向cpu发送复位(reset)信号(与我们按下reser键相当),cpu就不会工作。
当cpu接受到正常的powergood信号,主板和cpu就启动了吗?其实主板此时,还要根据cpu的vid0-vid3引脚的定义组合,将cpu所提供的vid0-vid3信号送到电源管理模块的相应的端口;如果主板bios具有可设定cpu电压的功能,主板会按时设定的电压与vid的对应关系产生新的vid信号并送到电源管理模块芯片,电源管理模块将根据设定并通过dac电压将其转换为基准电压,再经过场效应管轮流导通和关闭,将能量通过电感线圈送到cpu,最后再经过调节电路使用输出电压与设定电压值相当。
由于cpu还要根据自己所需要的频率,通过ic总线来检测主板频率发生器所设置的频率是否支持;因为电脑要进行正确的数据传送以及正常的运行,没有时钟信号是不行的,时钟信号在电路中的主要作用就是同步;因为在数据传送过程中,对时序都有着严格的要求,只有这样才能保证数据在传输过程不出差错。时钟信号首先设定了一个基准,我们可以用它来确定其它信号的宽度,另外时钟信号能够保证收发数据双方的同步。对于cpu而言,时钟信号作为基准,cpu内部的所有信号处理都要以它作为标尺,这样它就确定cpu指令的执行速度;如cpu本身的频率无法适应频率发生器所提供的高频率,也是无法正常工作的。因此只有当接受到powergood信号,和相应的得到cpu工作的电压时以及相应的时钟频率后,cpu才能正常的工作,也就是开始执行bios程序。
如何判断、解决故障所在?
因为如接受不到powergood信号,系统就一直处理reset(复位)循环中,因此主板也就无法启动,相应的其它硬件,如显卡也无法工作,显示器由于接受不到显卡传出的信号,因此也就没有显示,一直处于待机状态。此时,我们应检测电源,不要以为电源灯亮,就表明电正常,因为只要有一路信号有故障(该部分电路不正常或还未稳定),输入出的powergood信号都为低电平,即表示电源部分有故障或还未进入稳定状状;虽然电源指示灯亮,但由于主板接受不到正常的powergood信号,也无法启动。我们检测电源的方法是,使用可正常工作的电源测试。如电源为atx型我们可用导线将13与14脚短接,如电源风扇能正常运行,则表明电源是完好的,则故障应在主板上。
更换正常电源后,如系统还是没有工作的显象,应按以上主板启动过程,测试cpu的电源管理模块和频率发生器。但由于我们不可能有完善的设备来测试主板上的电源和频率模块(大多数电脑爱好者不可能有此类设置,和具有相应的检测能力)。因此我们对此还要采用排除法,即在其它正常主板上测试cpu。测试排除cpu的故障外,还应检测主板频率设置问题。电脑爱好者为使用或测试cpu的超频能力,会通过调整主板外频的方式(目前cpu已经锁频,只能设置外频,而无法设置倍频),来调高cpu的工作频率。如果cpu无法适应高工作频率,虽然电源供电正常,主板也是无法启动的。
排除了其它硬件的问题,为会么系统仍不可启动?
如果硬件一切正常(经测试),那么在post上电自检测后,cpu会从地址ffff0h处开始执行指令,这个地址在系统bios的地址范围内,无论是awardbios还是amibios,放在这里的只是一条跳转指令,跳到系统bios中真正的启动代码处。由于bios是连接操作系统和硬件之间的桥梁,为计算机提供最低级的、最直接的硬件控制,计算机的原始操作都是依照固化在bios里的内容(指令)来完成的。因此如bios文件破坏或bios芯片损坏,都会直接的影响主板的启动。
如何判断bios已经损坏?
判断bios是否正常比较困难,因为如没有编程器等测试工具;是无法通过感官来判断bios文件或芯片是否正常的,对于普通用户而言,只有寻找维修商来解决了。
如果屏幕显示biosromchecksumerror-systemhalted(bios程序代码在进行总和检查(checksum)时发现错误)的提示时,应是读取bios时,校验总和出错,因此无法启机器。这种问题通常是因为bios程序代码更新不完全所造成的,解决办法重新刷写烧坏主板bios。
1通过post自检排除故障
接通电脑的电源后,post上电自检程序将对整个电脑系统进行硬件扫描检测,完整的post上电自检包括:
1.对cpu、系统主板、基本640kb内存、1mb以上的扩展内存及系统rombios的测试。
中系统配置的校验。
3.初始化视频控制器,测试视频内存、检验视频信号和同步信号,对crt接口进行测试。
4.对键盘、软驱、硬盘及cd-rom子系统作检查。
5.对并行口(打印机)/串行口(rs232)进行检查。
自检中如果发现有错误,将按两种情况处理:
(1)对于严重故障(致命性故障)则停机,此时由于各种初始化操作还没完成,不能给出任何提示或信号。
(2)对于非严重故障则给出提示或声音报警信号,等待用户处理。