一个超级实用的单片机调试组件 (做一个实用的东西)
整理分享一个超级实用的单片机调试组件 (做一个实用的东西),希望有所帮助,仅作参考,欢迎阅读内容。
内容相关其他词:一个超级实用的事例,一个超级实用的游戏,比较实用的,一个超级实用的软件,超级实用的app有哪些,一个超级实用的事例,一个超级实用的事例,一个超级实用的app,内容如对您有帮助,希望把内容链接给更多的朋友!
DWT中有剩余的计数器,它们典型地用于程序代码的“性能速写”(profiling)。通过编程它们,就可以让它们在计数器溢出时发出事件(以*数据包的形式)。最典型地,就是使用CYCCNT寄存器来测量执行某个任务所花的周期数,这也可以用作时间基准相关的目的(*作*中统计CPU使用率可以用到它)。Cortex-M中的DWT在Cortex-M里面有一个外设叫DWT(DataWatchpointandTrace),是用于*调试及*。它有一个位的寄存器叫CYCCNT,它是一个向上的计数器,记录的是内核时钟运行的个数,内核时钟跳动一次,该计数器就加1,精度非常高,如果内核时钟是M,那精度就是1/M=ns,而程序的运行时间都是微秒级别的,所以ns的精度是远远够的。最长能记录的时间为:.s。计算方法为2的次方/。当CYCCNT溢出之后,会清0重新开始向上计数。使用方法要实现延时的功能,总共涉及到三个寄存器:DEMCR、DWT_CTRL、DWT_CYCCNT,分别用于开启DWT功能、开启CYCCNT及获得*时钟计数值。DEMCR想要使能DWT外设,需要由另外的内核调试寄存器DEMCR的位控制,写1使能(划重点啦,要*!!)。DEMCR的*是0xEEDFC关于DWT_CYCCNT使能DWT_CYCCNT寄存器之前,先清0。让我们看看DWT_CYCCNT的基*,从ARM-Cortex-M手册中可以看到其基*是0xE,复位默认值是0,而且它的类型是可读可写的,我们往0xE这个*写0就将DWT_CYCCNT清0了。关于CYCCNTENACYCCNTENAEnabletheCYCCNTcounter.Ifnotenabled,thecounterdoesnotcountandnoeventisgeneratedforPSsamplingorCYCCNTENA.Innormaluse,thedebuggermustinitializetheCYCCNTcounterto0.它是DWT控制寄存器的第一位,写1使能,则启用CYCCNT计数器,否则CYCCNT计数器将不会工作。【 