在Cortex-M里面有一个外设叫DWT(DataWatchpoint andTrace),是用于系统调试及跟踪,DWT的中文名字应该是:数据观察点触发。
明显DWT属于DBG部分的功能,从上图的可以看出DWT属于CortexM4内核的,理论上M4内核的MCU都支持的,因为他可以代替定时器外设实现上文提到延时功能和测量代码运行时间的功能,DWT不能代替定时器的其他功能。之所以DWT可以实现延时功能,因为它有一个32的计数器CYCCNT,这是一个向上计数的计数器,当它溢出时会自动清零并重新开始向上计数,它的频率就是内核的主频。简单点说,就是内核时钟跳动一下,CYCCNT计数器就加1。很明显DWT计数器的精度和系统主频有关, AT32F手册上对这部分描述不太清楚,可以看CortexM4手册上有具体的 首选使用DWT前必须使能DBG的系统跟踪,控制使能位在DEMCR寄存器的bit24。 使用DWT测量程序运行时间比定时器方便多了,避免中断 测量一下延时函数时间 在主频288Mhz情况下,还是非常精确
|