资讯动态

STM32单片机标准库—DWT定时

发布时间:2026/8/12 18:28:43 来源:尧图企业网站定制
DWT定时#include core_cm3.h // 必须包含定义 DWT 结构体 // 启用 DWT 计数器 #define DWT_CR *(volatile uint32_t *)0xE0001000 #define DWT_CYCCNT *(volatile uint32_t *)0xE0001004 #define DEM_CR *(volatile uint32_t *)0xE000EDFC #define DEM_CR_TRCENA (1 24) #define DWT_CR_CYCCNTENA (1 0) void DWT_Init(void) { // 使能追踪模块 DEM_CR | DEM_CR_TRCENA; // 使能循环计数器 DWT_CR | DWT_CR_CYCCNTENA; // 清空计数器 DWT_CYCCNT 0; } /** * brief 使用 DWT 实现微秒级延时 * param us: 延时微秒数 */ void DWT_Delay_us(uint32_t us) { uint32_t start_ticks DWT_CYCCNT; // 72MHz - 1us 72 ticks uint32_t target_ticks us * (SystemCoreClock / 1000000UL); while ((DWT_CYCCNT - start_ticks) target_ticks); } /** * brief 毫秒级延时 (基于 DWT) */ void DWT_Delay_ms(uint32_t ms) { uint32_t start_ticks DWT_CYCCNT; // 72MHz - 1us 72 ticks uint32_t target_ticks ms * (SystemCoreClock / 1000UL); while ((DWT_CYCCNT - start_ticks) target_ticks); }

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价