1:while循環(huán) 做延時(shí)的時(shí)候, 感覺被優(yōu)化了 ,幾個(gè)i-- ,IO口翻轉(zhuǎn)不會(huì)有時(shí)間的變化。
2:IO口用函數(shù) GPIO_SetBits GPIO_ResetBits 翻轉(zhuǎn), 沒有其他干擾最快也就是180ns 。 就是慢太多了。
之前記得 延時(shí)是增加一個(gè) 定義,防止優(yōu)化 還是放倒ram里邊來執(zhí)行。
我就奇怪了 怎么可能這玩意連這樣做不到。
1:while循環(huán) 做延時(shí)的時(shí)候, 感覺被優(yōu)化了 ,幾個(gè)i-- ,IO口翻轉(zhuǎn)不會(huì)有時(shí)間的變化。
2:IO口用函數(shù) GPIO_SetBits GPIO_ResetBits 翻轉(zhuǎn), 沒有其他干擾最快也就是180ns 。 就是慢太多了。
之前記得 延時(shí)是增加一個(gè) 定義,防止優(yōu)化 還是放倒ram里邊來執(zhí)行。
我就奇怪了 怎么可能這玩意連這樣做不到。
您好,為防止優(yōu)化,可在變量前面加volatile防止優(yōu)化。關(guān)于GPIO翻轉(zhuǎn)速度,可直接寄存器操作試一下。
1:您意思是 我操作寄存器才能達(dá)到 幾乎幾十個(gè)ns的翻轉(zhuǎn)?
2:一個(gè)延時(shí)函數(shù) ns的延時(shí)級(jí)別 不被優(yōu)化,應(yīng)該是函數(shù)防止被優(yōu)化吧。
3:那這個(gè)有個(gè)放在ram里邊執(zhí)行怎么操作來著?high code 還是什么來著 ,之前用ch582是在函數(shù)前邊加一個(gè) 定義來著?那個(gè)速度就能做到我要的延遲。
您好,寄存器操作會(huì)提升翻轉(zhuǎn)的速度,此外還跟主頻有關(guān),可將主頻設(shè)置為最大。關(guān)于函數(shù)放在RAM中運(yùn)行,可以參考一下下鏈接:
https://www.cnblogs.com/liaigu/p/17302175.html
?