在做模擬I2C的時候,需要用到軟件延時,不知道W801有沒有類似STM32的_nop操作實現方便的軟件延時
有nop
#include "wm_hal.h"
#include "assert.h"
//160MZH 53個nop就是1us
//240Mhz 80個nop就是1us
//可以實現1ms以下的延時,多了的 就不要用了。不準。
//5u以下的延時會存在誤差 注意。
static void Delay_Us(uint8_t freq,uint32_t time)
{
uint32_t i;
uint16_t num = 90;
if(time > 1000)
{
printf("delay time is too lager than 1000, please use HAL_Delay()\r\n");
}
switch(freq)
{
case 240: num = 80;break;
case 160: num = 53;break;
default: printf("delay input freq err...default set 240MHZ us time \r\n ");break;
}
for (i = 0; i < (num)*time; i++)
{
__NOP();
}
}