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
賺錢方法
主站蜘蛛池模板: 久久人与动人物A级毛片| 亚洲一区无码在线| 黄片一区二区三区| 亚洲日韩久久综合中文字幕| 欧美精品在线视频观看| 国产一区二区三区在线无码| 日本成人精品视频| 呦视频在线一区二区三区| 日韩欧美中文字幕一本| 亚洲高清在线天堂精品| 亚洲精品另类| 国产精品无码影视久久久久久久| 欧美高清国产| 国产精品香蕉在线| 国产午夜精品一区二区三| 亚洲一区免费看| 亚洲综合18p| AV片亚洲国产男人的天堂| 天堂va亚洲va欧美va国产 | 亚洲视频免| 99人妻碰碰碰久久久久禁片| 国产黄网永久免费| 久久国产高清视频| 99精品久久精品| 亚洲最新在线| 亚洲男人的天堂在线| 四虎影视无码永久免费观看| 丁香婷婷激情综合激情| 亚洲欧美日韩色图| 午夜视频免费一区二区在线看| 亚洲欧美精品一中文字幕| 国产swag在线观看| 亚洲综合专区| 激情五月婷婷综合网| 国产经典免费播放视频| 久久99精品国产麻豆宅宅| 亚洲精品不卡午夜精品| 久久久久人妻一区精品色奶水| 蜜臀av性久久久久蜜臀aⅴ麻豆| 美女高潮全身流白浆福利区| 亚洲男人的天堂久久精品| 久久无码av三级| 1级黄色毛片| 亚洲中文精品久久久久久不卡| 激情视频综合网| 精品国产美女福到在线直播| 亚洲大尺码专区影院| 国产男女XX00免费观看| 国产午夜福利亚洲第一| 一区二区三区国产精品视频| 亚洲美女一区| 中文成人在线| 亚洲精品国产乱码不卡| 久久综合一个色综合网| 制服无码网站| 亚洲综合片| 久久精品亚洲专区| a级毛片免费网站| 成人在线亚洲| 精品国产www| 看你懂的巨臀中文字幕一区二区| 中文字幕首页系列人妻| 亚洲第一精品福利| 亚洲日韩国产精品综合在线观看| 91毛片网| 午夜不卡视频| 国产自在线拍| 免费播放毛片| 欧美日韩国产系列在线观看| 久久国产精品波多野结衣| 欧美日韩午夜视频在线观看| 免费无码网站| 久久黄色影院| 色婷婷色丁香| 无码区日韩专区免费系列| 日韩欧美91| 久久精品国产亚洲麻豆| 1级黄色毛片| 国产在线精品美女观看| 日韩欧美国产精品| 亚洲欧洲天堂色AV| 国产欧美日韩在线一区|