在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

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

3天內不再提示

使用APM32F407替代STM32F407制作的demo

GReq_mcu168 ? 來源:21ic電子網 ? 作者:WuKaiLi ? 2022-05-10 14:37 ? 次閱讀

前言

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

本文記錄一下我使用APM32F407替代STM32F407制作的一個小demo(使用SPI外設讀取W25Q128)。該demo使用原開發板電路,看看將主控換成APM32F407后看看能不能做到pin對pin的完美替代。

本文使用環境:

硬件

啟明欣欣 IMT407 V5.1(APM32F407ZGT6)

J-link v9.7

IMT 2.8 TFTLCD

USB轉TTL

軟件:

MDK-ARM Plus Version: 5.36.0.0

fireTools

固件或例程庫:

1.APM32F4xx_SDK_V1.1

2.啟明欣欣STM32F407(高配版V5.1)學習資料(2 各資源學習例程標準庫版本15 SPI_W25Qxx)

參考文檔:

1.APM32F4xxx用戶手冊 V1.1

2.APM32F405xG 407xExG數據手冊 V1.1

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

4.STM32F4xx中文參考手冊

5.STM32F407ZGT6數據手冊.pdf

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

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

1 環境配置

1.1 APM32F407開發環境

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

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

1.2 添加APM32F407驅動庫文件

a.在原工程下添加APM32F407的驅動庫(本文節取原開發板例程中的SPI_W25Qxx例程),復制APM32F4xx_SDK_V1.1下的Library文件夾至工程目錄,改名為APM32F4xx_Library。

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

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

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

1.3 添加APM32F407工程及目錄

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

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

c.分別在“APM32F4xx_StdPeriphDriver”與“APM32F4xx_Startup_config”分組下添加本次例程使用到的驅動文件。

d.在“Main”分組下添加我們上一節增加的內容“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”的芯片選型設置為“APM32F407ZG”。

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

1.5 設置編譯選擇

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

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

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

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

b.設置“APM32F407”工程的聲明為“APM32F40X”。

c.增加“APM32F407”工程中APM32F407驅動庫文件頭文件目錄。

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

2 底層驅動替換

更改代碼,將STM32的驅動函數替換為APM32的驅動函數,這部分比較繁瑣,需要慢慢替換。可根據工程所需外設的驅動進行對照替換。如我們現在的工程主要涉及到的外設有:misc/gpio/spi/fsmc/usart/rcm。可以通過查看兩者的參考手冊,查看那些寄存器功能基本一致的對應的庫函數的功能也基本一致。

2.1 外設與庫函數對照

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

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 驅動替換方式

由于前文我們已經將“APM32F407”工程的聲明設置為“APM32F40X”,這里我們僅需將涉及外部功能模塊的源碼文件內的驅動進行替換。通過宏定義的方式以支持不同平臺的文件。

如包含頭文件時:


#ifdef STM32F40_41xxx
/** 原 stm32 接口或外設驅動 */
#include "stm32f4xx.h"
#endif

#ifdef APM32F40X
/** 替換為 apm32 接口或外設驅動 */
#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外設驅動時:

#ifdef STM32F40_41xxx
/** 原 stm32 接口或外設驅動 */
GPIO_InitTypeDef GPIO_InitStructure;

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

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9; //KEY0 KEY1 KEY2 KEY3對應引腳
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 接口或外設驅動 */
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

替換過程較為繁瑣,這里不再一一贅述。具體代碼實現大家可參考附件源碼。

3 程序下載與仿真

由于我們的已做雙工程處理,在修改底層驅動至APM32F407時并不影響原工程內容,我們可以通過選擇不同的工程對目標芯片進行下載。我這里選擇"APM32F407"工程通過J-LINK下載我手上的板子。

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

程序下載過程中會提示我們選擇芯片平臺,這里選擇“M4”即可。

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

4 最后效果

a.程序開始運行后,屏幕會顯示請用戶發送數據到串口1“Please send data to usart1”,此時用戶就要通過串口助手向開發板發送數據,發送格式為S…….E。“….…”為用戶所需要發送的數據,發送后數據存在 receive_str[ ]數值中并在顯示屏顯示。

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

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

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

5 總結

以上便是本次使用APM32F407替代STM32F407的簡要過程。通過本次替代經歷,發現極海的APM32F407芯片的硬件與軟件環境對STM32F407都有著非常優秀的替代能力。在原有硬件無需改動的情況下,簡單的進行驅動更換后也能很好運行起來。國產優秀替代者極海也!各位小伙伴可以和我一起討論替代過程中發生的趣事~

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

聲明

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

2.代碼(文檔)參考了網上開源的代碼。如涉及貴方版權,請聯系本人刪除。

審核編輯 :李倩

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    459

    文章

    51918

    瀏覽量

    433484
  • 代碼
    +關注

    關注

    30

    文章

    4880

    瀏覽量

    69977

原文標題:國產優秀替代_APM32F407替代STM32F407記錄

文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

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

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

    如何在APM32F407開發板上應用uC/OS-III實時操作系統

    最近我開始學習 uC/OS-III 實時操作系統,并著手將其移植到APM32F407 開發板上。在這個過程中,我遇到了許多有趣的挑戰和發現,也感受到了操作系統帶來的強大功能和靈活性。
    的頭像 發表于 04-01 09:39 ?562次閱讀
    如何在<b class='flag-5'>APM32F407</b>開發板上應用uC/OS-III實時操作系統

    stm32f407這個STM32_RCC_PERIPHCLK_SDMMC是哪里定義的?

    stm32f407這個STM32_RCC_PERIPHCLK_SDMMC 是哪里定義的 函數調用這個會報錯 Error[Pe020]: identifier \"
    發表于 03-07 07:34

    STM32F405xx和STM32F407xx微控制器數據手冊

    電子發燒友網站提供《STM32F405xx和STM32F407xx微控制器數據手冊.pdf》資料免費下載
    發表于 01-03 14:49 ?2次下載

    STM32F407和ADS8684進行SPI通信,寄存器怎么配置?

    通過STM32F407和ADS8684進行SPI通信,閱讀了ADS8684的手冊,配置STM32F407為主,CPOL為0,CPHA為1,這樣對嗎? 配置好后應該先設置ADS8684的程序寄存器還是發送命令寄存器后再設置程序寄存器呢?
    發表于 12-20 06:25

    STM32 F407無傳感器控制PLL

    電子發燒友網站提供《STM32 F407無傳感器控制PLL.zip》資料免費下載
    發表于 12-19 14:10 ?1次下載

    STM32F407 MCU使用SD NAND?不斷電初始化失效解決方案

    STM32F407微控制器單元(MCU)與SD NAND的結合提供了強大的存儲解決方案。然而,不斷電初始化失效問題可能會導致系統穩定性和數據完整性受損。我們將STM32F407與SD NAND集成時可能遇到的初始化問題,并提供專業的解決方案。
    的頭像 發表于 12-11 10:51 ?738次閱讀
    <b class='flag-5'>STM32F407</b> MCU使用SD NAND?不斷電初始化失效解決方案

    如何基于STM32F407通過SPI控制ADS8361?

    如何基于STM32F407通過SPI控制ADS8361?
    發表于 11-19 08:23

    STM32F407作USB host驅動聲卡,USB就會出錯的原因?

    我用STM32F407 作USB host,配置為FS。用它接聲卡。如果STM32F407 單向給 聲卡傳送音頻,輸出聲音正常。或者 407單向接收聲卡的音頻,工作也正常。但是同時發送和接收聲音(即
    發表于 07-04 06:56

    怎樣從STM32F407的UID碼中提取生產年份和月份信息?

    請問怎樣從STM32F407的UID碼中提取生產年份和月份信息?
    發表于 06-03 06:28

    STM32F407外擴外部RAM,能把stack設置在外部RAM嗎?

    STM32F407外擴外部RAM,能把stack設置在外部RAM嗎?
    發表于 05-17 11:05

    stm32f407是否可以采用別的I/O口,與TFT液晶實現連接啊?

    新手求助:stm32f407與TFT液晶接口時,TFT液晶為并口(D0~D15等),stm32f407芯片必須使用FSMC—D0~FSMC—D15等接口與其連接嗎?看了一些開發板的原理圖,好像
    發表于 05-17 07:39

    請問stm32f407不帶外圍高速usb芯片是否可以實現高速usb?

    我看到一般的都帶一個usb3300 利用ulpi來實現高速usb~~~ 但是stm32f407的pb14 和pb15都是OTG_HS_DP OTG_HS_DM~~~ 請問stm32f407 不帶外圍高速usb芯片是否可以實現高速usb??
    發表于 05-15 07:58

    STM32F407怎么去接收、發送數據?

    USB設備是這樣的,請問我用STM32F407怎么去接收、發送數據,這個設備是一個3G模塊,謝謝。
    發表于 05-09 06:41

    stm32f407 USB外接HUB怎么枚舉HUB和其他USB設備?

    stm32f407 的USB接口 我想外接一個HUB 來支持更多的USB設備,但是這個HUB 該怎么枚舉,還有就是HUB下的USB設備怎么枚舉,有做過的大神嗎。求指導,求demo。小弟拜謝了
    發表于 04-29 08:13
    主站蜘蛛池模板: 人人干人人干 | 国产91小视频在线观看 | 人与禽性视频77777 | 免费网站成人亚洲 | 91大神精品视频 | 亚洲综合区图片小说区 | 日本不卡视频在线视频观看 | 添人人躁日日躁夜夜躁夜夜揉 | 精品一区二区三区免费毛片爱 | 毛片123| 国产伦精品一区二区免费 | 直接黄91麻豆网站 | 国产精品麻豆va在线播放 | 三级欧美在线 | 5月色婷婷 | 高清午夜线观看免费 | 国产区一区二区三区 | 亚洲男人的性天堂 | 亚洲小说区图片区另类春色 | 日本特黄特色大片免费播放视频 | 日韩一级片免费 | 国产男女交性视频播放免费bd | japanese色系国产在线高清 | 日本一区二区在线免费观看 | 午夜影院黄色片 | 免费一级特黄视频 | 欧美午夜免费观看福利片 | 美女视频永久黄网站免费观看国产 | 给我一个可以看片的www日本 | 激情欧美一区二区三区中文字幕 | 久久精品韩国三级 | 午夜剧场一级片 | 国产精品一区二区三 | 中文字幕一区二区三区精品 | 欧美色乱| 国产欧美日韩视频免费61794 | 四虎免费影院4hu永久免费 | 同性男男肉交短文 | 日本特黄特色 | 天天色天天干天天射 | 色婷婷综合网 |