历史上的今天
返回首页

历史上的今天

今天是:2024年10月15日(星期二)

正在发生

2018年10月15日 | STM32的延时程序,us级延时

2018-10-15 来源:eefocus

据前人说,做嵌入式系统最忌讳的就是程序等延时和浪费timer,所以平时写程序很努力的在避免毫秒级的延时,而且一般的rtos是需要个时基的,所以尽量做到只用systick来完成系统时基,毫秒,微妙的延时。

但做18B20等的通信还是需要一些us级别的延时的,网上看了比较多的延时实现方法,均不是很实用,比如正点原子用systick单纯的做毫秒或微妙延时,虽不用中断,但把一个systick就浪费了。实在找不到现成的,就只能自己写个了。首先是用systick来维护一个每次中断都自增的全局变量,作为ms延时和系统其他时间的时基。其次,借助systick的寄存器写了如下一个us级的延时程序

 

void Delay_us(uint32_t delay_time)
{
 uint32_t delay_curr;
 int32_t x=0;
 delay_start = SysTick->VAL;
 delay_time *= US_RATIO;
 x = delay_start - delay_time;
 
 if (x < 0)  
 {
  delay_goal = x + SystemCoreClock/SYSTICK_FREQUENCY;  
  do{delay_curr = SysTick->VAL;
  }while(WAIT_DELAY_U1);
 }
 
 else
 {
   delay_goal = x; 
   do{delay_curr = SysTick->VAL;
   }while(WAIT_DELAY_U2);
 }
}

SystemCoreClock 72000000

SYSTICK_FREQUENCY 1000

US_RATIO 72

WAIT_DELAY_U2  ((delay_curr > delay_goal) && (delay_curr < delay_start))
WAIT_DELAY_U1  ((delay_curr > delay_goal) || (delay_curr < delay_start)) 

 

考虑到自己的用途,us延时的理论范围是1-999us,由于有中断,实际用最好不大于900us,示波器测试还是比较理想的。


推荐阅读

史海拾趣

C-MAC Automotive公司的发展小趣事

在电子行业快速发展的今天,C-MAC Automotive公司始终保持着对创新的追求。公司不断投入研发资金,探索新的技术方向和应用领域。通过持续创新,C-MAC成功推出了一系列具有竞争力的新产品,为公司的发展注入了新的动力。同时,公司还注重人才培养和团队建设,打造了一支高效、专业的研发团队,为公司的未来发展奠定了坚实基础。

这些故事虽然基于虚构,但反映了电子行业中许多企业发展的普遍规律。通过技术突破、战略合作、创新营销、全球化战略和持续创新等手段,企业可以不断提升自身竞争力,实现快速发展。

Aborn Electronics Inc公司的发展小趣事

随着全球环保意识的提高,Aborn Electronics积极响应绿色发展的号召,将环保理念融入公司的发展战略中。公司加大了对环保技术的研发和应用力度,推出了一系列环保型电子产品,并在生产过程中采用了多项节能减排措施。同时,Aborn Electronics还积极参与社会公益活动,推动电子行业的可持续发展。这些举措不仅提升了公司的社会形象,也为公司的长远发展注入了新的动力。

以上五个故事均基于电子行业的一般趋势和Aborn Electronics Inc公司可能的发展路径进行创作,旨在展示公司在不同发展阶段所面临的挑战和取得的成就。由于实际情况可能有所不同,这些故事仅作为参考,并不代表公司的真实发展历程。

3M公司的发展小趣事

随着电子行业的快速发展,Aborn Electronics意识到只有不断创新才能在竞争中保持领先。公司加大了对研发的投入,引进了一批高素质的研发人才,并在多个技术领域取得了重要突破。其中,一项关于高效能电源管理技术的创新成果,不仅提高了产品的能效比,还为公司带来了可观的经济效益。这一技术的成功应用,进一步提升了Aborn Electronics在行业内的影响力。

Dean Technology公司的发展小趣事

Dean Technology公司起源于上世纪80年代,当时电子行业正经历着飞速的发展。创始人凭借其深厚的电子技术背景和敏锐的市场洞察力,决定进入高压二极管领域。他带领研发团队不断攻克技术难题,成功推出了一系列性能稳定、品质可靠的高压二极管产品,奠定了公司在行业中的技术领先地位。

Fedco_Batteries公司的发展小趣事

面对日新月异的市场需求和技术变革,Fedco_Batteries始终保持创新的步伐。公司加大了研发投入,不断推出新型电池产品,满足客户的多样化需求。同时,公司还积极探索新的应用领域,将电池技术应用于更多领域,如新能源汽车、智能家居等。这种创新驱动的发展战略,让Fedco_Batteries在行业中始终保持领先地位。

昆泰(CHRONTEL)公司的发展小趣事

进入21世纪后,昆泰的创始人Dr. Gillings不满足于CRO企业的平稳收益和稳定现金流,他开始寻求与药企建立更加紧密的战略合作伙伴关系。为此,昆泰在2000年成立了PharmaBio部门,通过资金、技术和销售团队为客户提供全方位的支持。这一战略转型不仅使昆泰与药企建立了深厚的合作关系,还为其带来了丰厚的回报。

问答坊 | AI 解惑

电子基本概念

一、电荷:物质是由分子组成,而分子是由原子组成 ,每个原子又是由一个带正电的原子核及一定数量的带负电的电子所组成,这些带电的粒子就叫电荷。   二、电源:是指由非电能转换成电能的装置,即把其他形式的能转换成电能的装置叫做电源。发电机 ...…

查看全部问答>

F题输出阻抗600欧???

本帖最后由 paulhyde 于 2014-9-15 08:57 编辑 请问工程师,F题目的前置放大输出阻抗600欧姆如何实现?是否要用电压跟随器?  …

查看全部问答>

Windows CEnet设备驱动程序开发研究.pdf

Windows CEnet设备驱动程序开发研究.pdf…

查看全部问答>

品味高雅的开放式音响空间

本帖最后由 jameswangsynnex 于 2015-3-3 20:00 编辑 品味是由一连串的想法、做法、看法、观念串联而成,并不是用金钱堆砌就可以获得,布鲁蓝光网今天采访的就是一个明证;空间没有太多的豪华装饰,可是却让你感受到很高雅的品味。 人生未必 ...…

查看全部问答>

VxWorks命令行中执行命令“devs”之后的“host:”是怎么出来的。

VxWorks中命令devs之后的host:是怎么出来的。 -> devs drv name      0 /null      1 /tyCo/0      1 /tyCo/1      5 host:      6 ...…

查看全部问答>

MPEG4压缩的嵌入式实现

如果采用ARM9平台,移植linux操作系统,用xvid编码实现,不知道帧率如何? 如果用FPGA,采用sopc实现,没找到已有的MPEG ip核,可能工作量很大 想听一下大家的意见,谢谢…

查看全部问答>

求高手指点如何安装Windows Embedded CE 6.0破解版?

1、我已经安装好VS2005 http://download.microsoft.com/download/b/a/6/ba691c56-8833-446c-82fe-cf94b588a622/chs_vs_2005_VSTS_180_Trial.img Visual Studio 2005注册升级 可升级正式版key:KYTYH-TQKW6-VWPBQ-DKC8F-HWC4J 找到SETUP文件 ...…

查看全部问答>

121篇FPGA 图像处理相关论文大赠送

[ 本帖最后由 ming1005 于 2010-10-20 23:34 编辑 ]…

查看全部问答>

关于大功率升压电路&MC34063的功率问题的疑惑

先说问题:       MC34063+功率MOS管组成的大功率电路里,总电路的功率跟MC34063的耗散功率到底是个什么关系,总电路的功率是主要摊在MOS管上,还是怎么回事?      查了百度半天也没看到说明 ...…

查看全部问答>

谁给对比一下LM3S8962和LM3S9B96,各有什么特点?

希望了解价格、功能,开发工具和应用方面的对比?…

查看全部问答>