啟用系統定時器接口,定時器精度有誤

發布於 2025-09-09 17:23:35

MCU 主頻設置到240Mhz, 啟用定時器,設置1us定時間隔(實際需要到100ns級別),控制IO口,測量輸出信號周期,方波信號周期為20us,離實際想要的精度差很多,請問怎麼設置,才能到1us級別
8298decc55305d0dc870f13d8b33a75.png

查看更多

關注者
0
被浏覽
112
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();
    }
}

撰寫答案

請登錄後再發布答案,點擊登錄

發布
問題

分享
好友

手機
浏覽

掃碼手機浏覽