历史上的今天
返回首页

历史上的今天

今天是:2025年05月18日(星期日)

正在发生

2018年05月18日 | STM32中通过普通延时函数来精确延时

2018-05-18 来源:eefocus

在STM32中处处会用到延时函数,一般而言,对于普通的控制延时,并不会要求特别精确,所以可以使用普通的延时函数,例如


void delay(u32 time)  

{  

  while(time--);  

}  

 但是在某些情况下,例如读取传感器数据,就需要精确的延时,对于这种,这时候可以考虑使用软件定时器或者系统定时器进行精确定时延时。在这篇博文中不在详细对这两种进行描述。

本文主要是针对某些情况下,使用系统滴答定时器或者软件定时器对工程造成阻塞影响或者定时器用作其他用途,不够使用的情况下的另一种解决方法。


因此本文主要是解决通过普通延时函数实现精确的定时。

博主测试的开发板芯片是STM32f103c8t6,外部晶振是8M,系统使用经过倍频至72M,编译器选择的Keil5,使用的是库函数开发。通过普通延时函数来实现读取温湿度传感器DHT11的数据,由于使用的freeRTOS操作系统,同时各个软件定时器用作其他用途。。。理由不再赘述。


刚开始,通过使用__NOP()函数,因为使用了8M晶振9倍频,72MHz,所以一个nop约等于1/72us,所以使用72个nop函数为一个us,然后根据需要的定时时间进行计算。


void delay_us(u32 nTimer)  

{  

    u32 i=0;  

    for(i=0;i

        __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();  

        __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();  

        __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();  

        __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();  

        __NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();__NOP();  

    }  

}  


void delay_ms(u32 nTimer)  

{  

    u32 i=1000*nTimer;  

    delay_us(i);  

}  


之后通过测试读取传感器数据,得到了数据,证明该延时函数相对比较准确,但是由于博主身边并没有逻辑分析仪或示波器,所以不能对其延时时间进行精确测试。

第二种延时方法是在电子发烧友论坛看到版主通过逻辑分析仪对另一种普通延时进行的精确测试。同样可以实现读取数据。具体延时函数如下所示:


void delay_us(u32 time)  

{  

  u32 i=8*time;  

  while(i--);  

}  

void delay_ms(u32 time)  

{  

  u32 i=8000*time;  

  while(i--);  

}  

推荐阅读

史海拾趣

Cristek Interconnects Inc公司的发展小趣事

面对日益复杂的供应链环境,Cristek Interconnects Inc公司进行了深入的供应链优化。公司与多家优质供应商建立了长期稳定的合作关系,确保了原材料的稳定供应和质量可靠。同时,公司还引入先进的供应链管理系统,提高了供应链的透明度和效率,为公司的快速发展提供了有力保障。

HEIMANN公司的发展小趣事

随着环保意识的日益增强,Cristek Interconnects Inc公司积极响应国家号召,将环保理念融入到企业的生产经营中。公司采用环保材料和生产工艺,减少了对环境的污染。同时,公司还加大了对环保技术的研发力度,推出了一系列环保型电子产品连接器,为行业的可持续发展做出了贡献。

这五个故事只是Cristek Interconnects Inc公司在电子行业发展中的一部分缩影,它们展现了公司在技术创新、质量管理、市场拓展、供应链优化和环保理念践行等方面的努力和成就。这些故事共同构成了Cristek Interconnects Inc公司发展的精彩篇章,也为公司的未来发展奠定了坚实的基础。

Amphenol Thermometrics公司的发展小趣事

Cristek Interconnects Inc公司在技术创新和质量管理的双重驱动下,开始积极拓展市场。公司不仅在国内市场取得了显著的成绩,还积极开拓国际市场。通过与国外知名企业的合作,Cristek的产品成功打入国际市场,进一步提升了公司的知名度和影响力。

DIOTEC公司的发展小趣事

为了进一步完善全球产业布局,DIOTEC于2007年在印度普纳建立了新的生产基地。这座工厂紧邻印度的“门户城市”孟买,为DIOTEC在印度市场的拓展提供了有力支持。印度工厂的投产,不仅加强了DIOTEC在全球市场的竞争力,也进一步巩固了其在亚洲市场的地位。

GHI Electronics公司的发展小趣事

为了满足不同客户的多样化需求,GHI Electronics不断拓展其产品线。除了传统的电子元件和模块外,公司还开始涉足智能家居、物联网等新兴领域。通过不断引入新技术、新产品,GHI Electronics成功实现了从单一产品向多元化产品线的转变。这种转变不仅丰富了公司的产品线结构,也提高了公司的综合竞争力。

Emhiser Research Inc公司的发展小趣事

品质控制一直是Emhiser Research非常重视的方面。公司建立了严格的质量管理体系和检测流程,确保每一件产品都符合高标准的质量要求。同时,公司还注重品牌建设,通过不断提升产品品质和服务水平来树立品牌形象。这些努力使得Emhiser Research在客户中赢得了良好的口碑和信任。

问答坊 | AI 解惑

毕设很重要,但找工作的规则更重要(1)

现在正是年后,各种招聘会招聘广告铺天盖地,我们很多的大学生们又该忙找工作了。我作为一个人到中年的职场油子,今天跟大家谈谈招聘,希望能对大家的择业有所帮助吧。     首先要解开一个误区,那就是应届的大学毕业生很难找工作。     对于 ...…

查看全部问答>

液晶显示器驱动原理

前两次跟大家介绍有关液晶显示器操作的基本原理, 那是针对液晶本身的特性,与TFT LCD本身结构上的操作原理来做介绍. 这次我们针对TFT LCD的整体系统面来做介绍, 也就是对其驱动原理来做介绍, 而其驱动原理仍然因为一些架构上差异的关系, 而有所不同. ...…

查看全部问答>

sql server ce 总是装不上去

我的电脑上先安装了iis,然后我又安装了vs.net2005,继续安装sql server 2000(个人版)+ sql server 2000 sp4 我安装了sp4后查询sql的版本仍然是Microsoft SQL Server  2000 - 8.00.194 (Intel X86)不知道为什么没有改过来。 后来安装 ...…

查看全部问答>

好东东和大家分享:几种创新高性能ADC设计思路

本帖最后由 dontium 于 2015-1-23 13:40 编辑 最近学习了一篇介绍芯海科技的高性能ADC设计的文章,感觉收获颇丰。特别是觉得其中有几个创新设计思路有一定的参考价值,贴出来给和我一样的学习者分享下吧,有经验的高手们也可以来点评一下:   ...…

查看全部问答>

STM32的FLASH中代码如何保密保护?

                                 代码如何加密的?…

查看全部问答>

❤TI DSP 系统设计经典问答!(收藏版★)

一.DSP系统设计经典问答 一、时钟和电源 问:DSP的电源设计和时钟设计应该特别注意哪些方面?外接晶振选用有源的好还是无源的好? 答:时钟一般使用晶体,电源可用TI的配套电源。外接晶振用无源的好。   问:TMS320LF2407的A/D转换精度保 ...…

查看全部问答>

AT89C4051 用什么烧录的程序啊

各位大虾   有没有人用过 At89C4051的处理器  我仿照网上的资料做了一个串口的下载器  但是就是下不了   希望哪位朋友能给个说明啊    非常感谢了…

查看全部问答>

关于ISE ERROR:Xst:528

具体错误如下: Xst:528 - Multi-source in Unit on signal ; this signal is connected to multiple drivers. Xst:528 - Multi-source in Unit on signal ; this signal is connected to multiple drivers. Xst:528 - Multi-source in Unit ...…

查看全部问答>

无线电能发送,给launchpad供电啦!

今天刚做的小东西,传输效率有点低,只有百分之十左右。 http://v.youku.com/v_show/id_XNDcwMTI2NTIw.html…

查看全部问答>

用HC-SR501热释电传感器检测人员活动怎么接啊

如题啊,用Msp430G2553的launchPad和HC-SR501做一个人体检测工具,硬件电路怎么接啊,HC-SR501输出3V,60uA 可以直接接单片机,设置I /O口中断检测吗?还是需要搭三极管,如果搭三极管,电路怎么搭啊,HC-SR501需要5V供电,可以给HC-SR501单独供电 ...…

查看全部问答>