91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

使用APM32F407替代STM32F407制作的demo

GReq_mcu168 ? 來(lái)源:21ic電子網(wǎng) ? 作者:WuKaiLi ? 2022-05-10 14:37 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

前言

最近一段時(shí)間在玩極海的APM32F407系列的MCU,在研究一段時(shí)間后發(fā)現(xiàn)其資源和意法半導(dǎo)體STM32F407不相上下。通過(guò)對(duì)比兩者的數(shù)據(jù)手冊(cè)和參考手冊(cè),我發(fā)現(xiàn)APM32F407替代STM32F407綽綽有余。我拿出了我吃灰已久的一塊開(kāi)發(fā)板“啟明欣欣 IMT407 V5.1”(淘寶搜索“啟明欣欣”)。預(yù)計(jì)將開(kāi)發(fā)板上的STM32F407芯片替換成APM32F407的芯片,看看會(huì)發(fā)生什么樣的事情。

本文記錄一下我使用APM32F407替代STM32F407制作的一個(gè)小demo(使用SPI外設(shè)讀取W25Q128)。該demo使用原開(kāi)發(fā)板電路,看看將主控?fù)Q成APM32F407后看看能不能做到pin對(duì)pin的完美替代。

本文使用環(huán)境:

硬件

啟明欣欣 IMT407 V5.1(APM32F407ZGT6)

J-link v9.7

IMT 2.8 TFTLCD

USB轉(zhuǎn)TTL

軟件:

MDK-ARM Plus Version: 5.36.0.0

fireTools

固件或例程庫(kù):

1.APM32F4xx_SDK_V1.1

2.啟明欣欣STM32F407(高配版V5.1)學(xué)習(xí)資料(2 各資源學(xué)習(xí)例程標(biāo)準(zhǔn)庫(kù)版本15 SPI_W25Qxx)

參考文檔:

1.APM32F4xxx用戶(hù)手冊(cè) V1.1

2.APM32F405xG 407xExG數(shù)據(jù)手冊(cè) V1.1

3.啟明欣欣407開(kāi)發(fā)板(高配版)V5.1原理圖

4.STM32F4xx中文參考手冊(cè)

5.STM32F407ZGT6數(shù)據(jù)手冊(cè).pdf

先上一下替換芯片后的板子照片(原諒我的渣渣焊工):

2de71d54-d029-11ec-bce3-dac502259ad0.png

1 環(huán)境配置

1.1 APM32F407開(kāi)發(fā)環(huán)境

在極海官網(wǎng)獲取最新的SDK"APM32F4xx_SDK_V1.1",在其目錄下有Pack“Geehy.APM32F4xx_DFP.1.0.1.pack”,安裝完畢后才能使用keil開(kāi)發(fā)APM32F407芯片。

2e02e7e6-d029-11ec-bce3-dac502259ad0.png

1.2 添加APM32F407驅(qū)動(dòng)庫(kù)文件

a.在原工程下添加APM32F407的驅(qū)動(dòng)庫(kù)(本文節(jié)取原開(kāi)發(fā)板例程中的SPI_W25Qxx例程),復(fù)制APM32F4xx_SDK_V1.1下的Library文件夾至工程目錄,改名為APM32F4xx_Library。

2e132cc8-d029-11ec-bce3-dac502259ad0.png

b.在原工程下添加APM32F407的中斷控制函數(shù)文件。將“APM32F4xx_SDK_V1.1ExamplesTemplateTemplateSource”和“APM32F4xx_SDK_V1.1ExamplesTemplateTemplateInclude”下的“apm32f4xx_int.c”和“apm32f4xx_int.h”復(fù)制至工程目錄“Main”下。

2e207a4a-d029-11ec-bce3-dac502259ad0.png

1.3 添加APM32F407工程及目錄

a.在“Project Items”目錄下新增“APM32F407”工程,以便換不同的工程進(jìn)行編輯編譯下載。

b.在“Groups”目錄下新增“APM32F4xx_StdPeriphDriver”與“APM32F4xx_Startup_config”分組。

c.分別在“APM32F4xx_StdPeriphDriver”與“APM32F4xx_Startup_config”分組下添加本次例程使用到的驅(qū)動(dòng)文件。

d.在“Main”分組下添加我們上一節(jié)增加的內(nèi)容“apm32f4xx_int.c”。

2e310b62-d029-11ec-bce3-dac502259ad0.png

2e41a814-d029-11ec-bce3-dac502259ad0.png

2e50deb0-d029-11ec-bce3-dac502259ad0.png

1.4 更改APM32F407工程芯片

將工程“APM32F407”的芯片選型設(shè)置為“APM32F407ZG”。

2e61741e-d029-11ec-bce3-dac502259ad0.png

1.5 設(shè)置編譯選擇

a.設(shè)置不同工程目錄下的編譯選擇,以控制不同的工程下編譯的文件。

2e6f4cf6-d029-11ec-bce3-dac502259ad0.png

“APM32F407”工程去除STM32的編譯文件包含。

2e7f5da8-d029-11ec-bce3-dac502259ad0.png

b.設(shè)置“APM32F407”工程的聲明為“APM32F40X”。

c.增加“APM32F407”工程中APM32F407驅(qū)動(dòng)庫(kù)文件頭文件目錄。

2e8edaa8-d029-11ec-bce3-dac502259ad0.png

2 底層驅(qū)動(dòng)替換

更改代碼,將STM32的驅(qū)動(dòng)函數(shù)替換為APM32的驅(qū)動(dòng)函數(shù),這部分比較繁瑣,需要慢慢替換。可根據(jù)工程所需外設(shè)的驅(qū)動(dòng)進(jìn)行對(duì)照替換。如我們現(xiàn)在的工程主要涉及到的外設(shè)有:misc/gpio/spi/fsmc/usart/rcm??梢酝ㄟ^(guò)查看兩者的參考手冊(cè),查看那些寄存器功能基本一致的對(duì)應(yīng)的庫(kù)函數(shù)的功能也基本一致。

2.1 外設(shè)與庫(kù)函數(shù)對(duì)照

我這里也整理了本次替代過(guò)程中常用外設(shè)的寄存器與庫(kù)函數(shù)的參照,供大家參考。這里截取部分內(nèi)容,更多內(nèi)容請(qǐng)查閱附件(*附件下載鏈接:

https://bbs.21ic.com/forum.php?mod=viewthread&tid=3220654&page=1&extra=)。

2e9e51e0-d029-11ec-bce3-dac502259ad0.png

2eb0deaa-d029-11ec-bce3-dac502259ad0.png

2.2 驅(qū)動(dòng)替換方式

由于前文我們已經(jīng)將“APM32F407”工程的聲明設(shè)置為“APM32F40X”,這里我們僅需將涉及外部功能模塊的源碼文件內(nèi)的驅(qū)動(dòng)進(jìn)行替換。通過(guò)宏定義的方式以支持不同平臺(tái)的文件。

如包含頭文件時(shí):


#ifdef STM32F40_41xxx
/** 原 stm32 接口或外設(shè)驅(qū)動(dòng) */
#include "stm32f4xx.h"
#endif

#ifdef APM32F40X
/** 替換為 apm32 接口或外設(shè)驅(qū)動(dòng) */
#include "apm32f4xx.h"
#include "apm32f4xx_misc.h"
#include "apm32f4xx_spi.h"
#include "apm32f4xx_rcm.h"
#include "apm32f4xx_smc.h"
#include "apm32f4xx_gpio.h"
#include "apm32f4xx_usart.h"
#endif

如替換GPIO外設(shè)驅(qū)動(dòng)時(shí):

#ifdef STM32F40_41xxx
/** 原 stm32 接口或外設(shè)驅(qū)動(dòng) */
GPIO_InitTypeDef GPIO_InitStructure;

RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE); //使能GPIOF時(shí)鐘

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9; //KEY0 KEY1 KEY2 KEY3對(duì)應(yīng)引腳
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; //普通輸入模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz; //100M
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉
GPIO_Init(GPIOF, &GPIO_InitStructure); //初始化GPIOF6,7,8,9
#endif

#ifdef APM32F40X
/** 替換為 apm32 接口或外設(shè)驅(qū)動(dòng) */
GPIO_Config_T GPIO_InitStructure;

RCM_EnableAHB1PeriphClock(RCM_AHB1_PERIPH_GPIOF);

GPIO_InitStructure.pin = GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9;
GPIO_InitStructure.mode = GPIO_MODE_IN;
GPIO_InitStructure.speed = GPIO_SPEED_100MHz;
GPIO_InitStructure.otype = GPIO_OTYPE_PP;
GPIO_InitStructure.pupd = GPIO_PUPD_UP;

GPIO_Config(GPIOF, &GPIO_InitStructure);

#endif

替換過(guò)程較為繁瑣,這里不再一一贅述。具體代碼實(shí)現(xiàn)大家可參考附件源碼。

3 程序下載與仿真

由于我們的已做雙工程處理,在修改底層驅(qū)動(dòng)至APM32F407時(shí)并不影響原工程內(nèi)容,我們可以通過(guò)選擇不同的工程對(duì)目標(biāo)芯片進(jìn)行下載。我這里選擇"APM32F407"工程通過(guò)J-LINK下載我手上的板子。

2ec6c2b0-d029-11ec-bce3-dac502259ad0.png

程序下載過(guò)程中會(huì)提示我們選擇芯片平臺(tái),這里選擇“M4”即可。

2ed291bc-d029-11ec-bce3-dac502259ad0.png

4 最后效果

a.程序開(kāi)始運(yùn)行后,屏幕會(huì)顯示請(qǐng)用戶(hù)發(fā)送數(shù)據(jù)到串口1“Please send data to usart1”,此時(shí)用戶(hù)就要通過(guò)串口助手向開(kāi)發(fā)板發(fā)送數(shù)據(jù),發(fā)送格式為S…….E?!啊?…”為用戶(hù)所需要發(fā)送的數(shù)據(jù),發(fā)送后數(shù)據(jù)存在 receive_str[ ]數(shù)值中并在顯示屏顯示。

2f042ace-d029-11ec-bce3-dac502259ad0.png

b.將接收到的數(shù)據(jù)寫(xiě)入W25Q128,KEY0按下,將串口1接收到的數(shù)據(jù)(receive_str[ ]中數(shù)據(jù))寫(xiě)入25Q128。
c.將寫(xiě)入到W25Q128的數(shù)據(jù)讀出并顯示,KEY1按下,將寫(xiě)入到W25Q128中的數(shù)據(jù)讀出并顯示。

2f15cc70-d029-11ec-bce3-dac502259ad0.png

5 總結(jié)

以上便是本次使用APM32F407替代STM32F407的簡(jiǎn)要過(guò)程。通過(guò)本次替代經(jīng)歷,發(fā)現(xiàn)極海的APM32F407芯片的硬件與軟件環(huán)境對(duì)STM32F407都有著非常優(yōu)秀的替代能力。在原有硬件無(wú)需改動(dòng)的情況下,簡(jiǎn)單的進(jìn)行驅(qū)動(dòng)更換后也能很好運(yùn)行起來(lái)。國(guó)產(chǎn)優(yōu)秀替代者極海也!各位小伙伴可以和我一起討論替代過(guò)程中發(fā)生的趣事~

整個(gè)內(nèi)容較多,個(gè)人能力有限,些許地方可能存在較多問(wèn)題,歡迎大家指出。

聲明

1.本代碼(文檔),僅供學(xué)習(xí)參考。

2.代碼(文檔)參考了網(wǎng)上開(kāi)源的代碼。如涉及貴方版權(quán),請(qǐng)聯(lián)系本人刪除。

審核編輯 :李倩

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

    關(guān)注

    463

    文章

    54002

    瀏覽量

    465786
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4967

    瀏覽量

    73935

原文標(biāo)題:國(guó)產(chǎn)優(yōu)秀替代_APM32F407替代STM32F407記錄

文章出處:【微信號(hào):mcu168,微信公眾號(hào):硬件攻城獅】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    STM32F407的晶振選型分析

    STM32F407的最佳晶振選項(xiàng)
    的頭像 發(fā)表于 11-07 12:03 ?1261次閱讀

    在rt-thread4.0.2版本stm32f407硬件平臺(tái)上,使用reboot命令無(wú)法重啟,會(huì)讓系統(tǒng)死機(jī)的原因?

    我在rt-thread4.0.2版本stm32f407硬件平臺(tái)上,使用reboot命令無(wú)法重啟,會(huì)讓系統(tǒng)死機(jī)。 reboot命令默認(rèn)是調(diào)用rt_hw_cpu_reset()
    發(fā)表于 09-12 06:08

    STM32F407VGT6的完美國(guó)產(chǎn)替代——中科芯CKS32F407VGT6在智能電力網(wǎng)關(guān)的應(yīng)用

    風(fēng)險(xiǎn)。如今,這一局面正被打破,STM32F407VGT6的完美國(guó)產(chǎn)替代——中科芯CKS32F407VGT6在智能電力網(wǎng)關(guān)的應(yīng)用,為這一領(lǐng)域帶來(lái)了新的曙光,開(kāi)啟了國(guó)產(chǎn)芯片在
    的頭像 發(fā)表于 08-25 16:16 ?1049次閱讀
    <b class='flag-5'>STM32F407</b>VGT6的完美國(guó)產(chǎn)<b class='flag-5'>替代</b>——中科芯CKS32<b class='flag-5'>F407</b>VGT6在智能電力網(wǎng)關(guān)的應(yīng)用

    微控制器 STM32F407VG(ST品牌),的pin to pin國(guó)產(chǎn)替代解決方案XHTM32F407VG

    在科技飛速發(fā)展的當(dāng)下,芯片作為智能設(shè)備的“心臟”,其性能直接決定了設(shè)備的優(yōu)劣。XTM32F407VG,這款是32位芯片,以卓越性能、豐富功能和超高穩(wěn)定性,成為眾多開(kāi)發(fā)者與工程師的理想之選,引領(lǐng)著智能
    的頭像 發(fā)表于 08-11 17:59 ?788次閱讀
    微控制器 <b class='flag-5'>STM32F407</b>VG(ST品牌),的pin to pin國(guó)產(chǎn)<b class='flag-5'>替代</b>解決方案XHTM32<b class='flag-5'>F407</b>VG

    STM32F407的IO去驅(qū)動(dòng)5V的外部上拉電阻,請(qǐng)問(wèn)VDD_FT的電壓范圍是多少?

    目前想用STM32F407的IO去驅(qū)動(dòng)5V的外部上拉電阻,看手冊(cè)5V容忍的VDD_FT且有保護(hù)二極管。 請(qǐng)問(wèn)VDD_FT的電壓范圍是多少? 開(kāi)漏輸出時(shí),PA8口的上拉電阻能否輸出5V? 謝謝!
    發(fā)表于 07-10 06:03

    極海APM32F407 uc/os3學(xué)習(xí)筆記之任務(wù)管理介紹

    最近了解了uc/os3這個(gè)操作系統(tǒng),上篇介紹了uc/os3如何正確移植到APM32F407開(kāi)發(fā)板上,根據(jù)我最近學(xué)到的一些知識(shí),這篇文章主要介紹一下uc/os3中的一些簡(jiǎn)單的任務(wù)管理API以及如何使用。
    的頭像 發(fā)表于 05-24 14:37 ?1014次閱讀
    極海<b class='flag-5'>APM32F407</b> uc/os3學(xué)習(xí)筆記之任務(wù)管理介紹

    極海APM32F407IG-Tiny開(kāi)發(fā)板的DAPLINK固件更新方法

    最近申請(qǐng)到了APM32F407IG-Tiny板,這塊開(kāi)發(fā)板做工不錯(cuò),尤其自帶了DAPLINK下載器,外設(shè)資源也挺豐富的,很適合做mbedos移植,并且mbedos官方stduio是有自帶
    的頭像 發(fā)表于 05-24 14:28 ?1458次閱讀
    極海<b class='flag-5'>APM32F407</b>IG-Tiny開(kāi)發(fā)板的DAPLINK固件更新方法

    基于APM32F407如何制作I2C EEPROM(AT24C02型號(hào))的MDK-Keil下載算法

    基于APM32F407如何制作I2C EEPROM(AT24C02型號(hào))的Keil下載算法,這樣在我們下載代碼時(shí)可以一鍵把數(shù)據(jù)燒錄到EEPROM中。
    的頭像 發(fā)表于 04-11 11:06 ?2076次閱讀
    基于<b class='flag-5'>APM32F407</b>如何<b class='flag-5'>制作</b>I2C EEPROM(AT24C02型號(hào))的MDK-Keil下載算法

    如何在APM32F407開(kāi)發(fā)板上應(yīng)用uC/OS-III實(shí)時(shí)操作系統(tǒng)

    最近我開(kāi)始學(xué)習(xí) uC/OS-III 實(shí)時(shí)操作系統(tǒng),并著手將其移植到APM32F407 開(kāi)發(fā)板上。在這個(gè)過(guò)程中,我遇到了許多有趣的挑戰(zhàn)和發(fā)現(xiàn),也感受到了操作系統(tǒng)帶來(lái)的強(qiáng)大功能和靈活性。
    的頭像 發(fā)表于 04-01 09:39 ?1570次閱讀
    如何在<b class='flag-5'>APM32F407</b>開(kāi)發(fā)板上應(yīng)用uC/OS-III實(shí)時(shí)操作系統(tǒng)

    求助,關(guān)于STM32F407 DMA NVIC設(shè)置的疑問(wèn)求解

    采用STM32F407, DMA1 stream5(request: usart2_rx)DMA1 stream6(usart2_tx), USART2 global interrupt優(yōu)先級(jí)設(shè)置為
    發(fā)表于 03-13 08:09

    MCU采用STM32F407VGT6文件存在TF卡(SDIO),能否通過(guò)F4的USB把TF卡的txt和excel文件拷貝到U盤(pán)?

    新項(xiàng)目要求如下: 1.MCU采用STM32F407 2.TF卡采取SDIO驅(qū)動(dòng) 3.每隔一端時(shí)間插U盤(pán),F407自動(dòng)把TF卡文件拷貝到U盤(pán)里面 請(qǐng)問(wèn)能否實(shí)現(xiàn)把TF里面文件移動(dòng)到U盤(pán)? 謝謝!
    發(fā)表于 03-11 08:27

    STM32F407嵌入式SRAM映射為0x20020000,為什么?

    就正常運(yùn)行,可以實(shí)現(xiàn)跳轉(zhuǎn)了。關(guān)于這個(gè)問(wèn)題,后來(lái)我查詢(xún)了數(shù)據(jù)手冊(cè),確實(shí)有一定的記載,如下所示: 但是我用的芯片為STM32F407VET6,并不是F42和F43系列的,按照手冊(cè)上的表示,應(yīng)該是
    發(fā)表于 03-10 08:24

    stm32F407平臺(tái)上使用freertos,使用pvPortMalloc申請(qǐng)內(nèi)存,發(fā)現(xiàn)內(nèi)存中的數(shù)據(jù)總被修改,怎么解決?

    如題,我現(xiàn)在在stm32F407平臺(tái)上打開(kāi)FREERTOS,然后使用pvPortMalloc動(dòng)態(tài)申請(qǐng)內(nèi)存的時(shí)候,發(fā)現(xiàn)這塊內(nèi)存中的數(shù)據(jù)總是變化,后面改為malloc申請(qǐng),內(nèi)存中的數(shù)據(jù)就符合預(yù)期了,我已經(jīng)按照網(wǎng)上的流程配置了freertos,不知道是什么原因?qū)е逻@種現(xiàn)象?
    發(fā)表于 03-07 09:03

    stm32f407這個(gè)STM32_RCC_PERIPHCLK_SDMMC是哪里定義的?

    stm32f407這個(gè)STM32_RCC_PERIPHCLK_SDMMC 是哪里定義的 函數(shù)調(diào)用這個(gè)會(huì)報(bào)錯(cuò) Error[Pe020]: identifier \"
    發(fā)表于 03-07 07:34

    STM32F407的高速USB,采用的是虛擬串口方式,VCP驅(qū)動(dòng)有l(wèi)inux系統(tǒng)的嗎?

    STM32F407使用高速USB的Device模式,使用的是虛擬串口VCP方式,網(wǎng)站上有Window7和Window8的驅(qū)動(dòng),是否也有l(wèi)inux系統(tǒng)下的驅(qū)動(dòng)?
    發(fā)表于 03-07 06:42