W80X微妙延時實現

發布於 2022-05-22 21:55:03

1、話不多說,上代碼:

#include "wm_hal.h"
#include "assert.h"


//160MZH  53個nop就是1us
//240Mhz  80個nop就是1us
//可以實現870us以下的延時,多了的 就不要用了。不準。
//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();
    }
}

2、示波器測試
1us:
image.png

10us:
image.png

20us:
image.png

100us:
image.png

500us:
image.png

870us:
image.png

1 條評論

發布
問題