启用系统定时器接口,定时器精度有误

发布于 2025-09-09 17:23:35

MCU 主频设置到240Mhz, 启用定时器,设置1us定时间隔(实际需要到100ns级别),控制IO口,测量输出信号周期,方波信号周期为20us,离实际想要的精度差很多,请问怎么设置,才能到1us级别
8298decc55305d0dc870f13d8b33a75.png

查看更多

关注者
0
被浏览
115
2 个回答
abcd
abcd 认证专家 3天前
我只是个路过的老年人~

不建议设置定于5us的定时值,中断的跳转以及中断函数的执行,本身也会占用时间,会导致结果和预期不符。ns级别的延时只能自己用延时或者空指令来调整实现。另外IO控制如果直接调用GPIO的接口也会导致延时增大,接口本身执行都已经超过延时时间了,可以考虑直接操作寄存器地址来控制IO

isme
isme 认证专家 2天前
冰镇大西瓜

GPIO翻转慢问题,封装一个函数,通过bitband直接操作寄存器。

static void user_bitband_write(enum tls_io_name io, u8 val)
{
    if(io > WM_IO_PA_15){
        tls_bitband_write(HR_GPIOB_DATA, io - 16, val);
    }
    else{
        tls_bitband_write(HR_GPIOA_DATA, io, val);
    }
}

ns延时问题,通过NOP指令,让CPU死等。

static void delay_ns(void)
{
    uint32_t i;
    for (i = 0; i < 13; i++)
    {
        __NOP();
    }
}

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览