在做模拟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();
}
}