DWT硬件延时

2024-02-26 20:04
文章标签 硬件 延时 dwt

本文主要是介绍DWT硬件延时,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

DWT硬件延时


文章目录

  • DWT硬件延时
  • 软件&硬件延时方案
    • 软件延时
    • 硬件延时方案
  • DWT硬件延时方案
    • DWT硬件延时方案
    • DEMCR寄存器
    • DWT硬件延时方案实现
      • 延时初始化:
      • US延时:
      • MS延时:


软件&硬件延时方案

软件延时

static void Delay(uint32_t count){
while (count--);
}

软件延时的缺点:

  1. 延时精度差;

  2. 受系统主频影响,调校困难。

硬件延时方案

硬件延时,利用计数功能的硬件进行延时,比如单片机片上定时器(Timer) ,内核滴答定时器(systick)等:

void SysTick_Handler(void){
HAL_IncTick();
}
__weak void HAL_IncTick(void){
uwTick++;
}
__weak void HAL_Delay(_IO uint32_t Delay){uint32_t tickstart = 0;
tickstart = HAL_GetTick();
while((HAL_GetTick() - tickstart) < Delay);}
__weak uint32_t HAL_GetTick(void){
return uwTick;
}

DWT硬件延时方案

Cortex-M4内核架构图
在这里插入图片描述

DWT硬件延时方案

  • DWT里有一个32位的寄存器叫CYCCNT,它是一个向上计数器,记录的是内核时钟运行的次数,内核时钟跳动一次,该计数器就加1,如果内核时钟是120MHz,那精度就是1/120M = 8.3ns,而单片机程序的运行时间通常都是微秒级别的,所以DWT实现延时的精度是非常高的。
  • 要实现DWT延时的功能,总共涉及到三个内核寄存器: DEMCR、 DWT_CTRL、 DWT_CYCCNT,分别用于开启DWT功能、开启CYCCNT及获得系统时钟计数值;当CYCCNT溢出之后,会清O重新开始向上计数。
  • 如果内核时钟是120MHz,直接使用CYCCNT延时最大值为: 232*1/120M = 36S

DEMCR寄存器

使能DWT,需要向DEMCR寄存器的24位写1,寄存器定义位于core_cm4.h:

CoreDebug->DEMCR &=
~CoreDebug_DEMCR_TRCENA_Msk;CoreDebug->DEMCR |=
CoreDebug_DEMCR_TRCENA_Msk;

DWT硬件延时方案实现

使能计数器,需要向CTRL寄存器的0位写1:

DWT->CTRL &= ~DWT_CTRL_CYCCNTENA_Msk;
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;

计数器清零:

DWT->CYCCNT = 0;

延时初始化:

/*
@brief DWT初始化配置
*
@param
@return
*/
void Delaylnit(void){}
/* 关闭 TRC */
CoreDebug->DEMCR &= ~CoreDebug_DEMCR_TRCENA_Msk;
/* 打开 TRC*/
CoreDebug->DEMCR |= CoreDebug_DEMCR_TRCENA_Msk;
/* 关闭计数功能 */
DWT->CTRL &= ~DWT_CTRL_CYCCNTENA_Msk;
/* 打开计数功能 */
DWT->CTRL |= DWT_CTRL_CYCCNTENA_Msk;
/* 计数清零*/
DWT->CYCCNT = 0;
}

US延时:

/*
@brief 微秒级延时函数
@param nUs,最大延时时间( 2^32 /内核主频)*10^6 us
@return
*/
void DelayNus(uint32_t nUs){
uint32_t tickStart = DWT->CYCCNT;
/*转换为nUs对应的时钟跳动次数*/
nUs *= (rcu_clock_freq_get(CK_AHB) / 1000000);
/* 延时等待 */
while ((DWT->CYCCNT - tickStart) < nUs);
}

MS延时:

/*
@brief 毫秒级延时函数
@param nMs,延时时间n毫秒
*
@return
*/
void DelayNms(uint32_t nMs){
for (uint32_ti = 0; i < nMs; i++){
DelayNus(1000);
}
}

这篇关于DWT硬件延时的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/749986

相关文章

【STM32】SPI通信-软件与硬件读写SPI

SPI通信-软件与硬件读写SPI 软件SPI一、SPI通信协议1、SPI通信2、硬件电路3、移位示意图4、SPI时序基本单元(1)开始通信和结束通信(2)模式0---用的最多(3)模式1(4)模式2(5)模式3 5、SPI时序(1)写使能(2)指定地址写(3)指定地址读 二、W25Q64模块介绍1、W25Q64简介2、硬件电路3、W25Q64框图4、Flash操作注意事项软件SPI读写W2

独立按键单击检测(延时消抖+定时器扫描)

目录 独立按键简介 按键抖动 模块接线 延时消抖 Key.h Key.c 定时器扫描按键代码 Key.h Key.c main.c 思考  MultiButton按键驱动 独立按键简介 ​ 轻触按键相当于一种电子开关,按下时开关接通,松开时开关断开,实现原理是通过轻触按键内部的金属弹片受力弹动来实现接通与断开。  ​ 按键抖动 由于按键内部使用的是机

机器视觉硬件选型根据某项目相机镜头

一 项目总需求 1、大视野检测需求: (1)大视野: ①产品尺寸15.6寸屏幕,产品大小:350mm x 225mm; ②产品料盘尺寸大小:565mm x 425mm; ③工作距离:880mm;检测精度:500μm; 1、大视野检测需求: (1)大视野: ①产品尺寸15.6寸屏幕,产品大小:350mm x 225mm; ②产品料盘尺寸大小:565mm x 425mm; 工作距离:

学习硬件测试05:NTC(ADC)+正弦波(DAC)+DMA(ADC+DAC)(P73、P76、P78)

文章以下内容全部为硬件相关知识,鲜有软件知识,并且记的是自己需要的部分,大家可能看不明白。 一、NTC(ADC) 1.1实验现象 本实验用 NTC 采集温度,数码管实时显示温度数据(整数),左下角 USB 小串口每隔 1S 打印温度信息。 1.2硬件电路 NTC 电阻是一个模拟温度传感器,随着温度的升高,电阻值逐渐减小。电路简单介绍如下: 电源滤波电容在 25℃ 室温下 NTC 电

集运系统需要与哪些硬件设备集成?

随着电商和跨境贸易的不断发展,集运服务越来越受到海外用户的青睐。集运系统作为一种高效的跨境物流管理工具,可以协调各个环节之间的物流流程,提高物流效率和管理水平,被越来越多的集运企业采用。而集运系统作为集运服务的重要组成部分,也需要配套相应的硬件设备才能更好地支持跨境集运业务。下面就来介绍一下集运系统需要哪些硬件设备支持呢? 1.PDA:是一种便携式电子设备,可以轻松地进行数据采集和处理,具有移

一台笔记本电脑的硬件都有哪些以及对应的功能

一台笔记本电脑的硬件通常包括多个关键组件,这些组件共同协作,确保电脑的正常运行。以下是笔记本电脑的主要硬件及其功能: 1. 中央处理器(CPU) 功能:CPU 是电脑的“大脑”,负责处理所有的计算和指令执行。它执行操作系统和应用程序的指令,控制其他硬件设备。常见品牌:Intel(如 Core i3/i5/i7/i9)、AMD(如 Ryzen 系列)。 2. 内存(RAM) 功能:内存用于存

Pr:首选项 - 音频硬件

Pr菜单:编辑/首选项 Edit/Preferences Premiere Pro 首选项中的“音频硬件” Audio Hardware选项卡可以指定计算机的音频设备和设置,还可以指定 Pr 用于音频回放和录制的 ASIO 和 MME 设置(仅限 Windows)或 CoreAudio 设置(仅限 macOS)。 当连接音频硬件设备时,该类型设备的硬件设置(如默认输入、默认输出、主时钟、延迟和

合宙Air780E硬件设计手册02

上文文主要介绍了Air780E的硬件设计中的的应用接口部分。 上文链接:Air780E低功耗4G模组硬件设计手册01-CSDN博客 在本文我们会继续介绍Air780E的硬件设计介绍。  二、应用接口 2.10  SIM卡接口 Air780E支持2路SIM卡接口,支持ETSI和IMT-2000卡规范,支持1.8V和3.0VUSIM卡。 以满足双SIM 卡切换的需求。 2.10.1. S

硬件-经典开机电路

文章目录 一:网友公司祖传的开机电路二:电路符号名称三:电路原理分析道友:对于利益相关的人,要展示你的实力和智力。对于利益不相关的人,展示你的礼貌就好。 一:网友公司祖传的开机电路 业务逻辑:一般是肯定要设计一个电路,能把这个电池电压有时候可以关断,断开或者连接导通到这个VS,然后用VS去产生这种内部使用的电压。前置要求:按键K1,按下闭合,系统上电开机;按键按一下就会自动

2.1ceph集群部署准备-硬件及拓扑

硬件配置及建议 时至今日,ceph可以运行在各种各样的硬件平台上,不管是传统的x86架构平台(intel 至强系列、基于amd的海光系列等),还是基于arm的架构平台(比如华为鲲鹏),都可以完美运行ceph集群,展现了其强大的适应能力。 ceph的不同组件对硬件的需求有些许不同,下面是官方推荐的硬件要求: 组件资源最低配置要求OSD处理器最少1 core每200-500 MB/s最少1 co