参考答案:
【问题1】
(1)RXD和TXD(或者TXD和RXD)
(2)RTS和CTS(或者CTS和RTS)
(3)993.75
【问题2】
(1)!(*Mutex[0])或者*Mutex[0]==0x00 或者*Mutex[0]==0
(2)*Mutex[0]=0x00或者*Mutex[0]=0
(3)len=Read_Buffer(1,Data)
【问题3】
硬件方法和软件方法都可以。
详细解析:
本题考查嵌入式系统设计,涉及嵌入式软件和硬件基础知识的应用。
【问题1】
EIA制定的RS-232C接口与外界的相连采用25芯(DB-25)和9芯(DB-9)D型插接件,实际应用中,并不是每只引脚信号都必须用到。软件方式按照RXD和TXD两个引脚。硬件方式按照RTS和CTS两个引脚。RS-232各个引脚的功能如下图所示。
在使用RS232进行数据传送时,需要注意其配置方式,包括流控位宽,起始位宽等。在该题目中,数据位宽为8bit,停止位为1bit,无别的流控位,因此,每个字节传输需要的位宽为9bit,按照9600bps的速率进行传输时,每个字节需要的时间为9/9600=0.9375ms,因此传输4字节需要的时间为4×0.9375ms=3.75ms。在进行100次的传输中,每隔10ms传输一次,又由于同时忽略了其他调度时间,由于3.75小于10,可知,在每10ms传输一次的过程中肯定是可以将对应的4字节数据传输完毕。因此,在100次的传输中,前99次传输需要的时间是99×10ms=990ms,最后一次也就是第100次传输消耗的时间为3.75ms,因此,总共需要的时间为990ms+3.75ms=993.75ms。
【问题2】
PPC_Read_Data( )函数(数据处理模块读数据程序段)的具体过程如下:
1.首先判断双缓冲有无数据;
(1)如果无新数据,就退出
(2)如果有数据,就继续
2.如果缓冲区0有数据;
(1)再判断缓冲区0是否加锁;如果未加锁,则先加锁,再读数据,再解锁。
(2)如果未加锁,则先加锁,再读数据,再解锁。
3.对缓冲区1同样如此处理。
【问题3】
硬件方法和软件方法都可以消除抖动问题。
1.硬件方法
硬件方法常用专用的去抖芯片或者自己组装一个双稳态消抖电路,就是两个与非门构成的RS触发器。
2.软件方法
软件方法是当检测出键闭合后执行一个10ms~20ms的延时程序,再一次检测键的状态,如仍保持闭合状态,则确认真正有键按下。