久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 關于STM32單片機自己寫delay函數的問題 [打印本頁]

作者: 菜菜的周某人    時間: 2022-5-12 17:00
標題: 關于STM32單片機自己寫delay函數的問題
大佬們,雖然說STM32單片機自帶一個嘀嗒定時器可以實現延遲,但是我現在想在KEIL里寫了一個1s的delay延遲函數,然后我想通過debug界面測試這個函數的執行時間,調整delay函數里的循環變量次數使其接近1s,延遲函數代碼(如圖1),但是現在問題是當我用Debug-Use Simulator調試時(如圖2),程序便進入到systemInit()系統初始化函數里(如圖3),這里是等待時鐘源穩定,后面我將其屏蔽掉(我不知道這么做對不對),程序是可以執行,但是軟件測出來是1s,而燒錄到板子上觀看LED閃爍,時間根本不是1s,閃爍頻率極快,這是為什么呢?
第二個問題是,后面我放棄了使用Debug-Use Simulator調試,而是使用(如圖4)DAP仿真器進行調試,在trace界面設置72Mhz(如圖5),因為F103系列主頻是72Mhz,但是出現一個奇怪的現象,delay函數debug后我測出1次循環是1ms,所以我將循環變量i分別設置為1次、10次、100次、1000次、10000次,理論上應該是1ms、10ms、100ms、1s、10s延時,但是在100次以下時結果正確,當1000次及以上時實際結果只能達到0.7s和7s多(如圖6-15),這個又是什么原因導致的?是我軟件哪里設置錯誤了嗎?希望各位大佬批評指正!

圖片14.png (352.57 KB, 下載次數: 37)

圖片14.png

圖片12.png (349.18 KB, 下載次數: 38)

圖片12.png

圖片13.png (353.16 KB, 下載次數: 45)

圖片13.png

圖1.png (32.72 KB, 下載次數: 41)

圖1.png

圖2.png (104.67 KB, 下載次數: 45)

圖2.png

圖3.png (214.25 KB, 下載次數: 43)

圖3.png

圖4.png (106.6 KB, 下載次數: 51)

圖4.png

圖5.png (92.95 KB, 下載次數: 36)

圖5.png

圖片6.png (338.84 KB, 下載次數: 43)

圖片6.png

圖片7.png (353.11 KB, 下載次數: 44)

圖片7.png

圖片8.png (344.74 KB, 下載次數: 49)

圖片8.png

圖片9.png (346.49 KB, 下載次數: 36)

圖片9.png

圖片10.png (339.89 KB, 下載次數: 51)

圖片10.png

圖片11.png (350.1 KB, 下載次數: 47)

圖片11.png

圖片15.png (352.9 KB, 下載次數: 38)

圖片15.png

作者: xuyaqi    時間: 2022-5-12 18:27
仿真會影響延時,調試可以用讓輸出腳翻轉,邏輯分析儀測試。
作者: zxbzsm    時間: 2022-5-12 18:30
還是用滴答定時器靠譜
作者: 菜菜的周某人    時間: 2022-5-12 19:33
xuyaqi 發表于 2022-5-12 18:27
仿真會影響延時,調試可以用讓輸出腳翻轉,邏輯分析儀測試。

感謝您的回復,我還想問下,如果仿真會影響延時,那是KEIL軟件的問題還是DAP仿真器通信的問題?以及如果這樣說,那豈不是說用Keil軟件debug查看執行時間這一方法根本行不通?或者說我想要得到粗略1s的延遲,除了用定時器外,就沒有其他方法嗎?因為我無法知道我的dealy函數執行時間是多少!
作者: Y_G_G    時間: 2022-5-12 19:53
明明有穩定精確的延時,為什么要自己寫呢?
哪怕是8051,1秒鐘延時也是不會用軟件延時的
有時間折騰這個,還不如玩幾個DIY小東西

作者: Hephaestus    時間: 2022-5-12 20:16
stm32的ms級延遲用systick。
作者: 菜菜的周某人    時間: 2022-5-12 21:28
Y_G_G 發表于 2022-5-12 19:53
明明有穩定精確的延時,為什么要自己寫呢?
哪怕是8051,1秒鐘延時也是不會用軟件延時的
有時間折騰這個,還 ...

感謝您的回復,我不是執著于1s的軟件延時,我只是在想如果軟件debug查看執行時間這一方法不準確,那么寫IC的開發時序圖(比如DS18B20的單總線時序、TFLCD等)的需要延時時,如何確定我的時序正確呢?當然在32內部有嘀嗒定時器可準確延遲,那么其他MCU呢,其他MCU可沒有嘀嗒定時器。
作者: Y_G_G    時間: 2022-5-12 22:00
菜菜的周某人 發表于 2022-5-12 21:28
感謝您的回復,我不是執著于1s的軟件延時,我只是在想如果軟件debug查看執行時間這一方法不準確,那么寫I ...

目前為止,我還沒有用過沒有定時器的單片機
對于一個單片機程序,延時時間達1秒的,肯定是不能用軟件延時的,難道你要讓程序什么都不做,就在那干等1秒嗎?
像18b20p 這種需要那么長時間的時序,肯定是要通標志位或者全局變量來處理時序的嘛
如果非得執著于軟件延時1秒,那仿真肯定不行,就像說的一樣,STM32有仿真,那別的單片機不一定能仿真
那肯定是示波器了
先隨便寫一個延時函數,大概是1mS左右,然后用示波器看一下這1mS的真正延時,不斷的調整,直到最接近1mS然后把這個延時循環放到另一個循環中,參數調用就行了

假設,我已經調節好了一個1mS延時,它是這樣的
i = 32;
j = 40;
do
{
        while (--j);
}         while (--i);

那就把這循環放到另一個循環中,做成一個函數就可以了,
這樣的函數調用參數會用到一定的時間,整個延時的時間可能會有誤差,再通過微調就差不多了

void Delay_ms(unsigned int a)               
{
        unsigned char i, j;
        for(a;a>0;a--)
            {
                i = 32;
                j = 40;
                do
                {
                        while (--j);
                }         while (--i);
          }
}


作者: 菜菜的周某人    時間: 2022-5-12 22:03
Y_G_G 發表于 2022-5-12 22:00
目前為止,我還沒有用過沒有定時器的單片機
對于一個單片機程序,延時時間達1秒的,肯定是不能用軟件延時的 ...

感謝您的回復!
作者: Hephaestus    時間: 2022-5-12 22:46
delay_1ms()里面
u16 j,k要加volatile屬性。
作者: munuc_w    時間: 2022-5-13 16:08
軟件延時受程序執行情況及中斷的影響,是不準的。
作者: yzwzfyz    時間: 2022-5-14 16:59
1、程序最終會被編譯成運行代碼,也是匯編程序。
2、在非流水取指的系統中(如51系統),每條指令運行的時間是固定的,是可以事先計算出運行的總時間的。所以仿真器算出來比較準。
3、32系統是指令流水結構,當你執行當前指令時,下條指令就已被取出了,這樣速度快。但前提是必須知道下條指令放在哪里。所以遇到跳轉指令就不好流水了。也就是說,同樣的批令,如果流水執行就快,不流水就慢,如果仿真器無法識別下條指令是不是流水執行,自然就算不準了。
4、1ms的子程序,調用1000次,不會是1S。因為每次調用要判斷是否結束了,會多運行:調用指令1000次、判斷指令1000次。而這些指令也是要占用時間的。

作者: 菜菜的周某人    時間: 2022-5-16 17:12
yzwzfyz 發表于 2022-5-14 16:59
1、程序最終會被編譯成運行代碼,也是匯編程序。
2、在非流水取指的系統中(如51系統),每條指令運行的時 ...

感謝您的回復!
作者: 菜菜的周某人    時間: 2022-5-16 17:12
munuc_w 發表于 2022-5-13 16:08
軟件延時受程序執行情況及中斷的影響,是不準的。

感謝您的回復!




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 美国黄色一级片 | 国产精品一区二区三区免费观看 | 欧美在线 | 亚洲精品成人 | 欧美日韩精品久久久免费观看 | 天天艹| 亚洲乱码一区二区三区在线观看 | 国产精品成人在线播放 | 性天堂网| 国产精品久久久久久久久久久久久久 | 国产一区不卡 | 一区二区中文字幕 | 国产精品久久 | 久久久91| av日韩在线播放 | 一区二区三区播放 | 在线一区 | 欧美亚州 | 狠狠热视频 | 国产高清免费 | 国产精品免费观看 | 国产在线精品区 | 午夜在线影院 | 奇米视频777 | 午夜精品导航 | 欧美精品一区二区三区在线 | 亚洲精品久久久一区二区三区 | 精品国产不卡一区二区三区 | 91一区二区三区 | 亚洲成人中文字幕 | 天堂亚洲| 欧美一区二区视频 | 欧美精品中文字幕久久二区 | 欧美一级在线观看 | 欧洲妇女成人淫片aaa视频 | 国产成人免费观看 | 精品自拍视频在线观看 | 毛片免费观看 | 国内精品伊人久久久久网站 | 亚洲精品免费在线观看 | 99久久99 |