0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

F103程序移植到F407的經(jīng)驗小結(jié)

撞上電子 ? 2023-05-18 10:22 ? 次閱讀

1.部分外設(shè)及GPIO口對應(yīng)的時鐘改變

因此各GPIO的時鐘使能函數(shù)和時鐘名稱均發(fā)生改變。

0f789ad0-f50f-11ed-ba01-dac502259ad0.png

0f95e630-f50f-11ed-ba01-dac502259ad0.png

2.GPIO口的模式發(fā)生改變

F1的GPIO口只有8種模式;而F4在輸出時亦可設(shè)置上拉和下拉,因此F4可以有12種模式。并且F4的GPIO口的輸入/輸出/復用/模擬、推挽/開漏、上拉/下拉 都需要單獨設(shè)置。除此之外,因為F4用的是AHB時鐘,其最大輸出速率可達到100MHz以上。

0fbd547c-f50f-11ed-ba01-dac502259ad0.png

0fdeacd0-f50f-11ed-ba01-dac502259ad0.png

100702b6-f50f-11ed-ba01-dac502259ad0.png

10269572-f50f-11ed-ba01-dac502259ad0.png

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<

2)在編譯器中,Options for Target’XXX’—>C/C+±—>Define中加入以下語句:

__FPU_PRESENT=1,__FPU_USED =1

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 時鐘
    +關(guān)注

    關(guān)注

    10

    文章

    1716

    瀏覽量

    131286
  • GPIO
    +關(guān)注

    關(guān)注

    16

    文章

    1189

    瀏覽量

    51846
收藏 人收藏

    評論

    相關(guān)推薦

    【GD32 MCU 移植教程】9、從 STM32F10x 系列移植 GD32F30x 系列

    對比、外設(shè)及性能對比以及從 STM32F10x 移植 GD32F30x 的移植步驟,旨在讓開發(fā)者能夠快速從STM32
    的頭像 發(fā)表于 09-07 09:57 ?470次閱讀
    【GD32 MCU <b class='flag-5'>移植</b>教程】9、從 STM32<b class='flag-5'>F</b>10x 系列<b class='flag-5'>移植</b><b class='flag-5'>到</b> GD32<b class='flag-5'>F</b>30x 系列

    【GD32 MCU 移植教程】8、從 STM32F4xx 系列移植 GD32F4xx 系

    、外設(shè)及性能對比以及從 STM32F4xx 移植 GD32F4xx 的移植步驟,旨在讓開發(fā)者能夠快速從STM32
    的頭像 發(fā)表于 09-06 09:40 ?903次閱讀
    【GD32 MCU <b class='flag-5'>移植</b>教程】8、從 STM32<b class='flag-5'>F</b>4xx 系列<b class='flag-5'>移植</b><b class='flag-5'>到</b> GD32<b class='flag-5'>F</b>4xx 系

    【GD32 MCU 移植教程】7、從 GD32F10x 移植 GD32E103

    本應(yīng)用筆記旨在幫助您快速將基于 GD32F10x 2.0 版本及以上固件庫開發(fā)的應(yīng)用程序從GD32F10x 系列微控制器移植 GD32E
    的頭像 發(fā)表于 09-05 09:40 ?390次閱讀
    【GD32 MCU <b class='flag-5'>移植</b>教程】7、從 GD32<b class='flag-5'>F</b>10x <b class='flag-5'>移植</b><b class='flag-5'>到</b> GD32E<b class='flag-5'>103</b>

    【GD32 MCU 移植教程】2、從 GD32F303 移植 GD32F503

    GD32E503 系列是 GD 推出的 Cortex_M33 系列產(chǎn)品,該系列資源上與 GD32F303 兼容度非常高,本應(yīng)用筆記旨在幫助您快速將應(yīng)用程序從 GD32F303 系列微控制器移植
    的頭像 發(fā)表于 08-31 09:36 ?1312次閱讀
    【GD32 MCU <b class='flag-5'>移植</b>教程】2、從 GD32<b class='flag-5'>F</b>303 <b class='flag-5'>移植</b><b class='flag-5'>到</b> GD32<b class='flag-5'>F</b>503

    STM32F103xC,STM32F103xD,STM32F103xE中文資料

    電子發(fā)燒友網(wǎng)站提供《STM32F103xC,STM32F103xD,STM32F103xE中文資料.pdf》資料免費下載
    發(fā)表于 06-17 14:12 ?1次下載

    如何實現(xiàn)以太網(wǎng)功能的,是用F107或F407芯片自己移植Lwip還是采用SPI轉(zhuǎn)以太網(wǎng)模塊?

    一般大家是如何實現(xiàn)以太網(wǎng)功能的,是用F107或F407芯片自己移植Lwip還是采用SPI轉(zhuǎn)以太網(wǎng)模塊?
    發(fā)表于 05-17 06:49

    STM32F407移植LWIP協(xié)議??偸沁M入硬件中斷的原因?

    f407移植LWIP協(xié)議棧 一這個地方就進入硬件中斷 請問是我的指針沒初始化好嗎?還是其他原因?? /* entry point to the LwIP stack */ err = netif->input(p,
    發(fā)表于 05-16 07:59

    stm32f401與stm32f407在工程配置與代碼上有什么區(qū)別?

    方便容易,但很奇怪現(xiàn)在調(diào)試一直不通,使用最基本的高低電平以及串口測試程序都不通,不通指的是:能夠通過flash loader v2.8正常下載代碼進去,但是不能跑。想問在工程配置以及代碼上f407
    發(fā)表于 05-09 06:01

    把STM32F407程序移植STM32F103的芯片上面,需要修改哪些內(nèi)容?

    把STM32F407程序移植STM32F103的芯片上面,需要修改哪些內(nèi)容?
    發(fā)表于 04-10 07:38

    17個原理圖畫圖技巧要知道

    圓圈中可放置0R電阻,使用F103時,把0R焊上,電容不焊。使用F407時,把電容焊上,0R不焊。 當然,也可以預留其它電路,要舉一反三。
    的頭像 發(fā)表于 03-26 09:48 ?1495次閱讀
    17個原理圖畫圖技巧要知道

    STM32F407配置DMA TIM PWM一直無法生效的原因?

    使用HAL庫配置 TIM 輸出DMA PWM ,幾乎差不多的 代碼,F103可以啟動,但F407無法啟動。可否有例程可以參考,感覺資料太少了。 if (HAL_TIM_PWM_Init
    發(fā)表于 03-21 06:07

    STM32F103VE搭建的PWM輸入捕獲功能,移植STM32F103VD無法捕獲的原因?

    利用STM32F103VE芯片搭建的PWM輸入捕獲功能,移植STM32F103VD的時候,無法捕獲。主要存在的問題:進入不了中斷服務(wù)函數(shù)(利用STM32
    發(fā)表于 03-20 08:21

    STM32F407USB HAL庫的USB In時的數(shù)據(jù)流向是什么?

    最近在學習STM32 F407的USB功能。想要做一個USB聲卡,可以播放,可以錄音。 但是在Host錄音的時候,F407不會發(fā)送數(shù)據(jù)Host。 請問有大佬可以介紹一下F407 US
    發(fā)表于 03-19 06:58

    用Cubemx生成的F103ZET6 USB Audio Device Class的代碼,能正常被枚舉但沒有聲音怎么解決?

    Class的代碼,就可以 用bus hund 抓了cubemx F103ZET6 USB Auduo代碼 發(fā)現(xiàn)只有一個控制端點 對比CubemX 生成的F407 USB Audio代碼 還有一個同步端點, F407 生成的代碼
    發(fā)表于 03-18 06:21

    在GD32F103移植STM32F103代碼

    使用相同F(xiàn)LASH和管腳數(shù)量相同的芯片,例如GDF103C8T6移植STM32F103C8T6程序。雖然兩個款芯片的寄存器地址以及架構(gòu)基本相同。但是需要注意的是GD32
    的頭像 發(fā)表于 12-15 13:37 ?1537次閱讀
    在GD32<b class='flag-5'>F103</b><b class='flag-5'>移植</b>STM32<b class='flag-5'>F103</b>代碼