DWT
在 Cortex-M 里面有一个外设叫 DWT(Data Watchpoint and Trace),是用于系统调试及跟踪,它有一个 32 位的寄存器叫 CYCCNT,它是一个向上的计数器,记录的是内核时钟运行的个数,内核时钟跳动一次,该计数器就加 1,精度非常高,决定内核的频率是多少,例如本教程是基于 F103 系列,内核时钟是 72M,那精度就是 1/72M = 14ns,而程序的运行时间都是微秒级别的,所以 14ns的精度是远远够的。最长能记录的时间为:60s=2 的 32 次方/72000000(假设内核频率为 72M,内核跳一次的时间大概为 1/72M=14ns),而如果是 H7 这种 400M 主频的芯片,那它的计时精度高达 2.5ns(1/400000000 = 2.5),而如果是 i.MX RT1052 这种高速的处理器,最长能记录的时间为:8.13s=2 的 32 次方/528000000 (假设内核频率为 528M,内核跳一次的时间大概为 1/528M=1.9ns) 。当 CYCCNT 溢出之后,会清 0 重新开始向上计数。
系统处理框图
本文内容参考自《STM32 库开发实战指南(基于野火霸道开发板)》,特此说明,文章侵删。