历史上的今天
返回首页

历史上的今天

今天是:2025年02月16日(星期日)

正在发生

2020年02月16日 | STM8L101F3P6关于毫秒级延时函数不同写法的波形

2020-02-16 来源:eefocus

总结一下STM8L101F3P6工作在16MHz下,利用死循环、中断等不同写法的微秒级延时函数精度的情况。


一、死循环空指令的写法,延时函数程序如下:

/******************************************************************************/

/* Function name:       Delay_ms                                              */

/* Descriptions:        毫秒级延时函数函数,16MHz时钟                         */

/* input parameters:    nCount延时时间                                        */

/* output parameters:   无                                                    */

/* Returned value:      无                                                    */

/******************************************************************************/

void Delay_ms(unsigned int nCount)

{

    uint16_t i=0,j=0;;

    for(i=0;i    {

        for(j=0;j<1142;j++)

        {;}

    }

}


调用函数如下:


/******************************************************************************/

/* Function name:       main                                                  */

/* Descriptions:        主函数                                                */

/* input parameters:    无                                                    */

/* output parameters:   无                                                    */

/* Returned value:      无                                                    */

/******************************************************************************/

main()

{

    BoardInit();

 

    enableInterrupts();

 

    while(1)

    {

        GPIO_ResetBits(GPIOC,GPIO_Pin_2);

        Delay_ms(1);

        GPIO_SetBits(GPIOC,GPIO_Pin_2);

        Delay_ms(1);

    }

}


Delay_ms(1);大约延时1毫秒

Delay_ms(10);大约延时9.9835毫秒


Delay_ms(100);大约延时99.74毫秒


Delay_ms(1000);大约延时997.05毫秒


可以看到,这种利用死循环来写的毫秒级的延时,与微秒级的延时来比,相对来说,精度已经提高了不少。但是要知道,这种死循环的延时是与代码量也有关系的,在代码变多的情况下,如果想提高ms级的精度,要适当的调整循环值,并且要用示波器进行观察。这种方法的缺点就不多说了,CPU占用率太高,效率低下,浪费能源。


Delay_ms(1)的波形:

Delay_ms(10)的波形:

Delay_ms(100)的波形:

Delay_ms(1000)的波形:

推荐阅读

史海拾趣

国炬(GOOGLL)公司的发展小趣事
为了防止电路中的元器件损坏导致负载回路短路,常常在负载回路中转入熔断丝作为保护措施。
General Instrument公司的发展小趣事
在某些情况下,突然断电可能引发安全隐患,如正在运行的设备突然停止可能导致事故。
CETC公司的发展小趣事

随着电子行业的快速发展,CETC意识到单打独斗难以应对市场的快速变化。于是,公司积极寻求与其他企业的合作,共同推动产业的发展。在与某知名通信设备制造商的合作中,CETC提供了先进的电子元件和解决方案,双方共同开发出了多款畅销产品,实现了市场的共赢。这种合作模式不仅提升了CETC的市场竞争力,也促进了整个电子行业的健康发展。

Display Elektronik GmbH公司的发展小趣事

Display Elektronik GmbH始终将产品质量放在首位。公司建立了严格的质量控制体系,从原材料采购到生产流程,再到成品检测,每一个环节都严格把关。这种对品质的坚持让Display Elektronik GmbH的产品在市场上赢得了良好的口碑,也为其赢得了众多知名客户的信赖。

Box Enclosures公司的发展小趣事

在市场竞争日益激烈的背景下,Box Enclosures公司意识到单打独斗难以取得更大的突破。于是,公司开始积极寻求与其他企业的战略合作。通过与一家知名电子设备制造商的合作,Box Enclosures成功将其产品集成到对方的产品中,共同开拓市场。这种合作不仅提升了公司的知名度,还为其带来了更多的商业机会和合作伙伴。

Dae Ryung Electronic Co Ltd公司的发展小趣事

Dae Ryung Electronic Co Ltd公司自创立之初,就致力于电子技术的研发与创新。公司创始人深知技术是企业发展的核心驱动力,因此投入大量资源用于研发。经过数年努力,公司成功研发出一款高性能、低成本的微处理器,这一产品迅速在市场上获得认可,为公司带来了可观的利润。随后,公司继续加大研发投入,不断推出新产品,逐渐在电子行业中树立了技术领先的形象。

问答坊 | AI 解惑

matlab第八课-大结局-三维图

到了最后拉 算是最后一课啦! [ 本帖最后由 gaoxiao 于 2009-6-16 22:58 编辑 ]…

查看全部问答>

教你认识元件封装图

教你认识元件封装图…

查看全部问答>

请教变量问题

OEMAddressTable     ;;;-------------------------------------------------------------     ;;; Virt Addr   Phys Addr   MB     ;;;-------------------------------------------------- ...…

查看全部问答>

FPGA如何与SJA1000连接?

请问各位高手: FPGA可以与SJA1000的RST引脚直接相连吗?…

查看全部问答>

在stm32中用volatile修饰的变量是什么意思

                                 在stm32中用volatile修饰的变量是什么意思…

查看全部问答>

死活请问2812的供电问题

datasheet上说150m运行时候需要1.9v的核心电压。但是我死活没有找到电流最少要多少,也就是说我核心全速的时候要消耗多少电流。 网上的板子原理图都用1117,但是我不是很喜欢这块片子,输出端的电容要100uF。 在ti上找了1.9v的片子,但是输出电流 ...…

查看全部问答>

【视频分享】电源设计小贴士49:多层陶瓷电容器常见小缺陷的规避方法

各位好久不见啦!!最近美女小编感冒了,在家休息,有好一阵子没和大家分享好的东东啦! 今天和大家分享TI电源设计小贴士系列的视频,讲解得十分透彻。 因其小尺寸、低等效串联电阻(ESR)、低成本、高可靠性和高纹波电流能力,多层陶瓷 (MLC) 电容 ...…

查看全部问答>

求助SSI2.DLL

SSI2.DLL是wince里面的一个动态链接库,主要作用是调动设备中的激光扫描头,由于本人不会编程,特此求助附件是相应的.H和.LIB文件,说明文档还有示例文件,希望可以得到帮助,帮忙生成DLL文件 …

查看全部问答>

NIOS II 添加PIO但是没有引脚输出【已解决】

本帖最后由 574433742 于 2015-8-4 17:42 编辑 刚开始 鼓捣这个NIOS II,搜了些资料,自己跟着做,添加了PIO但是输出的IP没有 IO端口,不知如何是好? 求 知情人士 告知,,谢谢了。。。。 如图所示: 图1:Qsys 图2:IP …

查看全部问答>

电源中“地”的问题

【不懂就问】 隔离变压器或者电气隔离经常见 但是不知道怎么实现隔离 查资料说,隔离变压器是隔离原边和副边的电流 副边没有和大地相连,任何一根线和大地都没有电压差所以安全 【1】光耦里用的是光电隔离,那变压器如何隔离原副边的电流,不 ...…

查看全部问答>