单片机
返回首页

单片机编程开发技巧经验分享

2018-11-19 来源:eefocus

 工作了7个月之久,对单片机的编程也开始慢慢熟悉起来,以前总是知道单片机就是定时器,状态机,中断这些东西结合起来效率是相当高的,但是自从接手开发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钟,影响效率。计数值可以自我估计一下,不需要太准,这样的程序在延时不需要太精准的可以实现和定时器差不多一样的功能。


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • CCD图像传感器在微光电视系统中的应用

  • 非常简单的150W功放电路图

  • 一个简单的警笛电路图

  • 优化电路板布局的简单方法

  • 使用NE555和磁簧开关的橱柜照明电路

  • 一种构建12V和230V双直流电源的简单方法

    相关电子头条文章