历史上的今天
返回首页

历史上的今天

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

正在发生

2019年08月05日 | STM32 HAL库学习系列第3篇 常使用的几种延时方式

2019-08-05 来源:eefocus

1   自带的hal_delay 函数    毫秒级延迟


void HAL_Delay(__IO uint32_t Delay)

{

  uint32_t tickstart = HAL_GetTick(); //获取tick值(毫秒)

  uint32_t wait = Delay;

 

  /* Add a period to guarantee minimum wait */

  if (wait < HAL_MAX_DELAY)

  {

     wait++;//传参,延时的时间

  }

 

  while((HAL_GetTick() - tickstart) < wait)

  {

  }

}

也可以配置为us延时,改变函数参数


配置方法:也可以配置为1us


// HAL_RCC_GetHCLKFreq()/1000 1ms中断一次,即HAL_Delay函数延时基准为1ms

// HAL_RCC_GetHCLKFreq()/100000  10us中断一次,即HAL_Delay函数延时基准为10us

// HAL_RCC_GetHCLKFreq()/1000000 1us中断一次,即HAL_Delay函数延时基准为1us

HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000000);  // 配置并启动系统滴答定时器

2 中断延时----利用定时器计时


int main(void)

{

  HAL_Init();

  SystemClock_Config();

  LED_GPIO_Init();

  /* 基本定时器初始化:1ms中断一次 */

  BASIC_TIMx_Init();

  /* 在中断模式下启动定时器 */

  HAL_TIM_Base_Start_IT(&htimx);

 

  while (1)

  {

    if(timer_count==1000)

    {

      timer_count=0;

      LED1_TOGGLE;

    }

  }

}

 

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)

{

  timer_count++;  //回调函数

}

3 优选方式------获取系统时钟计时,非阻塞式延时


 void delay_ms(int32_t nms) 

 {

  int32_t temp; 

  SysTick->LOAD = 8000*nms; 

  SysTick->VAL=0X00;//清空计数器 

  SysTick->CTRL=0X01;//使能,减到零是无动作,采用外部时钟源 

  do 

  { 

       temp=SysTick->CTRL;//读取当前倒计数值 

  }

     while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达 

     

     SysTick->CTRL=0x00; //关闭计数器 

     SysTick->VAL =0X00; //清空计数器 

 }


推荐阅读

史海拾趣

Elprotronic Inc.公司的发展小趣事

随着电子行业的不断发展,客户对电子元器件的需求也在不断变化。Elprotronic Inc.紧跟市场趋势,不断推出具有创新性的产品和技术。其中,一项名为“高速数据传输技术”的创新成果引起了业界的广泛关注。这项技术可以大幅提高数据传输速度,同时保证数据的稳定性和安全性。这一突破性的技术创新为Elprotronic Inc.赢得了更多客户的信赖和支持,也进一步巩固了公司在行业中的地位。

ECI公司的发展小趣事

面对日益激烈的市场竞争,ECI公司积极开拓国际市场。公司成立了专门的国际市场部,负责海外市场的调研、开发和推广。通过深入了解不同国家和地区的市场需求和文化差异,ECI公司成功推出了符合当地消费者需求的电子产品。同时,公司还与多家国际知名企业建立了长期稳定的合作关系,进一步扩大了市场份额。

Artaflex公司的发展小趣事

创新是Artaflex公司持续发展的核心动力。公司不断投入研发资金,加强技术创新和新产品开发。通过不断推出具有创新性和竞争力的产品,公司不仅满足了市场的多样化需求,也赢得了客户的信任和好评。同时,公司还注重人才培养和团队建设,为公司的长期发展奠定了坚实的基础。

DuPont公司的发展小趣事

随着全球环保意识的提高,对于环保型电子材料的需求也日益增长。DuPont公司积极响应这一趋势,致力于环保型电子材料的研发和生产。公司采用先进的环保技术和生产工艺,开发出了一系列低污染、低能耗的电子材料。这些材料不仅具有良好的性能,而且对环境友好,符合可持续发展的要求。DuPont公司的这一举措,不仅提升了公司的竞争力,也为电子行业的可持续发展做出了积极贡献。

Computer Conversions Corp公司的发展小趣事

随着云计算和大数据技术的兴起,计算机行业迎来了新一轮的变革。Computer Conversions Corp公司迅速调整战略,开始研发与云计算相结合的新型转换设备。通过不断地技术革新和产品迭代,公司成功推出了一系列高效、稳定的云计算转换解决方案,帮助众多企业顺利迁移到了云平台,从而保持了在行业中的领先地位。

HANA Micron公司的发展小趣事

除了工业检测仪表外,Hama在家用视听设备领域也取得了显著成就。公司推出的哈曼卡顿音响系列,以其卓越的音质表现和时尚的外观设计,迅速成为消费者心中的首选品牌。这些家用视听设备不仅为消费者带来了高品质的视听享受,也进一步丰富了Hama的产品线,提升了公司的市场竞争力。随着消费者对高品质生活的追求日益增强,Hama的家用视听设备业务有望继续保持快速增长。

问答坊 | AI 解惑

POWERPCB绘制多层PCB必读

POWERPCB绘制多层PCB必读 …

查看全部问答>

送给新手,申请免费样品

发现了三个公司可以申请免费样片,www.maxim-ic.com,    www.ti.com,      www.analog.com 找申请样品栏目进入即可。 第一个最方便,我申请了个887,市场新的要二十多呢,两个就是40多,俄哈阿哈哈。 第二个也有步 ...…

查看全部问答>

大赛D题

本帖最后由 paulhyde 于 2014-9-15 09:35 编辑 大家一起努力  …

查看全部问答>

WINCE 开发程序,当界面上有TEXTBOX时如何屏蔽输入法

WINCE 开发程序,当界面上有TEXTBOX时如何屏蔽输入法,屏蔽界面下方会出现个中文的输入法…

查看全部问答>

winCE 开发环境如何配置

我有PDA设备是MC3000的,我用的是C#来做开发的,现在我遇到一个重大问题,数据同步不到PDA设备上,就是执行PULL时出错, 我估计是我的环境配置有问题,我的PC上已经装了sql server 2000 sp3的补丁,也装了sql ce 3.0 的程序,在IE里测试我的IIS是正确的,PD ...…

查看全部问答>

KEIL编译UC/OS-II??

        在KEIL平台上编译UC/OS我有这样的一个困惑,我发现任务堆栈里保存的仅仅是CPU寄存器的状态和一些函数嵌套时的PC值还有就是函数嵌套时的一些传递参数的值,但是他并没有保存函数中的局部变量,这样的话 ...…

查看全部问答>

智能 交通灯 控制器设计

本人毕设遇到了瓶颈,无奈导师太忙。故在此求助各位大虾~ 内容是可以通过对车流量的实时监测,绿灯的倒计时间可以实时更改,涉及到一个智能控制的问题。 在车流量监测方面最好用视频识别,不过有点困难,暂时用其他方法代替也可。 小弟现在问题 ...…

查看全部问答>

求解stellaris ICDI与LM FDTI??

之前用MDK3.5版本在LM3S1138上下载程序的时候,选Luminary Eval board下载程序成功了 现在换到MDK4.53版本,Flash config里面没有Luminary Eval board这个选项了,有人说选stellaris ICDI,于是选之,结果点了download提示说找不到Cortex-M Device ...…

查看全部问答>

不急,网站 能够对 小白 买 简单的 集成电路 提供点建议?

总算安定了,有时间 玩键盘了发现 自己的动手能力 还是 急待提高的 买 简单的 集成电路 提供点建议?能够 在整体上 给个 意见?具体一点,比如 小白 见 MSP430 才20脚,想到 增加接口,找到 3线-8线 译码器 ,, 对应的 器件 74LS138 和 其他不同公 ...…

查看全部问答>