国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

自制DAPLink -- ARM官方源碼以及STM32F103C8T6

這篇具有很好參考價值的文章主要介紹了自制DAPLink -- ARM官方源碼以及STM32F103C8T6。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【本文發(fā)布于https://blog.csdn.net/Stack_/article/details/128771308,未經(jīng)許可禁止轉載,轉載須注明出處】


一、安裝工具并配置環(huán)境變量


ARM的GitHub有如下說明


自制DAPLink -- ARM官方源碼以及STM32F103C8T6

1、python3

【官網(wǎng)】
【網(wǎng)盤】提取碼:fp68

安裝時會自動添加環(huán)境變量。如果電腦已有py2環(huán)境變量,安裝完后在系統(tǒng)變量中將py3提到py2前面,下面的操作完成后卸載或者恢復到py2后面即可。

2、Git

【官網(wǎng)】
【網(wǎng)盤】提取碼:v5t6

3、Keil MDK,需要有V5編譯器。MDK5 v5.28即可

【網(wǎng)盤】提取碼:keil

二、獲取官方開源代碼

右鍵Git Bash Here,輸入

git clone https://github.com/ARMmbed/DAPLink

將拉取一個名為DAPLink的文件夾,內(nèi)有如下文件。

自制DAPLink -- ARM官方源碼以及STM32F103C8T6

選中的文件夾為后續(xù)步驟生成的

三、生成Keil工程

DAPLink\docs目錄下找到DEVELOPERS-GUIDE.md文件(即第一張圖的開發(fā)指引)

自制DAPLink -- ARM官方源碼以及STM32F103C8T6
1、輸入pip install virtualenv,等待下載完成(此處以及后續(xù)命令行操作均在DAPLink路徑下,DAPLink目錄中右鍵Git Bash Here)。

自制DAPLink -- ARM官方源碼以及STM32F103C8T6

2、輸入virtualenv venv,等待執(zhí)行完成。將生成venv文件夾

自制DAPLink -- ARM官方源碼以及STM32F103C8T6
3、輸入venv/Scripts/activate.bat

4、輸入pip install -r requirements.txt。如果顯示timed out字樣,改用pip install --default-timeout=1000 --no-cache-dir -r requirements.txt。需要等較長的時間。當出現(xiàn)Successfully installed即為成功

5、輸入progen generate -t uvision,將生成projectfiles,并在projectfiles目錄下生成一系列工程


四、打開工程

確保Keil已激活以及已安裝stm32f103的pack。

找到stm32f103xb_bl文件夾,打開工程文件,將提示如下信息,點擊第一項,將彈出pack安裝管理器(Pack Installer),關閉它。

【工程名是stm32f103xb,但是我這里為什么用stm32f103c8t6?原因請看評論區(qū)。】


自制DAPLink -- ARM官方源碼以及STM32F103C8T6

關閉后看到此界面,點擊是,隨后選擇單片機型號為STM32F103C8T6。

自制DAPLink -- ARM官方源碼以及STM32F103C8T6





五、編譯下載

1、根據(jù)自己DIY的硬件修改IO_Config.h引腳定義文件

2、編譯工程并用其它燒錄器下載到STM32F103C8T6后,重新插拔USB線,電腦將出現(xiàn)一個虛擬硬盤。表示DAPLink的boot程序已成功運行。

自制DAPLink -- ARM官方源碼以及STM32F103C8T6

3、隨后找到stm32f103xb_stm32f103rb_if工程,進行和上面一致的操作。編譯后在工程build目錄下找到hex文件拖入到此虛擬U盤中,U盤名稱將變?yōu)橄聢D所示。DAPLINK運行成功

自制DAPLink -- ARM官方源碼以及STM32F103C8T6



六、注意


1、發(fā)現(xiàn)我自己畫的板子燒入程序,有幾率上電時停留在boot中無法進入app,排查后發(fā)現(xiàn)官方源碼中RST引腳配置為開漏輸出,boot中要讀取到RST的電平為高才會跳轉app,而我這板子沒有上拉RST腳。配置為推挽輸出便正常了。

2、keil工程芯片型號不一樣,但它們的源文件是共用的,boot和app也是有公共的源文件的,例如IO_Config.h。


七、附


1、【硬件原理圖】
鏈接:https://pan.baidu.com/s/1o40RZSf3Fbb1uKpI4PE4SQ
提取碼:qlw5


2、引腳定義修改

/**
 * @file    IO_Config.h
 * @brief
 *
 * DAPLink Interface Firmware
 * Copyright (c) 2009-2016, ARM Limited, All Rights Reserved
 * SPDX-License-Identifier: Apache-2.0
 *
 * Licensed under the Apache License, Version 2.0 (the "License"); you may
 * not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef __IO_CONFIG_H__
#define __IO_CONFIG_H__

#include "stm32f1xx.h"
#include "compiler.h"
#include "daplink.h"

COMPILER_ASSERT(DAPLINK_HIC_ID == DAPLINK_HIC_ID_STM32F103XB);

//USB control pin
#define USB_CONNECT_PORT_ENABLE()    __HAL_RCC_GPIOA_CLK_ENABLE()
#define USB_CONNECT_PORT_DISABLE()   __HAL_RCC_GPIOA_CLK_DISABLE()
#define USB_CONNECT_PORT             GPIOA
#define USB_CONNECT_PIN              GPIO_PIN_15
#define USB_CONNECT_ON()             (USB_CONNECT_PORT->BSRR = USB_CONNECT_PIN)
#define USB_CONNECT_OFF()            (USB_CONNECT_PORT->BRR  = USB_CONNECT_PIN)

//Connected LED
#if (0)
#define CONNECTED_LED_PORT           GPIOB
#define CONNECTED_LED_PIN            GPIO_PIN_6
#define CONNECTED_LED_PIN_Bit        6
#else	//PWH修改為PA8
#define CONNECTED_LED_PORT           GPIOA
#define CONNECTED_LED_PIN            GPIO_PIN_8
#define CONNECTED_LED_PIN_Bit        8
#endif

//When bootloader, disable the target port(not used)
#define POWER_EN_PIN_PORT            GPIOB
#define POWER_EN_PIN                 GPIO_PIN_15
#define POWER_EN_Bit                 15

// nRESET OUT Pin
#if (0)
#define nRESET_PIN_PORT              GPIOB
#define nRESET_PIN                   GPIO_PIN_0
#define nRESET_PIN_Bit               0
#else	//PWH修改為
#define nRESET_PIN_PORT              GPIOA
#define nRESET_PIN                   GPIO_PIN_6
#define nRESET_PIN_Bit               6
#endif

//SWD
#if (0)
#define SWCLK_TCK_PIN_PORT           GPIOB
#define SWCLK_TCK_PIN                GPIO_PIN_13
#define SWCLK_TCK_PIN_Bit            13
#else	//PWH修改為
#define SWCLK_TCK_PIN_PORT           GPIOA
#define SWCLK_TCK_PIN                GPIO_PIN_4
#define SWCLK_TCK_PIN_Bit            4
#endif

#if (0)
#define SWDIO_OUT_PIN_PORT           GPIOB
#define SWDIO_OUT_PIN                GPIO_PIN_14
#define SWDIO_OUT_PIN_Bit            14
#else	//PWH修改為
#define SWDIO_OUT_PIN_PORT           GPIOA
#define SWDIO_OUT_PIN                GPIO_PIN_7
#define SWDIO_OUT_PIN_Bit            7
#endif

#if (0)
#define SWDIO_IN_PIN_PORT            GPIOB
#define SWDIO_IN_PIN                 GPIO_PIN_12
#define SWDIO_IN_PIN_Bit             12
#else	//PWH修改為
#define SWDIO_IN_PIN_PORT            GPIOB
#define SWDIO_IN_PIN                 GPIO_PIN_0
#define SWDIO_IN_PIN_Bit             0
#endif

//LEDs
//USB status LED
#define RUNNING_LED_PORT             GPIOA
#define RUNNING_LED_PIN              GPIO_PIN_9
#define RUNNING_LED_Bit              9

#define PIN_HID_LED_PORT             GPIOA
#define PIN_HID_LED                  GPIO_PIN_9
#define PIN_HID_LED_Bit              9

#define PIN_CDC_LED_PORT             GPIOA
#define PIN_CDC_LED                  GPIO_PIN_9
#define PIN_CDC_LED_Bit              9

#define PIN_MSC_LED_PORT             GPIOA
#define PIN_MSC_LED                  GPIO_PIN_9
#define PIN_MSC_LED_Bit              9


#endif


3、如果Keil無法識別到DAPLink,需要根據(jù)下文對源碼做些修改

【新版daplink keil5識別不了】











本來想著加塊屏幕可以個性化一下,但讀懂源碼就不容易了,目前只能顯示USB連接狀態(tài),其余得慢慢研究了


自制DAPLink -- ARM官方源碼以及STM32F103C8T6
自制DAPLink -- ARM官方源碼以及STM32F103C8T6文章來源地址http://www.zghlxwxcb.cn/news/detail-418067.html

到了這里,關于自制DAPLink -- ARM官方源碼以及STM32F103C8T6的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【開篇】STM32F103C8T6 含義、命名規(guī)則、GPIO原理以及初始化(參考男神江科協(xié),學習交流用)

    【開篇】STM32F103C8T6 含義、命名規(guī)則、GPIO原理以及初始化(參考男神江科協(xié),學習交流用)

    目錄 目錄 一,STM系列命名規(guī)則 二.引腳功能 三.電路以及寄存器 1.產(chǎn)品系列: ? ? ? ? STM32代表意法半導體的Cortex-Mx系列內(nèi)核(ARM)32位的MCU 2.產(chǎn)品類型: F-通用型,S-簡單型,L-低功耗,H-高性能,AL-汽車應用低功耗型,AF-汽車應用通用型。 3.產(chǎn)品子系列: 103:ARM Cortex-M3內(nèi)核

    2024年01月17日
    瀏覽(98)
  • stm32f103VET6和stm32f103c8t6有什么區(qū)別?

    stm32f103VET6和stm32f103c8t6有什么區(qū)別?

    我來終結下這個問題。 這兩款單片機我都用過,其中無際單片機特訓營其中一款wifi報警主機項目就是用了stm32f103c8t6。 ?stm32f103VET6和stm32f103c8t6都是STMicroelectronics公司推出基于ARM Cortex-M3內(nèi)核的單片機。 它們在硬件規(guī)格和性能上存在一些差異,下面我詳細講解下它們的差異之處

    2024年02月15日
    瀏覽(102)
  • STM32F103RC

    ·多參考手冊 ·協(xié)議USART、I2C、SPI 嵌入式系統(tǒng)跟ARM處理器 嵌入式系統(tǒng): 專用計算機系統(tǒng),以應用為中心,軟硬件可裁減 組成: 硬件:(MPU)微處理器、存儲器、I/O接口、輸入輸出設備。 軟件:Embedded RTOS、應用軟件。 最小系統(tǒng):微控制器(MCU)、微處理器(MPU)、電源模塊、

    2024年02月12日
    瀏覽(91)
  • STM32F103的中斷

    STM32F103的中斷

    CM3 內(nèi)核支持 256 個中斷,其中包含了 16 個內(nèi)核中斷和 240 個外部中斷,并且具有 256級的可編程中斷設置。 CM3中每個中斷通道都具備自己的8位中斷優(yōu)先級控制字節(jié), 但STM32 并沒有使用 CM3 內(nèi)核的全部東西,STM32F103中只使用4位,高4位有效。 用于表達優(yōu)先級的高4位又被分為組成

    2024年02月08日
    瀏覽(88)
  • STM32F103標準外設庫——認識STM32(一)

    STM32F103標準外設庫——認識STM32(一)

    ?個人名片: ??作者簡介:一名喜歡分享和記錄學習的在校大學生 ??個人主頁:妄北y ??個人QQ:2061314755 ??個人郵箱:2061314755@qq.com ??個人WeChat:Vir2021GKBS ?? 本文由妄北y原創(chuàng),首發(fā)CSDN ?????? ??座右銘:大多數(shù)人想要改造這個世界,但卻罕有人想改造自己。 專欄導

    2024年01月15日
    瀏覽(28)
  • 學STM32(STM32F103RCT6)

    學STM32(STM32F103RCT6)

    第一章 了解STM32 為什么使用STM32而不是8051? 是因為51的頻率太低,無法滿足計算需求?是51的管腳太少,無法滿足眾多外設的IO? 是51的功耗太大,電池挺不住?是51的功能太弱,而你要使用SPI、I2C、ADC、DMA? 是51的內(nèi)存太小而你要存儲的東西太多? 當你需要使用STM32某些功能,而51實

    2023年04月09日
    瀏覽(96)
  • STM32F103學習(ADC)

    STM32F103學習(ADC)

    1、定義 ADC(Analog-to-Digital Converter? 模數(shù)轉換器?)。是指將連續(xù)變化的模擬信號轉換為離散的數(shù)字信號的器件。 2、原理 stm32上的ADC外設采用逐次比較的方式。 逐次比較型ADC工作原理可以類比天平稱物體。比如我們假定要稱一個21g的物體,我們有16g、8g、4g、2g、1g的砝碼。一開

    2024年02月10日
    瀏覽(20)
  • STM32F103 晶振問題詳解

    STM32F103 晶振問題詳解

    博主自制開發(fā)板,用的 STM32F103RCT6,設計時 8M 晶振并聯(lián)了個 1M 電阻,實測發(fā)現(xiàn): 1、軟件延時 1s ,實際延時 9s,拆掉 1M 電阻問題消失。 2、部分代碼下載進去后單片機不工作。(實測晶振不起振 or 波形很差) 網(wǎng)上說加這個 1M 電阻是為了晶振更好的起振,但如果芯片內(nèi)部本來

    2024年02月04日
    瀏覽(22)
  • STM32F103制作FlashDriver

    STM32F103制作FlashDriver

    在汽車行業(yè)控制器軟件刷新流程中,一般會將Flash驅(qū)動單獨進行刷寫,目的是防止程序中一直存在Flash驅(qū)動的話,可能會造成對APP軟件的異常操作,導致應用程序無法執(zhí)行。本文介紹STM32F103使用KEIL生成指定FlashDriver地址的hex文件,然后使用HexView命令行提取FlashDriver及Remapping f

    2024年02月14日
    瀏覽(25)
  • STM32F103之系統(tǒng)架構

    STM32F103之系統(tǒng)架構

    SMT32F103采用的是Cotex-M3內(nèi)核,所謂的 內(nèi)核就是CPU ,由ARM公司設計,他們是IP開發(fā)商,本身并不生產(chǎn)芯片。通過技術授權給系統(tǒng)集成(SOC)廠家,比如ST,GD等芯片廠商(SOC廠商),由ST、GD等芯片廠家增加外圍設備Eg:GPIO、IIC、FLASH、UART、USB等,由SOC廠商在CPU外圍增加的設備我

    2023年04月23日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包