HC32F460 FPU使用
HC32F460 FPU使用
- 前言
- 一、FPU是什么?
- 二、使用步驟
- 1.引入庫(kù)
- 2.開(kāi)啟浮點(diǎn)運(yùn)算單元
- 3.添加宏定義
- 4.SystemInit 添加代碼.
- 5.使用FPU優(yōu)化
 
- 存在問(wèn)題
- 總結(jié)
- 鳴謝參考
 
前言
FPU的使用,可以提高浮點(diǎn)運(yùn)算的效率,大大縮短計(jì)算時(shí)間的情況下,保證的計(jì)算精度。
一、FPU是什么?
FPU是專門用于浮點(diǎn)計(jì)算的單元。根據(jù)IEEE的浮點(diǎn)標(biāo)準(zhǔn)原本通用CPU需要3~4個(gè)周期的計(jì)算時(shí)間現(xiàn)在只需要一個(gè)FPU指令就行。在觸摸屏,數(shù)學(xué)函數(shù)運(yùn)算時(shí)特別有用。
二、使用步驟
1.引入庫(kù)
- arm_cortexM4f_math.lib(DSP)
2.開(kāi)啟浮點(diǎn)運(yùn)算單元
3.添加宏定義
ARM_MATH_CM4,__TARGET_FPU_VFP,__FPU_PRESENT
 
4.SystemInit 添加代碼.
system_hc32f460keua.c 的系統(tǒng)初始化函數(shù) SystemInit 添加這段代碼.
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)SCB->CPACR |= ((3UL << 20) | (3UL << 22)); /* set CP10 and CP11 Full Access */ #endifCPACR寄存器
浮點(diǎn)寄存器包括SCB中的CPACR(協(xié)處理器訪問(wèn)控制寄存器)、浮點(diǎn)寄存器組、浮點(diǎn)狀態(tài)和控制寄存器FPSCR、用于浮點(diǎn)運(yùn)算和控制的其他寄存器。對(duì)于FPU使能和關(guān)閉,CPACR寄存器位于0xE000ED88處,可通過(guò)CMSIS-core中的SCB->CPACR來(lái)訪問(wèn)。
 寄存器
 芯片復(fù)位后,CP10和CP11 四個(gè)位默認(rèn)為0,FPU是關(guān)閉的,此時(shí)禁止訪問(wèn)協(xié)處理器(禁止了硬件FPU)。將這四個(gè)位設(shè)置為1,即可完全訪問(wèn)協(xié)處理器,從而開(kāi)啟硬件FPU功能。一般該操作是在SystemInit()函數(shù)內(nèi)執(zhí)行
5.使用FPU優(yōu)化
浮點(diǎn)常數(shù)加f 2500.0f
 
FPU,編譯器默認(rèn)開(kāi)啟FPU,double型變量計(jì)算速度有所下降。
 2500.0默認(rèn)是double型變量,2500.0f為float型變量。
 計(jì)算速度在某些情況下比double快幾倍,大概5倍左右,如果對(duì)精度要求不是很高可以采用float。
存在問(wèn)題
導(dǎo)致串口波特率初始化失敗!!
總結(jié)
以上就是今天要講的內(nèi)容,本文僅僅簡(jiǎn)單介紹了FPU的使用,而FPU提供了大量能使我們快速便捷地處理數(shù)據(jù)的函數(shù)和方法。
鳴謝參考
http://www.51hei.com/bbs/dpj-218361-1.html
 https://blog.csdn.net/cypressxt926/article/details/113633988
 https://blog.csdn.net/hemeinvyiqiluoben/article/details/81428518
 
總結(jié)
以上是生活随笔為你收集整理的HC32F460 FPU使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
 
                            
                        - 上一篇: uniapp打开外部应用如:浏览器、淘宝
- 下一篇: NO.15——使用Appium自动化测试
