1.部分外設及GPIO口對應的時鐘改變
因此各GPIO的時鐘使能函數和時鐘名稱均發生改變。
2.GPIO口的模式發生改變
F1的GPIO口只有8種模式;而F4在輸出時亦可設置上拉和下拉,因此F4可以有12種模式。并且F4的GPIO口的輸入/輸出/復用/模擬、推挽/開漏、上拉/下拉 都需要單獨設置。除此之外,因為F4用的是AHB時鐘,其最大輸出速率可達到100MHz以上。
3.GPIO口對應的寄存器的名稱發生改變
直接編譯的話就會出現這樣的錯誤errorstruct""has no field "CRL",CRL是F1的端口配置低位寄存器,而因為F4中對應的寄存器已經不叫這個名字了(叫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配置有浮點數得硬件運算單元
F1是沒有浮點數得硬件運算單元的,其浮點數運算是采用軟件模擬,因此運算速度會很慢。(1)警告:warning:#1035-D:single-precision operand implicitly converted to double-precision解決方法:1)如果是浮點數值進行運算的話,則在浮點數值后加上f;2)若是變量運算,則將其計算強制轉換
floata,b,c;c=0.1f*8.9f;//浮點數值后加fa=(float)(a*b);//將其運算結果轉換
(2)如何開啟F4的浮點數硬件計算單元
1)打開文件system_stm32f4xx.c——>函數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
-
時鐘
+關注
關注
11文章
1740瀏覽量
131627 -
GPIO
+關注
關注
16文章
1215瀏覽量
52223
發布評論請先 登錄
相關推薦
評論