| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> 【STM32】标准库与HAL库对照学习教程四--延时函数详解 -> 正文阅读 |
|
[嵌入式]【STM32】标准库与HAL库对照学习教程四--延时函数详解 |
【STM32】标准库与HAL库对照学习教程四--延时函数详解一、前言我们在单片机中用的延时基本分为三种, 循环延时、SysTick滴答定时器延时、SysTick滴答定时器中断延时 ,循环延时就是让CPU不断while循环,while循环完后,在执行下面的程序,while循环的时间,就是延时的时间,这样的方式不仅占用CPU资源而且不好控制延时时间,因此无论是标准库还是HAL库一般都使用STM32芯片上的SysTick滴答定时器完成延时。 二、前期准备
三、SysTick定时器介绍1、SysTick定时器简介SysTick定时器也叫SysTick滴答定时器,它是Cortex-M3内核的一个外设,被嵌入在NVIC中。它是一个24位向下递减的定时器,每计数一次所需时间为1/SYSTICK,SYSTICK是系统定时器时钟,它可以直接取自系统时钟,还可以通过系统时钟8分频后获取。当定时器计数到0时,将从LOAD 寄存器中自动重装定时器初值,重新向下递减计数,如此循环往复。如果开启SysTick中断的话,当定时器计数到0,将产生一个中断信号。因此只要知道计数的次数就可以准确得到它的延时时间。 2、SysTick定时器寄存器介绍(1) CTRL寄存器CTRL是SysTick定时器的控制及状态寄存器。其相应位功能如下: (2)LOAD寄存器LOAD是SysTick定时器的重装载数值寄存器。其相应位功能如下: (3)VAL寄存器VAL是SysTick定时器的当前数值寄存器。其相应位功能如下: (4)CALIB寄存器CALIB是SysTick定时器的校准数值寄存器。其相应位功能如下: 汇总一下:
3、SysTick定时器的时钟来源其在时钟树的位置:
有关时钟树的讲解可以看这篇文章:【STM32】STM32标准库与HAL库对照学习教程特别篇–系统时钟RCC详讲 5、SysTick定时器配置步骤SysTick定时器的操作大致可以分为 4 步: 四、标准库的延时1、标准库的配置步骤(1)复制上一讲的工程,并命名为4、SysTick定时器延时。 (2)在工程中新建Public文件夹,表明是里面保存的是通用的程序。 (3)在Public文件夹内建立Delay文件夹,用来保存SysTick定时器的程序。 (4)打开工程,新建两个文件并命名为:Delay.h和Delay.c,保存在刚建立的Delay文件夹内。 (5)添加文件到目录并添加文件路径。 (6)使用SysTick定时器要添加misc.c文件。 2、SysTick定时器配置程序Delay.h的程序:
Delay.c的程序:
3、主程序
4、软件仿真步骤(1)根据自己开发板的外部时钟晶振频率参数设置,我的是8MHz。 (2)Debug选项设置。 (3)点击Debug,打开示波器,设置参数。 5、实验效果软件仿真效果:
硬件仿真效果(引脚高低电平持续时间): 五、HAL库的延时1、HAL库的配置步骤(1)复制2.LED工程并命名为3.SysTick. (2)在工程中新建Public文件夹,表明是里面保存的是通用的程序。 (3)在Public文件夹内建立Delay文件夹,用来保存SysTick定时器的程序。 (4)打开工程,新建两个文件并命名为:Delay.h和Delay.c,保存在刚建立的Delay文件夹内。 ② (5)添加文件到目录并添加文件路径。 ② 2、SysTick定时器配置程序Delay.h:
Delay.c:
3、实验效果与标准库的实验效果一样,但是这里还是放一下测试的图片。 3、关于HAL_Delay()函数(1)函数情况HAL_Delay()这个函数是HAL库自带的毫秒级延时函数,基本上在以后的工程中,没有特殊情况,我们都不使用自己建的延时函数,基本上都用HAL_Delay()这个函数,函数使用的是SysTick滴答定时器中断延时。 (2)函数程序
(3)程序说明
到这里文章就结束啦! |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 8:22:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |