天天看點

IAR FOR STM8精确延時函數

【整理者】61ic.com

【提供者】llz77

【詳細說明】IAR FOR STM8精确延時函數

用的是IAR FOR STM8,有個項目想精确的知道下delay行數的延時時間是多少,上網搜了下竟然沒有,而且發現好些人提問怎麼又這樣的函數,我就用示波器測量做了個精确延時函數,分享給各位朋友吧。(16M晶振)用的時鐘啟動函數是

void ClkInit(void) 
{ 
    CLK_ECKR |=0x1;         //開啟外部時鐘  
    while(!(CLK_ECKR&0x2)); //等待外部時鐘rdy  
    CLK_CKDIVR &= 0xF8;     //CPU無分頻 16M 
    CLK_SWR = 0xB4;         //選擇外部時鐘  
    while(!(CLK_SWCR&0x8)); 
    CLK_SWCR |=0x2;         //使能外部時鐘  
} 
延時函數 
//---  微秒級延時-------------------------- 
void Delayus(void) 
{  
    asm("nop"); //一個asm("nop")函數經過示波器測試代表100ns 
    asm("nop"); 
    asm("nop"); 
    asm("nop");  
} 

//---- 毫秒級延時程式----------------------- 
void Delayms(unsigned int time) 
{ 
    unsigned int i; 
    while(time--)   
    for(i=900;i>0;i--) 
    Delayus();  
} 
           

希望對大家有用