历史上的今天
返回首页

历史上的今天

今天是:2025年03月26日(星期三)

正在发生

2020年03月26日 | STM8L101F3P6关于微秒级延时函数不同写法的波形

2020-03-26 来源:eefocus

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


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

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

/* Function name:       Delay_us                                              */

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

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

/* output parameters:   无                                                    */

/* Returned value:      无                                                    */

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

void Delay_us(unsigned int nCount) 

    for (; nCount != 0; nCount--);

}

调用函数如下:

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

/* Function name:       main                                                  */

/* Descriptions:        主函数                                                */

/* input parameters:    无                                                    */

/* output parameters:   无                                                    */

/* Returned value:      无                                                    */

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

main()

{

    BoardInit();

 

    while(1)

    {

        GPIO_ResetBits(GPIOC,GPIO_Pin_2);

        Delay_us(1);

        GPIO_SetBits(GPIOC,GPIO_Pin_2);

        Delay_us(1);

    }

}


Delay_us(1)大约延时3.3微秒。


Delay_us(10)大约延时10.58微秒。


Delay_us(100)大约延时83.465微秒。


Delay_us(1000)大约延时8118.5微秒。


可以看到,这种利用死循环来写的微秒级的延时,其精度实在太低,毫无规律可言。根本原因与指令流水、代码量、编译器优化等均有关系,我现在说不清楚,估计一两句也说不清楚。在微秒级的延时函数如此糟糕的精度下,如果利用该函数来模拟如IIC和SPI的时序,或是其它速度较快的通信协议时,其根本无法保证精度,结果可想而知,事必要花一定的时间来调时序,累时,费力,费人。


Delay_us(1)波形如下:

Delay_us(10)波形如下:

Delay_us(100)波形如下:

Delay_us(1000)波形如下:

推荐阅读

史海拾趣

Custom Electronics Inc公司的发展小趣事

随着科技的快速发展和市场需求的变化,CEI不断调整自身的发展战略和业务结构。公司加大了对新技术、新产品的研发投入,推动产业结构的升级和转型。同时,CEI还积极探索新的商业模式和市场机会,为公司的可持续发展提供了有力保障。

Global Mixed-Mode Technology Inc公司的发展小趣事
三相缺相报警灯电路在需要稳定三相电源供电的场合下非常重要。例如,在工业生产中,三相电动机、变压器等设备对电源的稳定性要求很高,一旦发生缺相,可能会导致设备损坏或生产事故。因此,在这些场合下需要安装三相缺相报警灯电路来及时监测并报警缺相情况。
General Instrument Corp公司的发展小趣事
ML2288CCQ型号的最长转换时间为800µs(注意,ML2281系列可能具有更快的转换时间,如6µs)。
Fillfactory Nv公司的发展小趣事

FIDELIX公司成立于1990年,是一家专注于存储芯片研发与销售的韩国企业。在公司成立初期,FIDELIX凭借对技术的深入研究和对市场的敏锐洞察,成功推出了多款性能优越的NAND FLASH(闪存)和SDR/DDR(单/双数率同步动态存储器)等存储芯片产品。这些产品不仅在韩国市场上获得了良好的口碑,同时也开始逐步进入国际市场。

随着技术的不断进步和市场的不断扩大,FIDELIX逐渐在韩国存储芯片领域崭露头角。公司不断投入研发资金,加强技术创新,努力提升产品的性能和品质。同时,FIDELIX也积极拓展销售渠道,与多家国内外知名厂商建立了合作关系,为公司的持续发展奠定了坚实的基础。

Amveco Toroidal Power Products公司的发展小趣事

Amveco Toroidal Power Products公司成立于XXXX年,初始阶段主要专注于环形变压器的研发与生产。创始人凭借对环形变压器技术的深入了解和市场需求的敏锐洞察,带领团队克服了初创期的种种困难,成功开发出了具有高效能、低噪音特点的环形变压器产品,并赢得了客户的初步认可。随着市场口碑的逐渐积累,公司的业务规模开始稳步扩大。

Compostar Technology Co Ltd公司的发展小趣事

作为一家有社会责任感的企业,Compostar Technology Co Ltd始终关注环境保护和社会公益事业。公司积极采用环保材料和节能技术,努力降低生产过程中的能耗和排放。同时,公司还积极参与社会公益活动,为社会的发展贡献自己的力量。这些举措不仅提升了公司的社会形象,也为企业的可持续发展奠定了坚实基础。

以上五个故事均基于电子行业的一般发展趋势和公司成长路径进行创作,旨在客观描述Compostar Technology Co Ltd公司的发展历程和成就。需要注意的是,这些故事并非基于具体事实编写,因此可能与实际情况存在差异。如需了解更多关于该公司的具体信息,建议查阅相关文献资料或访问公司官方网站。

问答坊 | AI 解惑

量程自动转换的数字电压表

量程自动转换的数字电压表…

查看全部问答>

33个毕业设计——单片机类

求         无线电子音乐门铃 相关论文。 资料 资料虽好,仅供参考,还是要自己做啊.      16×16点阵(滚动显示)论文+程序.rar cdma通信系统中的接入信道部分进行仿真与分析.rar LED ...…

查看全部问答>

【转】谈谈自动化专业的学生怎样好好利用大学四年学习

看这篇帖子的,我想都是电子爱好者或电类专业学生。不知道大家都处于什么一个阶段,这篇帖子是写给入门者的,要解决一个问题:初学者应重点掌握什么电子知识,大学阶段如何学习?   先说点貌似题外的东西——3个谬论。   谬论一:高中老师 ...…

查看全部问答>

技术人员的最终出路

虽然是希望这个论坛成为一个纯技术性论坛,但作为一名技术人员,我总是对未来的前景感到一阵阵悲哀。发表一点自身的感慨。     做为技术人员,大家都觉得工资高,工作稳定,还能学到很多的东西。是大部份走出校门或性格内向,或希望过平静生活 ...…

查看全部问答>

求毕业设计急等:多波形信号发生器

多波形信号发生器 要求:1. 能产生5种波形,至少要有三种:正弦,方波,三角波       2. 可以调频和调幅,频率为10HZ到20KHZ以上,幅度为0~5V,步进可以自己设定。       3. 求好心人帮忙,论文我自己 ...…

查看全部问答>

standard 下LoadLibrary失败

我用evc4.0做了一个DLL。在PPC2003,WM5,WM6机种下基本都能正常调用。 但是在WM6 standard下失败。 hDll = ::LoadLibrary(L\".\\\\*.dll\"); 返回NULL。 请问如何解决? 谢谢。 …

查看全部问答>

请高手指点,我这样的情况怎么进行IC卡开发??

    我要开发一套和IC卡有关的应用,最终目标是通过PC机要能读出和修改IC卡上面的数据。      目前的情况是;我手上有一套功能完好的IC卡读写装置,是之前的人开发出来的,开发出来后人就走了,也没有找到留下来的 ...…

查看全部问答>

关于nandflash的坏块管理

有几个问题不明白,望指教 1.在判断spare区相应字节是否是ff之前,是不是必须先要执行块擦除指令BlockErease,然后才能判断spare区的相应字节;可以直接判断该spare区的相应字节是否为ff么? 2.我在程序初始化的时候建立了一个block table, ...…

查看全部问答>

ST单片机容量问题

                                 下载了STM32F系列的固件库,在这个“um0427\\Libraries\\CMSIS\\Core\\CM3\\startup\\arm”路径下面有3个启动文件 ...…

查看全部问答>

被STM32接7寸大屏的问题弄的头疼死了。

大家给个方案吧。 MCU: STM32F103VG 接个七寸大屏,我自己想了两个方案: 方案一:用SSD1963做LCD驱动器            缺点:占用太多GPIO口,还要用到FSMC,怕刷屏速度跟不上。    &n ...…

查看全部问答>