精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

STM32“隱藏的定時器”-DWT

開發 前端
在《如何測量代碼運行時間》中提到使用定時器外設計算代碼運行時間。文中提到這種方法的明顯缺點就是需要占用一個定時器,我就研究了一番。

[[419526]]

1 前言

在之前的文章在《STM32延時函數的四種方法》使用定時器延時,在《如何測量代碼運行時間》中提到使用定時器外設計算代碼運行時間。文中提到這種方法的明顯缺點就是需要占用一個定時器,一些MCU在特定應用場景下定時器外設資源是十分稀缺的。在留言區有位大佬提到可以使用DWT,我就研究了一番。

2 DWT

在Cortex-M里面有一個外設叫DWT(DataWatchpoint andTrace),是用于系統調試及跟蹤,DWT的中文名字應該是:數據觀察點觸發。在STM32用戶手冊的第32章節Debugsupport (DBG)有如下框圖。

明顯DWT屬于DBG部分的功能,從上圖的標題可以看出DWT屬于CortexM3內核的,理論上M3內核的MCU都支持的,這個下文會說明。在這里我將其稱之為“隱藏的定時器”,因為他可以代替定時器外設實現上文提到延時功能和測量代碼運行時間的功能,DWT不能代替定時器的其他功能。

之所以DWT可以實現延時功能,因為它有一個32的計數器CYCCNT,這是一個向上計數的計數器,當它溢出時會自動清零并重新開始向上計數,它的頻率就是內核的主頻。簡單點說,就是內核時鐘跳動一下,CYCCNT計數器就加1。

很明顯DWT計數器的精度和系統主頻有關,我們常用的STM32F103主頻一般為72Mhz,STM32F207一般為120Mhz,STM32H7主頻一般為400Mhz。以為主頻最低為72Mhz的STM32F103為例,精度是1/72M= 14ns,這個精度足以滿足大部分延時函數的需求,同樣程序的運行時間都是微秒級別的,遠遠滿足測量代碼運行時間的要求。

3 DWT的配置

首選使用DWT前必須使能DBG的系統跟蹤,控制使能位在DEMCR寄存器的bit24。注意該寄存器詳細說明在STM32的用戶手冊上查不到,需要在CortexM3內核手冊查到,在《Cortex-M3權威指南》書中也可以查到。

在使能CYCCNT計數器前,必須先將其清零。下圖是從ARM的官方手冊《Cortex-M3Technical Reference Manual》中查到的。

使能CYCCNT計數器,其控制位是DWT控制寄存器的第一位,寫1使能,則啟用CYCCNT計數器,否則CYCCNT計數器將不會工作。 

總結一下:

a.先使能DWT外設,由內核調試寄存器DEM_CR的位24控制,寫1使能。

b.使能CYCCNT寄存器之前,先清0。

c.使能CYCCNT寄存器,由DWT_CTRL的位0控制,寫1使能。

代碼如下

  1. //寄存器基地址 
  2. #define    DWT_CR    *(uint32_t*)0xE0001000 
  3. #define    DWT_CYCCNT    *(uint32_t*)0xE0001004 
  4. #define    DEM_CR    *(uint32_t*)0xE000EDFC 
  5.  
  6. //定義需使能位 
  7. #define    DEM_CR_TRCENA    (1<<24) 
  8. #define    DWT_CR_CYCCNTENA    (1<<0) 
  9.  
  10. //DWT init 
  11. void DWT_init(void) 
  12.   DEM_CR |= (uint32_t)DEM_CR_TRCENA; 
  13.   DWT_CYCCNT = (uint32_t)0u; 
  14.   DWT_CR |= (uint32_t)DWT_CR_CYCCNTENA; 
  15. //get DWT count 
  16. uint32_t DWT_TS_GET(void) 
  17.   return((uint32_t)DWT_CYCCNT); 

4 代碼

從上文我們得知,我們已經獲得了一個32位向上累加的計數器,溢出會自動清零并累加,頻率是系統主頻。那么我們簡單封裝下,就可以實現延時函數。以下代碼在120Mhz的STM32F207測試。

  1. //使用DWT延時time_ms毫秒 
  2. void DWT_Delay_Ms(uint32_t time_ms) 
  3.   uint32_t old_counter,current_counter; 
  4.   uint32_t delay_ms; 
  5.    
  6.   old_counter = DWT_TS_GET(); 
  7.   current_counter = DWT_TS_GET(); 
  8.   delay_ms = 0; 
  9.   while(delay_ms<time_ms) 
  10.   { 
  11.     current_counter = DWT_TS_GET(); 
  12.     if(current_counter > old_counter) 
  13.       delay_ms = (current_counter - old_counter)/(SystemCoreClock/1000); 
  14.     else 
  15.       delay_ms = (current_counter + 0XFFFFFFFF - old_counter)/(SystemCoreClock/1000); 
  16.   } 

使用之前的文章《如何測量代碼運行時間》測量延時函數是否準確。

  1. DWT_Delay_Ms(100);//延時100ms 
  2. time_ms=Time_Difference_ms(); 

如下圖,延時函數精確延時,沒有問題

實現測量代碼運行時長的函數接口

  1. //使用DWT測量函數運行時間 
  2. float DTW_Time_Difference_ms(void) 
  3.   static uint32_t old_counter; 
  4.   uint32_t counter,couter_current; 
  5.   couter_current = DWT_TS_GET(); 
  6.   if(couter_current > old_counter) 
  7.     counter = couter_current - old_counter; 
  8.   else 
  9.     counter = couter_current + 0XFFFFFFFF - old_counter; 
  10.   old_counter = couter_current; 
  11.   return (counter / (SystemCoreClock/1000)); 

使用之前的文章《STM32延時函數的四種方法》精確延時,然后使用DWT測量延時時間。

  1. delay_ms(300);//延時300ms 
  2. time_ms=DTW_Time_Difference_ms(); 

如下圖,可以精確測量代碼運行時間,沒有問題。

5 后記

本文使用DWT代替了定時器部分功能,它的優缺點如下:

1、優點是:方便移植,經過測試在M3、M4、M7內核的MCU上都可以使用。

2、缺點是:和定時器一樣,都有一個延時的最大時間,測量代碼運行時間的最大值。

如果項目使用MCU有空閑的定時器,且不考慮換MCU的話,我個人建議還是使用通用的定時器外設,不要使用DWT,雖然DWT方便移植,但通用定時器外設簡單易懂,對于沒有了解過這部分知識的小白,看到DWT的延時函數,還需要學習下。

本文轉載自微信公眾號「知曉編程」

 

責任編輯:姜華 來源: 知曉編程
相關推薦

2010-07-28 15:56:22

FlexTimer定時

2009-11-11 10:14:10

linux定時器操作系統

2021-05-20 07:26:22

DMASTM32數據

2021-05-06 08:54:39

串口DMASTM32

2021-02-03 13:04:24

STM32網絡控制器

2022-10-10 08:24:15

編程數據邏輯語句

2021-12-22 06:56:07

STM32C語言內存

2022-11-02 11:40:16

Flowable定時器流程

2021-02-05 08:41:44

STM32網絡中斷

2021-01-20 09:51:25

STM32網絡接口

2022-01-07 08:24:13

STM32枚舉結構體

2021-06-28 06:00:11

systemd定時器系統運維

2013-07-29 10:10:40

TCP協議TCP定時器TCP

2011-02-23 10:20:45

2021-03-31 08:33:17

SysTick定時器SysTick定時器

2009-04-12 08:51:50

Symbian諾基亞移動OS

2023-01-10 13:53:21

Linux定時器

2021-07-27 16:01:29

高并發定時器高性能

2021-08-31 08:01:40

STM32DSP指令

2023-08-02 09:26:03

軟件定時器鴻蒙
點贊
收藏

51CTO技術棧公眾號

国产日产精品一区二区三区| 欧美一区二区三区成人精品| 免费污视频在线| 97se亚洲国产综合自在线观| 国产精品成人v| 全网免费在线播放视频入口| 老司机精品在线| 在线精品视频免费播放| 国产亚洲精品久久久久久久| 三级无遮挡在线观看| 久久国产生活片100| 欧美激情一区二区久久久| 亚洲午夜精品久久久久久高潮| 国产精品一区二区美女视频免费看| 亚洲mv在线观看| 在线视频不卡一区二区| 神马久久高清| 成人综合在线视频| 国产综合色香蕉精品| 日韩欧美亚洲视频| 亚洲最大av| 国产一区二区三区在线观看视频 | 日韩女优电影在线观看| 妞干网在线免费视频| 欧美卡一卡二| 亚洲色图在线看| 日本一区美女| 天天色综合av| 成人综合在线视频| 91视频国产高清| 这里只有精品999| 国产情侣一区| 国产69精品久久久| 久操视频免费在线观看| 999国产精品视频| 在线视频一区二区| 人妻体内射精一区二区| 欧美大胆视频| 亚洲第一网站男人都懂| 国内自拍偷拍视频| 欧美区一区二区| 91精品国产福利| 一起操在线视频| 精品久久在线| 欧美日韩一级视频| 国产视频1区2区3区| 国产精品高清乱码在线观看| 欧美性猛xxx| 无码aⅴ精品一区二区三区浪潮 | 四虎永久免费观看| 精品亚洲a∨一区二区三区18| 欧美日韩中文字幕一区二区| 美女黄色片视频| 成人福利片在线| 在线观看日韩电影| 性刺激的欧美三级视频| 国精产品一区一区三区四川| 91国内精品野花午夜精品| 黄色片一级视频| 吞精囗交69激情欧美| 色婷婷精品久久二区二区蜜臀av| 欧美私人情侣网站| 69堂精品视频在线播放| 欧美亚洲综合一区| 中文字幕视频三区| 欧美一区在线观看视频| 日韩精品最新网址| 欧美精品欧美极品欧美激情| 嫩草国产精品入口| 亚洲美女av网站| 青青青视频在线播放| 围产精品久久久久久久| 欧美夫妻性生活视频| 日本熟妇一区二区| 日韩和欧美的一区| 亚洲aⅴ男人的天堂在线观看| 国产激情视频在线播放 | 精品欧美一区二区在线观看视频 | 久久久久99精品一区| 日韩免费电影一区二区| 黄色av电影在线播放| 一区二区三区日韩在线观看| 天天夜碰日日摸日日澡性色av| 中国色在线日|韩| 欧美影视一区二区三区| av噜噜在线观看| 精品欧美午夜寂寞影院| 亚洲色图15p| 日本aⅴ在线观看| 国产日韩免费| 成人午夜在线观看| 四季av日韩精品一区| 亚洲国产精品黑人久久久| 警花观音坐莲激情销魂小说| 台湾佬中文娱乐网欧美电影| 欧美日韩精品一区二区三区四区 | 一区二区久久久久久| 日韩欧美国产免费| 亚洲欧美综合久久久久久v动漫| 亚洲第一视频在线观看| 欧美日韩中文字幕视频| 尹人成人综合网| 国产精品视频一| 五月婷婷深深爱| 一区精品在线播放| 成人羞羞国产免费网站| 2023国产精华国产精品| 中文字幕日韩在线播放| 国语对白一区二区| 狠狠色2019综合网| 蜜桃av噜噜一区二区三| 欧洲黄色一区| 欧美日韩精品欧美日韩精品一 | 国内老熟妇对白hdxxxx| 国产视频一区在线观看| av无码久久久久久不卡网站| 日韩五码电影| 亚洲欧洲一区二区三区久久| 久久久久久久国产视频| 精东粉嫩av免费一区二区三区| 久久伊人一区| 成人免费图片免费观看| 欧美一区二区日韩| 国产成人精品视频免费| 久久精品九九| 久久av一区二区三区亚洲| 怡红院在线播放| 555夜色666亚洲国产免| 美女av免费看| 免费一级片91| 欧美亚洲精品日韩| 久久uomeier| 亚洲精品不卡在线| 国产无套内射又大又猛又粗又爽| 精品在线一区二区三区| 亚洲人体一区| 成人黄色在线| 中文字幕在线看视频国产欧美在线看完整 | 欧美另类综合| 91丨九色丨国产| 国产激情视频在线| 69久久99精品久久久久婷婷| 国产白丝一区二区三区| 秋霞午夜鲁丝一区二区老狼| 日韩电影天堂视频一区二区| 欧美精品高清| 亚洲香蕉成人av网站在线观看 | 日韩成人性视频| 亚洲黄色一区二区| 99久久er热在这里只有精品66| 国产精品videossex国产高清| 国产一区精品二区| 欧美风情在线观看| 欧美一区二区三区成人片在线| 亚洲乱码国产乱码精品精98午夜 | 国产日韩精品一区二区三区在线| 成年人免费大片| 日韩免费特黄一二三区| 国产精品偷伦一区二区| 在线观看黄色av| 日韩一区二区精品葵司在线 | 欧美激情1区2区3区| 国产精品18毛片一区二区| 波多野在线观看| 日韩电影第一页| 欧美一级做a爰片免费视频| 欧美经典一区二区三区| 亚洲网中文字幕| 很黄很黄激情成人| 久久久影院一区二区三区| 全亚洲第一av番号网站| 中国人与牲禽动交精品| 国产免费高清视频| 亚洲成av人在线观看| 91成年人网站| 国内一区二区视频| 婷婷五月综合缴情在线视频| 久久99国内| 91精品久久久久久久久中文字幕| 亚洲精品白浆| 亚洲午夜av久久乱码| 国产精品无码在线播放| 午夜私人影院久久久久| 2019男人天堂| 国产丶欧美丶日本不卡视频| 成人羞羞国产免费网站| 在线免费观看日本欧美爱情大片| 精品欧美一区二区在线观看视频| 精品三级在线| 97色在线观看| 岛国成人毛片| 亚洲精品色婷婷福利天堂| 国产又粗又猛又爽又黄的| 午夜精品福利一区二区三区av| 2019男人天堂| 日韩欧美中文字幕一区二区三区| 国产原创一区二区| 国产又爽又黄ai换脸| 国产精品1luya在线播放| 国产精品久久久久久久久免费 | 国产高清免费av在线| 欧美一级生活片| 久草手机在线视频| 亚洲品质自拍视频网站| av在线网站观看| 国产高清亚洲一区| 黄色aaa级片| 亚洲国产综合在线看不卡| 亚洲毛片aa| 香蕉人人精品| 国产伦精品一区二区三区照片| 久久er热在这里只有精品66| 国产91精品久| 白白色在线观看| 美女福利视频一区| 欧美日韩在线看片| 在线成人激情视频| 男人天堂综合| 亚洲精品福利在线观看| 亚洲va欧美va| 欧美美女激情18p| 中文人妻熟女乱又乱精品| 婷婷久久综合九色综合绿巨人| 中文字幕av免费在线观看| 国产精品午夜春色av| 无码h肉动漫在线观看| av福利精品导航| 国产精品果冻传媒| 国产自产高清不卡| 九九热免费在线观看| 日本午夜精品视频在线观看 | 亚洲毛茸茸少妇高潮呻吟| 丰满少妇被猛烈进入| 国产羞羞视频在线播放| 精品精品国产高清一毛片一天堂| 一级特黄色大片| 欧美视频一区二区三区四区| 东京热一区二区三区四区| 欧美日韩裸体免费视频| 日韩精品视频免费播放| 亚洲mv大片欧洲mv大片精品| 亚洲精品在线观看av| 亚洲国产精品精华液网站| 免费人成视频在线| 夜夜揉揉日日人人青青一国产精品| 裸体武打性艳史| 亚洲欧美日韩一区| 爱爱视频免费在线观看| 一区二区三区在线免费视频| 在线观看成人毛片| 亚洲一级在线观看| 日本午夜精品理论片a级app发布| 亚洲欧美另类小说| 青青操视频在线播放| 亚洲午夜精品在线| 日韩美女黄色片| 欧美日韩国产在线看| 精品人妻一区二区三区免费看 | 欧美视频在线观看网站| 妖精视频成人观看www| 久色视频在线播放| 久久一区中文字幕| 国产精品区在线| 国产一区二区在线视频| 真实乱偷全部视频| av电影在线观看完整版一区二区| 中文字幕人妻一区二区三区| 91啦中文在线观看| 97在线观看免费视频| 国产精品成人网| 免费人成年激情视频在线观看| 午夜精品久久久久久久久久久| 国产伦精品一区二区三区视频网站| 在线免费精品视频| 国产视频在线一区| 精品国产露脸精彩对白| 免费成人av电影| 久久精品视频99| 波多野结衣中文字幕久久| 国产成人精品电影久久久| 日韩国产91| 国产精品久久久久久久久久久久冷| 亚洲宅男一区| 久久免费视频2| 国产欧美日韩一区二区三区在线| 男人女人黄一级| 成人在线视频首页| 亚洲综合色一区| 亚洲免费观看高清完整版在线观看熊 | 国产精品久久久久久模特| 波多结衣在线观看| 成人精品免费网站| 综合 欧美 亚洲日本| 亚洲国产一区二区视频| 波多野结衣黄色| 精品日韩一区二区三区| 国产系列在线观看| 欧美激情在线观看视频| www.久久.com| 久久精品午夜一区二区福利| 99久久国产综合精品成人影院| 欧美精品一区二区三区三州| 精品一区二区三区蜜桃| 久久国产精品无码一级毛片| 亚洲日本丝袜连裤袜办公室| 国产91国语对白在线| 日韩欧美成人激情| 尤物网址在线观看| 欧美亚洲成人精品| 一区二区视频| 一区二区三区四区五区视频| 国产日韩欧美一区| 中文字幕无码毛片免费看| 国产三级精品在线| 亚洲伊人成人网| 欧美刺激午夜性久久久久久久| 成人在线二区| 欧美自拍视频在线观看| 成人自拍在线| 爱爱爱视频网站| 蜜臀av性久久久久蜜臀aⅴ| 日本xxx在线播放| 性欧美大战久久久久久久久| 99国产精品久久久久久久成人 | 久久久久久激情| 欧美一区二区三区四区五区| 日本在线观看| 国产美女久久精品香蕉69| 亚洲尤物av| 男人操女人免费软件| 暴力调教一区二区三区| 久久久久久激情| 日韩精品一区二区三区中文不卡 | 全球成人中文在线| 欧美调教在线| 少妇高潮喷水在线观看| 岛国精品在线播放| 国产精品不卡av| 精品国产乱码久久久久久蜜臀| 久草在线视频网站| 国产福利久久| 亚洲精品欧洲| 日本黄色录像片| 精品女同一区二区三区在线播放| 日本黄视频在线观看| 久久久久久国产精品美女| 伊人精品综合| www在线观看免费| 91视频在线看| 中文字幕在线天堂| 国产一区二区久久精品| 福利视频亚洲| av电影一区二区三区| 国产精品综合久久| 麻豆亚洲av成人无码久久精品| 日韩精品一区二区三区在线观看| 超黄网站在线观看| 久久精品日产第一区二区三区精品版 | 久久久久久久久久久亚洲| 精品国内亚洲2022精品成人| 九色自拍视频在线观看| 久久天堂av综合合色蜜桃网| 蜜臀99久久精品久久久久小说| 一个人www欧美| 国产精品99久久免费| 人妻无码一区二区三区四区| 成人午夜av电影| 久久精品视频5| 日韩在线观看免费网站| 欧美国产亚洲精品| www在线观看免费| 中文av一区特黄| 亚洲av无码国产综合专区| 51午夜精品视频| 日本电影一区二区| 国产探花一区二区三区| 精品日本美女福利在线观看| av电影在线观看| 国产精品久久精品国产| 日日摸夜夜添夜夜添国产精品| 看黄色录像一级片| 亚洲白虎美女被爆操| 成年美女黄网站色大片不卡| 正在播放久久| 99re亚洲国产精品| 亚洲综合免费视频| 欧美激情一区二区久久久| 精品国产一区二区三区四区| 久久aaaa片一区二区| 色欧美乱欧美15图片| 尤物视频在线看| 水蜜桃亚洲精品| 成人av网站在线观看免费| 中文永久免费观看| 久久久亚洲欧洲日产国码aⅴ| 欧美日韩一区二区综合| 欧美激情 亚洲| 欧美日韩久久久久久| 亚洲精品88| 蜜臀av色欲a片无码精品一区|