STM 32 F 072の8 Mでのソフトウェア遅延


タイマーを使用して生じる遅延精度は確かに高いが、相対的に面倒であり、ソフトウェア遅延は精度は高くないが、比較的簡単で、使い勝手がよく、精度要求が高くない場合に使用できる.            
    STM 32 F 032 Nucleo開発ボードを使用し、内部8 Mの結晶振動を実現.
    以下の遅延関数はオシロスコープで測定し,精度は1 us未満であった.
//STM32F072RB Nucleo
//      8M    

void delay3us()//3us
{
	int i;
	for(i=0;i<1;i++);
}

void delay10us()//10us
{
	int i;
	for(i=0;i<12;i++);
}

void delay20us()
{
	int i;
	for(i=0;i<28;i++);
}

void delay50us()
{
	int i;
	for(i=0;i<76;i++);
}

void delay200us()
{
	int i;
	for(i=0;i<317;i++);
}

void delay500us()
{
	int i;
	for(i=0;i<796;i++);
}

void delay1ms()
{
	int i;
	for(i=0;i<1590;i++);
}

void delaynms(int n)
{
	int j;
	for(j=0;j<n;j++)
		delay1ms();
}