irc使能16m,不分頻。
io設定為推挽高速輸出。
while(1)死迴圈翻轉。
反思是有一層函式呼叫的原因,沒有及時翻轉。
把函式去掉直接操作。
反思通過結構體訪問暫存器,使用的是間接定址,消耗了時間。
直接對硬體位址操作。
反思為什麼是高電平比低電平多,是置高然後迴圈跳轉回去指令耗時了。跳轉指令有沒有辦法精簡。
改迴圈語句。
這三種迴圈彙編跳轉都是jra,所以沒有達到提速的效果。嘗試失敗。
反思是跳轉耽誤了時間,那盡可能的翻轉,少跳轉。
用空間換速度,多重複幾次翻轉,然後才迴圈。
反思那足夠多的重複指令,然後才接一次迴圈,就可以無限接近於沒有跳轉的效果。
嘗試的結果是不會。當重複到一定次數,rom儲存空間存在跨頁,跳轉的時候會編譯變長跳轉,長跳轉的指令週期比當前跳轉機器周期長。
如果只是使用io翻轉,最大的速度只能到這麼多了。
反思如果是有程式參與導致翻轉速度受指令限制,那麼硬體自己反應,應該比這個快。
使用pwm翻轉。
反思是比較器比較的時候消耗了時間。
結論,io最大的翻轉速度是訪問硬體位址直接操作io。
stm32 史上最詳細的8種IO口模式
4種輸入模式 4種輸出模式 帶上拉或者下拉 浮空輸入 推挽輸出 上拉輸入 復用式推挽輸出 下拉輸入 開漏輸出 模擬輸入 復用式開漏輸出 浮空輸入模式下,i o埠的電平訊號直接進入輸入資料暫存器。mcu直接讀取i o口電平,i o的電平狀態是不確定的,完全由外部輸入決定 如果在該引腳懸空 在無訊號輸入...
stm8s和stm8l低功耗對比
在低功耗應用中,一般來說mcu是常態halt模式,然後偶爾被喚醒 外部中斷或者內部定時喚醒 進入執行模式。所以對比低功耗效能,一般來說只需要對比run模式和halt下的功耗即可,因為專案選用的是通過內部定時器喚醒,所以選用active halt mode。以下是stm8s003和stm8l151在這...
STM8 開發備忘
前段時間寫了一點stm8的 現在總結一下。iar 指的是iar embedded workbench。又稱為ewstm8。我是用的是ewstm8 2105 autorun.exe。破解後會報乙個庫載入失敗。沒有關係可以繼續用。1.檢視晶元型號 專案右鍵 選項 目標,我的是stm8l151g6。可以根...