void Delay(__IO u32 nCount)最簡單的延時函式

teavamc發表於2017-06-25

最開始學習微控制器的時候,無論是51還是STM32等,都會在流水燈等示例中見到延時函式,剛開始我就弄不明白,我今天認真的剖析一下.

首先是函式體

void Delay(__IO u32 nCount)
{ 
for(; nCount != 0; nCount--); 
 } 

首先根據C語言的規範可以知道這是一個沒有返回值的帶形式引數的函式.

C語言中的函式使用規範如下:

return_type function_name( parameter list )
{
   body of the function
}


所以可以知道第一個是:函式返回的資料型別

第二個是:函式名

第三個是:引數

第四個是:函式主體

所以再來看這個延時函式就比較容易理解了:

void Delay(__IO u32 nCount)
{ 
for(; nCount != 0; nCount--); 
 } 

這個延時函式沒有返回值,函式名稱是Delay,同時函式的引數部分中的_IO是型別修飾符;u32是資料型別,同等於uint_32_t同等於unsigned int型

函式的主體是for迴圈遞減,大致的意思是32位的非負int型資料nCount一直遞減,遞減到0,就產生了一個不太精確的延時函式.

其中_IO u32可以看作一個資料型別;具體可以在相關MCU標頭檔案,例如"stm32f10x.h"中檢視定義.大致等同32位無符號int型別

使用的時候若

void Delay(5000)
則就是5000自減到0為止





相關文章