1.部分外設(shè)及GPIO口對應(yīng)的時(shí)鐘改變
因此各GPIO的時(shí)鐘使能函數(shù)和時(shí)鐘名稱均發(fā)生改變。


2.GPIO口的模式發(fā)生改變
F1的GPIO口只有8種模式;而F4在輸出時(shí)亦可設(shè)置上拉和下拉,因此F4可以有12種模式。并且F4的GPIO口的輸入/輸出/復(fù)用/模擬、推挽/開漏、上拉/下拉 都需要單獨(dú)設(shè)置。除此之外,因?yàn)镕4用的是AHB時(shí)鐘,其最大輸出速率可達(dá)到100MHz以上。




3.GPIO口對應(yīng)的寄存器的名稱發(fā)生改變
直接編譯的話就會(huì)出現(xiàn)這樣的錯(cuò)誤errorstruct""has no field "CRL",CRL是F1的端口配置低位寄存器,而因?yàn)镕4中對應(yīng)的寄存器已經(jīng)不叫這個(gè)名字了(叫MODER),因此會(huì)報(bào)錯(cuò)。
//舉個(gè)栗子//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配置有浮點(diǎn)數(shù)得硬件運(yùn)算單元
F1是沒有浮點(diǎn)數(shù)得硬件運(yùn)算單元的,其浮點(diǎn)數(shù)運(yùn)算是采用軟件模擬,因此運(yùn)算速度會(huì)很慢。(1)警告:warning:#1035-D:single-precision operand implicitly converted to double-precision解決方法:1)如果是浮點(diǎn)數(shù)值進(jìn)行運(yùn)算的話,則在浮點(diǎn)數(shù)值后加上f;2)若是變量運(yùn)算,則將其計(jì)算強(qiáng)制轉(zhuǎn)換
floata,b,c;c=0.1f*8.9f;//浮點(diǎn)數(shù)值后加fa=(float)(a*b);//將其運(yùn)算結(jié)果轉(zhuǎn)換
(2)如何開啟F4的浮點(diǎn)數(shù)硬件計(jì)算單元
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
-
時(shí)鐘
+關(guān)注
關(guān)注
11文章
1971瀏覽量
135000 -
GPIO
+關(guān)注
關(guān)注
16文章
1328瀏覽量
56231
發(fā)布評論請先 登錄
CPPDEFINES = [\'STM32F103xB\']如何選擇?
GD32F103RCT6移植qboot,燒錄之后系統(tǒng)卡死怎么解決?
MH32F103A系列單片機(jī)的功能特性
在STM32F103c8上做DLQR最優(yōu)控制算法的C編程資料
MH32F103A系列單片機(jī)產(chǎn)品概述
極海APM32F407 uc/os3學(xué)習(xí)筆記之任務(wù)管理介紹
STM32F103x8 STM32F103xB單片機(jī)數(shù)據(jù)手冊
如何在APM32F407開發(fā)板上應(yīng)用uC/OS-III實(shí)時(shí)操作系統(tǒng)
F103程序移植到F407的經(jīng)驗(yàn)小結(jié)
評論