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

 1 void HAL_Delay(__IO uint32_t Delay)
 2 {
 3   uint32_t tickstart = HAL_GetTick(); //获取tick值(毫秒)
 4   uint32_t wait = Delay;
 5
 6   /* Add a period to guarantee minimum wait */
 7   if (wait < HAL_MAX_DELAY)
 8   {
 9      wait++;//传参,延时的时间
10   }
11
12   while((HAL_GetTick() - tickstart) < wait)
13   {
14   }
15 }

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

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

1 // HAL_RCC_GetHCLKFreq()/1000 1ms中断一次,即HAL_Delay函数延时基准为1ms
2 // HAL_RCC_GetHCLKFreq()/100000  10us中断一次,即HAL_Delay函数延时基准为10us
3 // HAL_RCC_GetHCLKFreq()/1000000 1us中断一次,即HAL_Delay函数延时基准为1us
4 HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000000);  // 配置并启动系统滴答定时器

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

 1 int main(void)
 2 {
 3   HAL_Init();
 4   SystemClock_Config();
 5   LED_GPIO_Init();
 6   /* 基本定时器初始化:1ms中断一次 */
 7   BASIC_TIMx_Init();
 8   /* 在中断模式下启动定时器 */
 9   HAL_TIM_Base_Start_IT(&htimx);
10
11   while (1)
12   {
13     if(timer_count==1000)
14     {
15       timer_count=0;
16       LED1_TOGGLE;
17     }
18   }
19 }
20
21 void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
22 {
23   timer_count++;  //回调函数
24 }

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

 1  void delay_ms(int32_t nms)
 2  {
 3   int32_t temp;
 4   SysTick->LOAD = 8000*nms;
 5   SysTick->VAL=0X00;//清空计数器
 6   SysTick->CTRL=0X01;//使能,减到零是无动作,采用外部时钟源
 7   do
 8   {
 9        temp=SysTick->CTRL;//读取当前倒计数值
10   }
11      while((temp&0x01)&&(!(temp&(1<<16))));//等待时间到达
12
13      SysTick->CTRL=0x00; //关闭计数器
14      SysTick->VAL =0X00; //清空计数器
15  } 

转载于:https://www.cnblogs.com/Allen5G/p/10611013.html

STM32 HAL库学习系列第3篇 常使用的几种延时方式相关推荐

  1. STM32 HAL库学习系列第13篇---串口重定向配置--printf

    我的首发平台是公众号[CodeAllen],学习交流QQ群:736386324,本文版权归作者所有,转载请注明出处 发送函数重定向 之后就可以使用输入输出函数 /******************* ...

  2. hal库开启中断关中断_STM32 HAL库学习系列第9篇---NVIC按键外部中断函数

    原文首发于同名微信公号「Allen5G」,欢迎大家搜索关注! **针对HAL库的中断操作,使用按键实例进行说下,以供参考---------------------------**void HAL_GP ...

  3. STM32 HAL库学习笔记1-HAL库简介

    STM32 HAL库学习笔记1-HAL库简介 HAL库 SPL 库 和 HAL 库两者相互独立,互不兼容.几种库的比较如下 目前几种库对不同芯片的支持情况如下 ST 中文官网上有一篇<关于ST库 ...

  4. STM32 HAL库学习笔记4-SPI

    STM32 HAL库学习笔记4-SPI 前言 一.SPI协议简介 SPI物理层 SPI协议层 1.基本通讯过程 2. 通讯的起始和停止信号 3. 数据有效性 4. CPOL/CPHA 及通讯模式 二. ...

  5. STM32 HAL库学习笔记2 HAL库介绍

    STM32 HAL库学习笔记2 HAL库介绍 CMSIS标准 一.再次认识HAL库 HAL库设计思想 HAL库实现方式 以GPIO模块为例 GPIO外设数据类型 GPIO外设接口函数 二.使用HAL库 ...

  6. STM32 HAL库 CubeMX教程(五)串口通信基础

    STM32 HAL库 CubeMX教程(五)串口通信基础 串口通信简介 CubeMX配置 初始化程序分析 程序编写 参考文献 STM32 HAL库 CubeMX系列教程 目录 串口通信简介 UART: ...

  7. STM32 HAL库开发学习笔记: USART1串口通讯(中断方式) IDE-STM32CubeIDE

    STM32串口通讯有三种方式,分别为阻塞(轮询).中断.DMA.这里将用中断的方式开发. 笔者也是刚入门STM32 HAL库开发,该笔记致希望于能帮到初学者,文中配置步骤.代码.实验现象均是笔者实践可 ...

  8. HIH8121(HIH8000系列)温湿度传感器驱动代码-基于STM32 HAL库

    HIH8121温湿度传感器代码基于STM32 HAL库 HIH8121传感器简介 驱动代码.c 驱动代码.h main函数 HIH8121传感器简介 HIH8121是霍尼韦尔公司生产的测量温湿度参数一 ...

  9. STM32 HAL库详解

    STM32 HAL库整体总结 STM32 之二 HAL库详解 及 手动移植 本篇博客是对以上参考资源的一个二次总结与整理. 1. HAL库文件结构 对于开发人员而言,首先要清楚 HAL 库的文件结构. ...

  10. STM32 HAL库串口同时收发,接收卡死?

    STM32 使用 HAL库串口同时收发,使用踩坑史 = =!......by 矜辰所致 目录 前言 一. HAL 库串口收发 1.1 串口发送 1.2 串口接收 1.2.1 标准库接收 1.2.1 H ...

最新文章

  1. pandas使用iloc函数基于dataframe数据列的索引抽取单列或者多列数据、其中多列索引需要嵌入在列表方括号[]中、或使用:符号形成起始和终止范围索引
  2. 「镁客·请讲」必捷网络王振中:融合视联网平台将从根本上治疗实时通讯行业应用痛点...
  3. python核心数据类型_Python核心数据类型-列表
  4. success for advertisement
  5. Qt高级——QTestLib单元测试框架
  6. django orm级联_Django数据表关联关系映射(一对一、一对多、多对多)
  7. GWT的渐进式Web应用程序配方
  8. 超级详细的Spring Boot 注解总结
  9. 前端处理带t的时间_适合家用的跑步机?阿迪达斯轻爵T-19i跑步机测评|adidas|商用机...
  10. 调用多个thrift接口ttypes冲突的问题
  11. Could not write JSON: (was java.lang.NullPointerException);
  12. 基于cocos creator 3.4 实现虚拟摇杆
  13. Windows11 出现桌面管理器dwm.exe占用内存过高的解决方法
  14. 致青春触动心灵的英语美文——小寓言大智慧
  15. Python(七)之OS模块
  16. java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.c
  17. 深入浅出--何为多线程(引用自大神Kyrie lrving)
  18. USB接口EMC设计方案
  19. Linux命令行与shell脚本编程大全.第3版.pdf
  20. pythonocc_如何在pythonOCC中使用样条曲线?

热门文章

  1. shell基础之后台运行脚本
  2. centos操作---搭建环境 安装python
  3. Linux用户登出之后保持后台进程(nohup)
  4. 百度地图之添加控件——比例尺、缩略图、平移缩放
  5. Linux目录结构示意详解图
  6. 【原创】编程题练习:头插法尾插法建立单链表及找寻单链表中的倒数第K个节点...
  7. UE中使用正则表达式的一些技巧
  8. Xcode 真机 iPhone is not available 及 is busy 解决
  9. 多对多表的创建方式 forms组件 session与cookie
  10. 微信小程序-组件使用