"Finishing" 61ic.com
"Provider" llz77
"Detailed description" IAR for STM8 exact delay function
With the IAR for STM8, there is a project to accurately know the number of delay line delay time is how many, the Internet search under unexpectedly did not, and found that a lot of people ask how such a function, I use oscilloscope measurement to do a precise delay function, to share with you friends. The clock start function (16M crystal oscillator) is
void Clkinit (void)
{
Clk_eckr |=0x1; Open the external clock while
(!) ( clk_eckr&0x2)); Wait for the external clock rdy
CLK_CKDIVR &= 0xf8; CPU No frequency Division 16M
CLK_SWR = 0xb4; Select the external clock while
(!) ( clk_swcr&0x8));
CLK_SWCR |=0x2; Enable external clock
delay function
//--- microsecond delay--------------------------
void Delayus (void)
{
ASM ("NOP"); An ASM ("NOP") function is tested by an oscilloscope to represent
the 100ns asm ("NOP");
ASM ("NOP");
ASM ("NOP");
}
----Millisecond delay program-----------------------
void delayms (unsigned int time)
{
unsigned int i;
while (time--) for
(i=900;i>0;i--)
Delayus ();
}
I hope it works for everyone.