⑴ 單片機做乘除法運算與浮點運算相比耗時嗎
是的,對於沒有浮點運算單元FPU的單片機,一般就是採用這種方式來計算。
例如原本要計算的數據是個電壓值,在0~3.3V之間,通過12位采樣之後得到0~4095的采樣值AD_value。按照AD_value*2/5計算之後得到的就是0~1638內的結果,再反向換算為電壓0~1.32V。
⑵ 單片機中,怎麼處理除數為零的問題
單片機中,處理除數為零的問題解決方法如下:
當CCR寄存器的DIV_0_TRP位被配置0時,即使發生除以0操作也不會觸發異常,只有當該位被置1前提下,當發生除以0操作時才觸發異常事件並產生相應中斷。測試代碼很簡單,就是下面截圖中的幾行,簡單的閃燈操作,裡面夾了一句除法操作。SCB->CCR被賦值0x00000210即置位了DIV_0_TRP,當被賦值0x00000200時對其進行清零。經過測試,當我們置位上面CCR寄存器的DIV_0_TRP位,在發生除以0操作時就會進入HardFault中斷,同時被除數的結果【Result】即商變為0.