程序移植中的常见问题总结

发布者:等放假的Lwj最新更新时间:2015-05-07 来源: 51hei关键字:程序移植  芯片驱动 手机看文章 扫描二维码
随时随地手机看文章
现象:

        芯片驱动正常,功能应用单独实现也没有任何问题。但是将其移植到主程序中出现了时钟显示停止、触屏失效、参数显示出现问题的现象。

原因:
        在芯片驱动程序的开发中,忽略了一个问题。那就是该芯片引脚占用的IO资源在初始化的时候不应该改变其他引脚的正常功能工作。初始化芯片时人为的改变了其余功能引脚的作用。将其功能复用功能人为了改成了输出引脚。只关注了该芯片正常工作时的IO引脚,忽略了其余各IO口的复用状态。后逐条分析查看原主程序中 IO的初始化操作,逐口比对发现了该问题。

解决方案:
        重新对接口进行初始化,保留其余引脚的功能复用作用。        

总结:
        工作要细致,不要犯想当然的毛病。出现问题后要冷静,咬人是不对的,呵呵。。。

 一、关于延时

      芯片时序要求非常严格,最基本的时间单位一定要非常精确,精确到微秒级。这是进行后续工作的基础。因为C语言来编程,不是很好控制延时的长短。故采用测试的方法进行,为了最大可能的 减小误差,采用延长测试时间的方式进行。其基本思想是延时一定时间后,将其时间在屏幕上打印出来,并分析各两次时间的间隔和具体延时参数之间的关系。例如:当延时参数为60000000时,各两次时间间隔是否小于1分钟。【备注:60000000us=1min】

二、对芯片的读写操作验证

    进行芯片自我验证,向芯片暂存器的固定字节写入数据,然后一个字节一个字节读出来,比对写入和读出的数据是否一样。 

三、非易失操作的必要性

    RAM数据暂存器用于内部计算和数据的存取,数据在掉电后丢失。为长期保存需要保存的数据信息,需要将相关数据信息由暂存器拷贝到EEPROM中。
    上电复位后,芯片自动将EEPROM中相关字节拷贝到RAM中。

四、非必需操作的必要性

    芯片读取操作,首先读取数据的低8位,再读取数据的高8位。无论是低8位还是高8位,都是从最低位一位一位的读。即使低位是不需要的字节也要读出来,这叫规则。

关键字:程序移植  芯片驱动 引用地址:程序移植中的常见问题总结

上一篇:一种高精度低成本的测温方案
下一篇:error:undeclared name解决办法

推荐阅读最新更新时间:2024-03-16 14:01

基于STM32的DS1302时钟芯片驱动
/************************************************************************************************************************* * 函数 : DS1302.H * 功能 : DS1302头文件 * 参数 : 无 * 返回 : 无 * 依赖 : 底层读写函数 * 最后修改时间 : * 说明 : DS1302采用GPIO模拟SPI的方式DS1302 LSB格式,上升沿写 下降沿读 BCD码存储 * 参考 : ********************************************************
[单片机]
PCF8563 时钟芯片驱动程序 (STM8S/STM8L)
模拟I2C读取时钟芯片PCF8563中的日期时间 #define SCLK_Clr() GPIO_ResetBits(GPIOD, GPIO_PIN_1)//SDA IIC接口的时钟信号 #define SCLK_Set() GPIO_SetBits(GPIOD, GPIO_PIN_1) #define SDIN_Clr() GPIO_ResetBits(GPIOD, GPIO_PIN_2)//SCL IIC接口的数据信号 #define SDIN_Set() GPIO_SetBits(GPIOD, GPIO_PIN_2) u8 buf ; void SDA_IN(u8 in) { if(in) GPIO_I
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved