现象:
芯片驱动正常,功用使用独自完成也没有任何问题。可是将其移植到主程序中呈现了时钟显现中止、触屏失效、参数显现呈现问题的现象。
原因:
在芯片驱动程序的开发中,疏忽了一个问题。那就是该芯片引脚占用的IO资源在初始化的时分不应该改动其他引脚的正常功用作业。初始化芯片时人为的改动了其他功用引脚的效果。将其功用复用功用人为了改成了输出引脚。只重视了该芯片正常作业时的IO引脚,疏忽了其他各IO口的复用状况。后逐条剖析检查原主程序中 IO的初始化操作,逐口比对发现了该问题。
解决方案:
从头对接口进行初始化,保存其他引脚的功用复用效果。
总结:
作业要详尽,不要犯想当然的缺点。呈现问题后要镇定,咬人是不对的,呵呵。。。
一、关于延时
芯片时序要求十分严厉,最基本的时刻单位必定要十分准确,准确到微秒级。这是进行后续作业的根底。由于C言语来编程,不是很好操控延时的长短。故选用测验的办法进行,为了最大或许的减小差错,选用延伸测验时刻的方法进行。其基本思想是延时必定时刻后,将其时刻在屏幕上打印出来,并剖析各两次时刻的距离和详细延时参数之间的联系。例如:当延时参数为60000000时,各两次时刻距离是否小于1分钟。【补白:60000000us=1min】
二、对芯片的读写操作验证
进行芯片自我验证,向芯片暂存器的固定字节写入数据,然后一个字节一个字节读出来,比对写入和读出的数据是否相同。
三、非易失操作的必要性
RAM数据暂存器用于内部核算和数据的存取,数据在掉电后丢掉。为长时间保存需求保存的数据信息,需求将相关数据信息由暂存器拷贝到EEPROM中。
上电复位后,芯片主动将EEPROM中相关字节拷贝到RAM中。
四、非必需操作的必要性
芯片读取操作,首要读取数据的低8位,再读取数据的高8位。无论是低8位仍是高8位,都是从最低位一位一位的读。即便低位是不需求的字节也要读出来,这叫规矩。