999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種采用SysTick中斷實現精確延時的方法*

2017-09-03 09:22:44
單片機與嵌入式系統應用 2017年8期
關鍵詞:方法系統

陶 靜

(全球能源互聯網研究院,南京 210003)

一種采用SysTick中斷實現精確延時的方法*

陶 靜

(全球能源互聯網研究院,南京 210003)

在使用STM32微控制器作為處理器的系統中,常采用遞減函數實現延時,該方法適用于一般延時,實現精確延時時誤差較大。本文介紹了一種采用SysTick中斷實現精確延時的方法,該方法能大大提升延時精度。通過實驗驗證,SysTick中斷方式可將1 μs延時的誤差由26%降低至3%。

STM32;延時;SysTick

引 言

STM32是ST(意法半導體)公司發布的一款32位ARM微控制器,該微控制器基于針對高性能、低成本、低功耗的嵌入式應用設計的Cortex-M3內核。隨著STM32在工業控制系統、無線網絡與傳感器等領域廣泛應用,暴露出來的問題也越來越多,其中包含如何實現精確延時。常見的延時方法是調用遞減函數,該方法能實現固定未知時間段的延時,但運用在對延時精度要求高的場合時(例如采用私有協議的高頻通信、高頻數據存儲與解析等),誤差較大。本文提出了一種基于SysTick的延時方式,能夠很好地解決這個問題。

為了更好地說明并驗證效果,本文以實現1 μs的延時為目標,以STM32F207ZGT6最小系統PCB板、Agilent Technologies MS07104B示波器、ST-LINK下載器為硬件環境,Keil μVision4為軟件調試工具,進行程序編寫及調試。

1 遞減實現延時

1.1 方法介紹

在一般對延時精確度要求不高的場合下,例如:以一定的頻率設置GPIO口的電平高低來點亮或熄滅LED燈、產生占空比為50%的PWM波形、隨機延時等,常使用設置一個參數并調用遞減函數的方式來實現延時。使用這種方法時需要按照以下步驟進行:

① 首先定義一個參數delayCount;

② 然后定義一個函數Delay,在該函數中循環執行遞減操作,直到delayCount遞減為0才能跳出循環。

void Delay(__IO uint32_t delayCount){

while(delayCount--)

}

③ 根據運用場景的需要,在函數中調用Delay函數,并給delayCount賦值。

1.2 實驗結果

為了直觀高效地驗證效果,本文采用了通過調用STM32庫函數GPIO_ToggleBits來變換某一引腳電平的方式。在main函數中完成系統及GPIO口初始化后執行以下操作:

while (1){

GPIO_ToggleBits(GPIOD, GPIO_Pin_1);

Delay(0x100);

}

程序編譯成功后通過ST-LINK下載到STM32F207ZGT6中,通過示波器采集到的PD1引腳的波形如圖1所示。

圖1 遞減函數實現未知時間的延時

由圖1可知,占空為比50.2%的PWM波,正脈沖寬度為15.3 μs,負脈沖寬度為15.2 μs(正脈沖比負脈沖多出的0.1 μs是因為PD1引腳被設置為內部STM32F207ZGT6引腳電平拉高所占用時間,可忽略不計)。本例中共執行了0x100(即256)次自減,推算出每次自減耗時為59.375 ns。若在實際應用中需要產生1 μs的延時,需遞減16.84次,取整為17次,則將while (1)中的Delay(0x100)修改為Delay(0x11)。重新編譯程序并下載后,采得的波形如圖2所示。

圖2 遞減函數實現1 μs的延時

由圖2可知,占空比為50.4%的PWM波,正脈沖寬度為1.28 μs,負脈沖寬度為1.26 μs,誤差為26%。

由上述實驗可知,該方法可以適用于未知時間或某一范圍的延時。若需采用該方法實現某一范圍的延時,需具備以下條件:①需要結合示波器或軟件仿真工具測量并計算得出遞減指令執行的時間,再計算所需延時執行遞減函數的次數,在調用函數時,將次數賦值給函數中的參數;②減少計算過程中四舍五入去整的次數,避免累計誤差導致精度出現較大偏差。

2 SysTick實現精確延時

2.1 SysTick實現精確延時的原理

SysTick是Cortex-M3內核自帶的一個24位倒數計時定時器,將SysTick控制及狀態寄存器中的使能位置1后,SysTick會從SysTick_LOAD寄存器中加載計數值并開始遞減,當減為0時重新加載計數值并產生中斷。只要不清除使能位,則不停地執行上述操作。SysTick在STM32F2xx的時鐘樹中有2個來源:AHB時鐘或AHB/8。本文基于STM32F207ZGT6最小系統PCB板進行實驗仿真,硬件中外接的是25 MHz晶振,時鐘配置時采用HSE時鐘源,經PLL倍頻后得到SYSCLK。在main函數中調用RCC_GetClocksFreq(&ClockInfo)函數核實時鐘配置,結果如圖3所示。

圖3 STM32的時鐘配置

可知SYSCLK的頻率為0x0727 0E00(即120 MHz),而AHB分頻為1,則可知AHB時鐘也為120 MHz。當需要實現精確延時,可以按以下步驟實現:

① 先計算出延時期間晶振振蕩的次數,配置SysTick,并將該次數加載到SysTick_LOAD中,配置SysTick的中斷優先級;

② 編寫中斷函數和延時函數;

③ 根據運用場景的需要,在函數中調用延時函數并給延時參數賦值。

2.2 具體實現方法

根據上述原理,當需要實現1 μs的精確延時,需將SysTick計數值配置成120M/106,即每振蕩120次也就是每1 μs進入一次中斷程序。具體函數如下:

voidSysTick_Configuration(void){

if (SysTick_Config(SystemCoreClock / 1000000)) {

while (1);

}

NVIC_SetPriority(SysTick_IRQn, 0x0);

}

SysTick在Cortex-M3中有獨立的中斷程序,在其他應用場景下可完成系統的定時任務,本文中只完成計數值的遞減。具體函數如下:

voidSysTick_Handler(void){

if (delayCount !=0x00)

delayCount --;

}

在main函數中調用精確延時的delay_us函數,同時賦值給nus。只有當dalayCount遞減為0時,才跳出循環。具體函數如下:

void delay_us(u16 nus){

delayCount =nus;

while(delayCount !=0);

}

2.3 實驗結果

本文在main函數中完成系統及GPIO口初始化、SysTick配置后,執行以下操作:

while (1){

GPIO_ToggleBits(GPIOD, GPIO_Pin_1);

delay_us (1);

}

示波器抓取的波形如圖4所示。

圖4 SysTick實現1 μs的延時

由圖4可知,占空比為50.5%的PWM波,正脈沖寬度為0.99 μs,負脈沖寬度為0.97 μs,誤差為3%,延時精度遠高于遞減方式實現的延時,適用于對延時精度要求較高的場合,且此方法與遞減方法相比,不需要預先計算指令執行所需時間,也無需多次計算得出需遞減的數值。

結 語

[1] 廖義奎.Cortex-M3之STM32嵌入式系統設計[M].北京:中國電力出版社,2012.

[2] 丁紅,王懷德.基于Cortex-M3為內核的開發板設計與制作[J].現代電子技術,2012,35(18):19-21.

[3] YIU Joseph.Cortex-M3權威指南[M].宋巖,譯.北京:北京航空航天大學出版社,2009.

[4] ST.RM0033:STM32F205xx,STM32F207xx,STM32F215xx and STM32F217xx advanced ARM-based 32-bit MCUs[EB/OL].[2017-04].http://www.st.com/content/ccc/resource/technical/document/reference_manual/51/f7/f3/06/cd/b6/46/ec/CD00225773.pdf/files/CD00225773.pdf/jcr:content/translations/en.CD00225773.pdf.

[5] 趙一夔.基于ARM Cortex-M3的嵌入式系統設計與實現[D].西安:西安電子科技大學,2010.

[6] Son S,Baek Y.Design and Implementation of Real-Time Vehicular Camera for Driver Assistance and Traffic Congestion Estimation[J].Sensors,2015,15(8):20-31.

[7] 王永虹,徐煒,郝立平.STM32系列ARM Cortex-M3微控制器原理與實踐[M].北京:北京航空航天大學出版社,2008.

[8] 李曉丹.基于STM32的物聯網嵌入式網關的設計[J].計算機工程與應用,2015,51(4):61-65.

[9] 張從鵬,趙康康.基于STM32的串口服務器系統開發[J].儀表技術與傳感器,2016(1):73-75.

[10] 趙祥,周建斌,周靖,等.基于Cortex-M3處理器的時間交替采樣系統的設計[J].儀表技術與傳感器,2015(12):100-102.

[11] 楊振江.基于STM32 ARM處理器的編程技術[M].西安:西安電子科技大學出版社,2016.

[12] 丁力,宋志平,徐萌萌,等.基于STM32的嵌入式測控系統設計[J].中南大學學報:自然科學版,2013(S1):260-265.

陶靜(高級工程師),主要從事電力系統通信技術的研究。

Precise Delay Method Using SysTick Interrupt

Tao Jing

(Global Energy Interconnection Research Institute,Nanjing 210003,China)

The system uses STM32 MCU as the processor,which often uses a decreasing function to generate delay,but this method is only suitable for generating a general delay and not suitable for precise delay.In the paper,a method to realize precise delay by using SysTick interrupt is introduced.This method can greatly improve the precision of delay.Through the experiment,the SysTick interrupt mode can reduce the deviation of 1 μs delay from 26% to 3%.

STM32;delay;SysTick

* 國家電網公司科技項目“面向電力通信多域交互的軟件定義光網絡關鍵技術研究”[SGRIXTKJ[2016]500號]。

TP311

A

?士然

2017-04-12)

猜你喜歡
方法系統
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
學習方法
半沸制皂系統(下)
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
賺錢方法
主站蜘蛛池模板: 国产欧美在线| 久久中文无码精品| 激情影院内射美女| 亚洲国产欧美目韩成人综合| 午夜日本永久乱码免费播放片| 国产精品刺激对白在线 | 精品视频福利| 亚洲成综合人影院在院播放| 欧美精品在线观看视频| 国产高清国内精品福利| 波多野结衣一区二区三区AV| 呦女精品网站| 中文字幕第1页在线播| 亚洲人成网站在线观看播放不卡| 一本二本三本不卡无码| a在线亚洲男人的天堂试看| 国产精品视频猛进猛出| 久久大香香蕉国产免费网站| 欧美伊人色综合久久天天| 玩两个丰满老熟女久久网| 黄色网站在线观看无码| 国产黄色视频综合| 国模沟沟一区二区三区| 亚洲国产综合自在线另类| 国产精品美乳| 国产精品丝袜视频| 久久一日本道色综合久久| 丁香婷婷久久| 在线观看免费黄色网址| 18黑白丝水手服自慰喷水网站| 国产精品永久久久久| 91 九色视频丝袜| 91国内在线观看| 欧洲亚洲欧美国产日本高清| 中文字幕人成人乱码亚洲电影| 99视频有精品视频免费观看| 国产剧情一区二区| 在线精品欧美日韩| 亚洲a级在线观看| 在线无码九区| 国产女人水多毛片18| 中文字幕欧美成人免费| 国产经典三级在线| lhav亚洲精品| 国产在线精品网址你懂的| 国产福利2021最新在线观看| 日本人又色又爽的视频| 亚洲色图在线观看| 亚洲一级色| 67194在线午夜亚洲| 久久免费精品琪琪| 亚洲中文在线看视频一区| 久精品色妇丰满人妻| 男女男免费视频网站国产| 久久久久久久久久国产精品| 亚洲av成人无码网站在线观看| 香蕉色综合| 国产主播一区二区三区| 日韩av无码DVD| 91精品国产自产在线老师啪l| 乱人伦中文视频在线观看免费| 久久久久中文字幕精品视频| 亚洲成人77777| 欧美日韩v| 综合久久五月天| h视频在线观看网站| 亚洲国产清纯| 无码精油按摩潮喷在线播放| www.亚洲一区| 全免费a级毛片免费看不卡| 澳门av无码| 一本一道波多野结衣一区二区| 亚洲第一黄片大全| 另类专区亚洲| 视频二区中文无码| 四虎永久在线精品影院| 久久99这里精品8国产| 中文字幕在线日韩91| 国产精品成人久久| 欧美在线视频不卡| 人人91人人澡人人妻人人爽| 国产精品99久久久久久董美香|