找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2487|回復(fù): 16
收起左側(cè)

STM32F103單片機(jī)從72MHZ降低到24MHZ延時(shí)函數(shù)也要改么?

[復(fù)制鏈接]
ID:313601 發(fā)表于 2022-7-9 14:00 | 顯示全部樓層 |閱讀模式
如何修改?調(diào)整t值大小就行了嗎?
1.png
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2022-7-9 15:13 | 顯示全部樓層
可以調(diào)整t的大小,但是注意并不是按比例縮放,STM32在72MHz有2個(gè)flash latency,在24MHz沒有。
回復(fù)

使用道具 舉報(bào)

ID:313601 發(fā)表于 2022-7-9 19:17 | 顯示全部樓層
Hephaestus 發(fā)表于 2022-7-9 15:13
可以調(diào)整t的大小,但是注意并不是按比例縮放,STM32在72MHz有2個(gè)flash latency,在24MHz沒有。

t怎么調(diào)整?
回復(fù)

使用道具 舉報(bào)

ID:883242 發(fā)表于 2022-7-9 19:39 | 顯示全部樓層

你自己試試唄,延遲后翻轉(zhuǎn)IO口,用示波器頻率計(jì)測試。μs級別的延遲這么寫還可以,也沒有別的方便的方法,如果是ms級的延遲還這么些就顯得太蠢了,用systick。
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2022-7-10 00:01 | 顯示全部樓層
有systick為什么還要這種延時(shí)代碼呢?
回復(fù)

使用道具 舉報(bào)

ID:526108 發(fā)表于 2022-7-10 06:47 | 顯示全部樓層
所以要少用delay函數(shù)
回復(fù)

使用道具 舉報(bào)

ID:1039052 發(fā)表于 2022-7-10 16:33 | 顯示全部樓層
可以修改為使用定時(shí)器中斷
回復(fù)

使用道具 舉報(bào)

ID:313601 發(fā)表于 2022-7-10 19:50 | 顯示全部樓層
Y_G_G 發(fā)表于 2022-7-10 00:01
有systick為什么還要這種延時(shí)代碼呢?

是啊,感覺很不標(biāo)準(zhǔn)。
回復(fù)

使用道具 舉報(bào)

ID:313601 發(fā)表于 2022-7-10 19:50 | 顯示全部樓層
qq624353765 發(fā)表于 2022-7-10 06:47
所以要少用delay函數(shù)

非本人寫的,我也不知道原作者用意。
回復(fù)

使用道具 舉報(bào)

ID:313601 發(fā)表于 2022-7-10 19:51 | 顯示全部樓層
zlc558 發(fā)表于 2022-7-10 16:33
可以修改為使用定時(shí)器中斷

這樣能用么?會(huì)不會(huì)對原來程序有影響~
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2022-7-10 23:05 | 顯示全部樓層
菜鳥機(jī)器 發(fā)表于 2022-7-10 19:50
是啊,感覺很不標(biāo)準(zhǔn)。

這種延時(shí)估計(jì)大多就是那種要求不高的,比如有的SPI沒那么快,就有一個(gè)做做樣子就行的,比如只要延時(shí)1uS
那這代碼就隨便一寫就行,反正大于1uS就行,在SPI只作為器件控制而已,不作為大數(shù)據(jù)傳送的時(shí)候,這種延時(shí)對整個(gè)程序影響又不大
回復(fù)

使用道具 舉報(bào)

ID:313601 發(fā)表于 2022-7-11 04:15 | 顯示全部樓層
Y_G_G 發(fā)表于 2022-7-10 23:05
這種延時(shí)估計(jì)大多就是那種要求不高的,比如有的SPI沒那么快,就有一個(gè)做做樣子就行的,比如只要延時(shí)1uS
那 ...

原來如此。沒錯(cuò)就是SPI通訊延時(shí)。
回復(fù)

使用道具 舉報(bào)

ID:592807 發(fā)表于 2022-7-11 10:47 | 顯示全部樓層

你都用103了,還用這種傻瓜式延時(shí)。隨便抄一個(gè)滴答定時(shí)器也行啊
回復(fù)

使用道具 舉報(bào)

ID:313601 發(fā)表于 2022-7-11 11:38 | 顯示全部樓層
黃youhui 發(fā)表于 2022-7-11 10:47
你都用103了,還用這種傻瓜式延時(shí)。隨便抄一個(gè)滴答定時(shí)器也行啊

非本人寫的,我也不知道原作者用意。所以沒亂改。
回復(fù)

使用道具 舉報(bào)

ID:1039153 發(fā)表于 2022-7-11 16:17 | 顯示全部樓層
用循環(huán)延時(shí),正確的做法是,先按照大概的指令時(shí)間,然后再用示波器微調(diào)
回復(fù)

使用道具 舉報(bào)

ID:313601 發(fā)表于 2022-7-11 19:30 | 顯示全部樓層
caoxinri123 發(fā)表于 2022-7-11 16:17
用循環(huán)延時(shí),正確的做法是,先按照大概的指令時(shí)間,然后再用示波器微調(diào)

為什么要改為循環(huán)延時(shí)呢?不能調(diào)整t值嗎?
回復(fù)

使用道具 舉報(bào)

ID:401564 發(fā)表于 2022-7-11 20:56 | 顯示全部樓層
菜鳥機(jī)器 發(fā)表于 2022-7-11 04:15
原來如此。沒錯(cuò)就是SPI通訊延時(shí)。

你自己掌握好這其中的靈活性和原理就行了,沒有必要糾結(jié)那么多
每個(gè)SPI器件的通訊速度都是不一樣的,有的快有的慢,快的有100多MHZ的,比單片機(jī)的72MHZ還快,像這種壓根就不需要算是
有的卻只有幾MHZ,這種情況就得加延時(shí)了
為了方便的代碼的移植,你可以用滴答時(shí)鐘做一個(gè)延時(shí),使用的時(shí)候,根據(jù)你所用的SPI器件和單片機(jī)的時(shí)鐘來調(diào)整就行
像這種while的延時(shí)就別在STM32上折騰了,還什么示波器來看,還改代碼的,這是開始入門學(xué)單片機(jī)的代碼,知道延時(shí)的原理就行了
滴答時(shí)鐘直接就完事了
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表