一个超级实用的单片机调试组件
DWT中有剩余的计数器,它们典型地用于程序代码的“性能速写”(profiling)。通过编程它们,就可以让它们在计数器溢出时发出事件(以跟踪数据
DWT跟踪组件
跟踪组件:数据观察点与跟踪(DWT)
(相关资料图)
DWT 中有剩余的计数器,它们典型地用于程序代码的“性能速写”(profiling)。通过编程它们,就可以让它们在计数器溢出时发出事件(以跟踪数据包的形式)。
最典型地,就是使用 CYCCNT寄存器来测量执行某个任务所花的周期数,这也可以用作时间基准相关的目的(操作系统中统计 CPU使用率可以用到它)。
Cortex-M中的DWT
在Cortex-M里面有一个外设叫DWT(Data Watchpoint and Trace),是用于系统调试及跟踪。
它有一个32位的寄存器叫CYCCNT,它是一个向上的计数器,记录的是内核时钟运行的个数,内核时钟跳动一次,该计数器就加1,精度非常高,如果内核时钟是72M,那精度就是1/72M = 14ns,而程序的运行时间都是微秒级别的,所以14ns的精度是远远够的。
最长能记录的时间为:59.65s。计算方法为2的32次方/72000000。
当CYCCNT溢出之后,会清0重新开始向上计数。
使用方法
要实现延时的功能,总共涉及到三个寄存器:DEMCR 、DWT_CTRL、DWT_CYCCNT,分别用于开启DWT功能、开启CYCCNT及获得系统时钟计数值。
DEMCR
想要使能DWT外设,需要由另外的内核调试寄存器DEMCR的位24控制,写1使能(划重点啦,要考试!!)。DEMCR的地址是0xE000 EDFC
关于DWT_CYCCNT
使能DWT_CYCCNT寄存器之前,先清0。让我们看看DWT_CYCCNT的基地址,从ARM-Cortex-M手册中可以看到其基地址是0xE000 1004,复位默认值是0,而且它的类型是可读可写的,我们往0xE000 1004这个地址写0就将DWT_CYCCNT清0了。
关于CYCCNTENA
CYCCNTENA Enable the CYCCNT counter. If not enabled, the counter does not count and no event is generated for PS sampling or CYCCNTENA. In normal use, the debugger must initialize the CYCCNT counter to 0.
它是DWT控制寄存器的第一位,写1使能,则启用CYCCNT计数器,否则CYCCNT计数器将不会工作。
【https://developer.arm.com/documentation/ddi0337/e/system-debug/dwt/summary-and-description-of-the-dwt-registers?lang=en】
综上所述
想要使用DWT的CYCCNT步骤:
先使能DWT外设,这个由另外内核调试寄存器DEMCR的位24控制,写1使能
使能CYCCNT寄存器之前,先清0。
使能CYCCNT寄存器,这个由DWT的CYCCNTENA 控制,也就是DWT控制寄存器的位0控制,写1使能
寄存器定义:
//0xE000EDFCDEMCRRWDebugExceptionandMonitorControlRegister.//使能DWT模块的功能位#defineDEMCR(*(unsignedint*)0xE000EDFC)#defineTRCENA(0x01<<24)//DEMCR的DWT使能位//0xE0001000DWT_CTRLRWTheDebugWatchpointandTrace(DWT)unit//使能CYCCNT计数器开始计数#defineDWT_CTRL(*(unsignedint*)0xE0001000)#defineCYCCNTENA(0x01<<0)//DWT的SYCCNT使能位//0xE0001004DWT_CYCCNTRWCycleCountregister,//CYCCNT计数器的内部值(32位无符号)#defineDWT_CYCCNT(*(unsignedint*)0xE0001004)//显示或设置处理器的周期计数值
用法示例:
vvolatileunsignedint*DWT_CYCCNT;volatileunsignedint*DWT_CONTROL;volatileunsignedint*SCB_DEMCR;voidreset_timer(){DWT_CYCCNT=(int*)0xE0001004;//addressoftheregisterDWT_CONTROL=(int*)0xE0001000;//addressoftheregisterSCB_DEMCR=(int*)0xE000EDFC;//addressoftheregister*SCB_DEMCR=*SCB_DEMCR|0x01000000;*DWT_CYCCNT=0;//resetthecounter*DWT_CONTROL=0;}voidstart_timer(){*DWT_CONTROL=*DWT_CONTROL|1;//enablethecounter}voidstop_timer(){*DWT_CONTROL=*DWT_CONTROL|0;//disablethecounter}unsignedintgetCycles(){return*DWT_CYCCNT;}main(){....reset_timer();//resettimerstart_timer();//starttimer//Codetoprofile...myFunction();...stop_timer();//stoptimernumCycles=getCycles();//readnumberofcycles...}
示例2:
#definestart_timer()*((volatileuint32_t*)0xE0001000)=0x40000001//EnableCYCCNTregister#definestop_timer()*((volatileuint32_t*)0xE0001000)=0x40000000//DisableCYCCNTregister#defineget_timer()*((volatileuint32_t*)0xE0001004)//GetvaluefromCYCCNTregister/************Howtouse:*uint32_tit1,it2;//startandstopflagstart_timer();//startthetimer.it1=get_timer();//storecurrentcycle-countinalocal//dosomethingit2=get_timer()-it1;//Derivethecycle-countdifferencestop_timer();//Iftimerisnotneededanymore,stopprint_int(it2);//Displaythedifference****/
示例3:
#defineDWT_CR*(uint32_t*)0xE0001000#defineDWT_CYCCNT*(uint32_t*)0xE0001004#defineDEM_CR*(uint32_t*)0xE000EDFC#defineDEM_CR_TRCENA(1<<24)#defineDWT_CR_CYCCNTENA(1<<0)/*初始化时间戳*/voidCPU_TS_TmrInit(void){/*使能DWT外设*/DEM_CR|=(uint32_t)DEM_CR_TRCENA;/*DWTCYCCNT寄存器计数清0*/DWT_CYCCNT=(uint32_t)0u;/*使能Cortex-M3DWTCYCCNT寄存器*/DWT_CR|=(uint32_t)DWT_CR_CYCCNTENA;}uint32_tOS_TS_GET(void){return((uint32_t)DWT_CYCCNT);}审核编辑:汤梓红
关键词:
DWT中有剩余的计数器,它们典型地用于程序代码的“性能速写”(profiling)。通过编程它们,就可以让它们在计数器溢出时发出事件(以跟踪数据
换手率大于8%说明了该股票当前处于比较活跃的局面,得到市场上资金的关注,如果在股价上涨途中,换手率5%,说明个股处于被拉升的状态,成交量
一、疫情期间不上班公司不发工资合法吗疫情期间不上班公司不发工资不合法,劳动者可以通过以下的方式进行维权:1 向当地的劳动
根据航拍世家等多方消息源爆料图片,大疆御3无人机似乎要推出一个升级版——Mavic3Pro。根据爆料,大疆Mavic3Pro升级到三摄镜头,增加了
4月9日,东部战区继续环台岛战备警巡和“联合利剑”演习。战区空军梯次出动数十架次侦察、预警、歼击、轰炸、干扰机,飞赴台岛
“一年之计在于春”,万物生长,好事正酿。工厂里、田埂上、景区内、手机前、赛场上……一个个奋斗的身影,一幕幕拼搏的画面,组
一身舒服、时尚的打扮很容易提升了个人的形象。教你做个有气质的精致女子。导读:35块入的”薄化妆“多肉,养了7个月,如今蜕变得越来越美了多
该公司拟以招拍挂的方式取得位于上海市金山区朱泾工业园相邻的两处工业用地,土地总面积约167亩,以满足公司未来发展需求,土地招拍挂起始价格
抄写作文网小编为大家提供山东潍坊中考满分作文:阳光(4)宜昌中考满分作文:和谐永远来供大家参考,欢迎阅读。2017年山东潍坊中考满分作文:
1、地中有山。2、谦。3、山在高也离不开大地。4、高山的形成是地壳运动行成。5、因为你的原因才形成如今的局面。6、如果是
四月时节,花开正好。浦东赏花讯息看过来↓豆科植物打卡点:豆香园(灵山路412号)杜鹃打卡点:东岸滨江全线芳甸路济阳公园(
解答:1、配料:馒头、鸡蛋、水、盐、面粉、五香粉。2、把小面包切成小手指那么厚的片。将面粉、鸡蛋、水、盐和多香果打成糊状
1、过华清宫李约君王游乐万机轻,一曲霓裳四海兵。2、玉辇升天人已尽,故宫惟有树长生。3、〔赏析〕君主追求淫逸,将
老人过七十大寿送什么礼物好,另外,送一个按摩机也行,如果比较时尚的东西可以,老人平时舍不得花钱,可以送一个金戒指给她,或
中新网上海4月9日电(记者陈静)2023年4月9日是第18个国际护胃日,《2023打工人胃健康洞察报告》(以下简称“报告”)正式发布。报告显示,胃部健康问题
包钢股份4月9日公告,公司拟将2023年第二季度稀土精矿关联交易价格调整为不含税31030元 吨(干量,REO=50%),REO每增减1%、不含税价格增减620 6元 吨。
原标题:贝克汉姆回复王濛的大胆表白:谢谢你的喜欢近日,王濛发视频聊自己心爱的足球,并在线表白自己喜欢了20多年的偶像贝克
1、稽留热:体温明显升高到39度以上,24小时内体温波动小于1度。2、驰张热:24小时内体温波动超过2度,但是最低点仍未
从2011年底入手,到今天为止,我的思铂睿已经开了2年多了。从以前马三纯外观党的到处贴纸,转到现在思铂睿的偏技术性的操控
昨天,两个家庭的金丝猴共处一间运动场,成员之间互动不断,好不热闹。近日,南京市红山森林动物园的饲养员们克服重重挑战,将两个金丝猴家庭
根据《北京市事业单位公开招聘工作人员实施办法》(京人社专技发〔2010〕102号)和《顺义区事业单位公开招聘工作人员实施细则》(顺政发〔2011
1、==虽然不知道无筋扩展基础是神马。2、不过我百度了一下。3、无筋扩展基础是基础的一种做法,指由砖、毛石、混凝土或毛石混凝土、灰土和三合
如何制作用于洗手衣服的自制绞干机手洗衣服对织物来说更容易,对环境也更好,但要去除所有多余的水可能具有挑战性。自制的绞干器可以为您完成
随着中国经济的高速发展,未来红酒市场的爆发式增长不可避免。一线城市消费者已经逐渐培养起饮用葡萄酒的习惯,葡萄酒正在融入一线城市消费者
8日下午,苏州科技大学微博就“凌晨发布录取通知”发布情况说明,向相关考生致歉:情况说明针对网民质疑我校材料科学与工程学院硕士研究生调剂
Copyright 2015-2022 世界酒业网 版权所有 备案号:琼ICP备2022009675号-1 联系邮箱:435 227 67@qq.com