STM32F411RE 在16M(内部时钟)下的软件延时
软件延时有优点也有缺点,需要的可以参考一下。
CPU:STM32F411RE
内部16M时钟
测试方法:
while (1)
{
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_10);
delaynms(1000);//这里用各种延时函数代替
}
延时的高低电平时间也包括
HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_10);
语句执行的时间。
均用示波器测得。
void delay1us()//1.04us
{
int i=0;
for(i=0;i<1;i++);
}
void delay2us()//2.08us
{
int i=0;
for(i=0;i<4;i++);
}
void delay5us()//5.2us
{
int i=0;
for(i=0;i<16;i++);
}
void delay10us()//10.15us
{
int i=0;
for(i=0;i<35;i++);
}
void delay30us()//30us
{
int i=0;
for(i=0;i<112;i++);
}
void delay100us()//100us
{
int i=0;
for(i=0;i<380;i++);
}
void delay300us()//300us
{
int i=0;
for(i=0;i<1145;i++);
}
void delay500us()//500us
{
int i=0;
for(i=0;i<1912;i++);
}
void delay1ms()//1ms
{
int i=0;
for(i=0;i<3832;i++);
}
void delaynms(int n)
{
int j=0;
for(j=0;j<n;j++)
delay1ms();
}