1.部分外設(shè)及GPIO口對應(yīng)的時鐘改變
因此各GPIO的時鐘使能函數(shù)和時鐘名稱均發(fā)生改變。
2.GPIO口的模式發(fā)生改變
F1的GPIO口只有8種模式;而F4在輸出時亦可設(shè)置上拉和下拉,因此F4可以有12種模式。并且F4的GPIO口的輸入/輸出/復用/模擬、推挽/開漏、上拉/下拉 都需要單獨設(shè)置。除此之外,因為F4用的是AHB時鐘,其最大輸出速率可達到100MHz以上。
3.GPIO口對應(yīng)的寄存器的名稱發(fā)生改變
直接編譯的話就會出現(xiàn)這樣的錯誤errorstruct""has no field "CRL",CRL是F1的端口配置低位寄存器,而因為F4中對應(yīng)的寄存器已經(jīng)不叫這個名字了(叫MODER),因此會報錯。
//舉個栗子//F1#define AMG_SDA_IN() {GPIOB->CRL&=0x0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}//PB7輸入模式#define AMG_SDA_OUT() {GPIOB->CRL&=0x0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}//PB7輸入模式//F4#define AMG_SDA_IN() {GPIOB->MODER&=~(3<<(7*2));GPIOB->MODER|=0<<7*2;} //PB7輸入模式#define?AMG_SDA_OUT()?{GPIOB->MODER&=~(3<<(7*2));GPIOB->MODER|=1<<7*2;}//PB7輸入模式
4.F4配置有浮點數(shù)得硬件運算單元
F1是沒有浮點數(shù)得硬件運算單元的,其浮點數(shù)運算是采用軟件模擬,因此運算速度會很慢。(1)警告:warning:#1035-D:single-precision operand implicitly converted to double-precision解決方法:1)如果是浮點數(shù)值進行運算的話,則在浮點數(shù)值后加上f;2)若是變量運算,則將其計算強制轉(zhuǎn)換
floata,b,c;c=0.1f*8.9f;//浮點數(shù)值后加fa=(float)(a*b);//將其運算結(jié)果轉(zhuǎn)換
(2)如何開啟F4的浮點數(shù)硬件計算單元
1)打開文件system_stm32f4xx.c——>函數(shù)void SystemInit(void)中加入如下代碼:
#if(__FPU_PRESENT==1)&&(__FPU_USED==1) SCB->CPACR|=((3UL<10*2)|(3UL?<11*2));?? ?#endif
2)在編譯器中,Options for Target’XXX’—>C/C+±—>Define中加入以下語句:
__FPU_PRESENT=1,__FPU_USED =1
-
時鐘
+關(guān)注
關(guān)注
10文章
1716瀏覽量
131286 -
GPIO
+關(guān)注
關(guān)注
16文章
1189瀏覽量
51846
發(fā)布評論請先 登錄
相關(guān)推薦
評論