1174|0

3836

帖子

19

TA的资源

纯净的硅(中级)

楼主
 

编程开发技巧总结 [复制链接]

以前总是知道单片机就是定时器,状态机,中断这些东西结合起来效率是相当高的,但是自从接手开发GPF这个芯片之后,我发现了另外一种单片机的开发技巧,高手请绕道。


      我们都知道,在程序中,延时会影响单片机的实时性能,导致效率明显降低,但是在GPF这个芯片的开发中,系统延时和初始化被供应商做到了一块,所以调用程序,必须要做一定的loop才能使得程序能够正常的跑起来,其实我也不知道她们为什么要这么做。


      在工作中,改一份源码不是随随便便就可以改的,当时做了这么一个程序,源码我就不公开了,写个案例解释:




void test()
{
        int i = 0 ;
        int tick ;
        int BatteryStatus = 0;
        int Voltage ;
        int count = 0 ;
        int Voltage_value ;
        char ch ;
        scanf("%d",&BatteryStatus);
        while(1)
        {
                delay_20ms();
                switch(BatteryStatus)
                {
                        case 1:
                                   if(count == 50)
                                   {
                                        printf("0x%x\n",0xE1);
                                                count = 0 ;
                                   };break ;
                        case 2:
                                   if(count == 50)
                                   {
                                        printf("0x%x\n",0x90); //发通用'1'信号
                                                count = 0 ;
                                   };break ;
                        default:
                                        break ;
                }
                count++ ;
                #if 0
                ch = getch();   //假设我在这设立一个按键
                if(ch == 'q')
                {
                        printf("%x",0x48);
            break ;
                }
                #endif
        }
}
在while循环中,首先进去是延时20个ms,然后count计数器加加,当加到50次也就是一秒钟了,然后清零。此时若按下按键,不会受到干扰,程序正常运行,效率依然很高。如果这时候delay_20ms改成delay_1000ms,程序扫描按键每次就要等待1s钟,影响效率。计数值可以自我估计一下,不需要太准,这样的程序在延时不需要太精准的可以实现和定时器差不多一样的功能。


 
点赞 关注

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表