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 条评论

发布
问题