日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2、【STM32】新建工程模板、ISP串口程序下载、JLINK程序下载与调试(在线和软件)

發(fā)布時(shí)間:2023/12/9 编程问答 97 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2、【STM32】新建工程模板、ISP串口程序下载、JLINK程序下载与调试(在线和软件) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

目錄

前言

一、新建工程

?編輯

二、ISP串口程序下載

三、LINK程序下載與在線調(diào)試

3.1 JTAG/SWD調(diào)試原理簡(jiǎn)析

3.2 硬件連接

3.3 JTAG/SWD模式配置

3.4 程序下載

3.2 在線調(diào)試


前言

該文檔主要講解內(nèi)容有:

  • 在Keil環(huán)境下新建工程——基于寄存器版本
  • 程序下載方法1——ISP串口下載
  • 程序下載方法2——JLINK程序下載
  • JLINK在線調(diào)試+軟件調(diào)試方法
  • 一、新建工程

    • 建立存放工程的文件夾:包含三部分

    • 打開keil軟件(MDK5),點(diǎn)擊新建工程:

    • 保存新建工程

    找到剛才建立的工程文件種的USER文件,選中并保存:

    • 選擇芯片型號(hào)

    這里本人使用的信號(hào)型號(hào)為:STM32F407ZGT6,找到點(diǎn)擊ok選擇即可。

    如果沒有找到相應(yīng)的芯片請(qǐng)安裝支持包:安裝Keil.STM32F4xx_DFP.1.0.8.pack ?資源鏈接:

    keil軟件STM32系列芯片支持包-嵌入式文檔類資源-CSDN下載請(qǐng)按如下順序安裝:1,安裝mdk_514.exe2,安裝Keil.STM32F4xx_DF更多下載資源、學(xué)習(xí)資料請(qǐng)?jiān)L問CSDN下載頻道.https://download.csdn.net/download/ARM_qiao/85498259

    • ?添加功能組件

    這里會(huì)提示你是否添加功能組件,由于這里是建立工程,先不需要添加直接關(guān)閉即可。

    • 建立好的工程目錄

    • 啟動(dòng)文件設(shè)置

    關(guān)于啟動(dòng)文件詳細(xì)介紹推薦大家看一下鏈接里的介紹,非常細(xì)致極力推薦:

    STM32啟動(dòng)文件詳解 | 技術(shù)部落

    啟動(dòng)代碼是一段和硬件相關(guān)的匯編代碼,主要作用:1、堆棧(SP)初始化;2、初始化程序計(jì)數(shù)器(PC);3、設(shè)置向量表異常事件的入口地址;4、調(diào)用函數(shù)main函數(shù)。

    ST公司對(duì)于STM32F40X和STM32F41X系列統(tǒng)一使用:startup_stm32f40_41xxx.s啟動(dòng)文件。

    由于使用STM32F407ZGT6開發(fā)板因此上述啟動(dòng)文件正常使用,但是需要對(duì)啟動(dòng)文件做一下修改,這里將寄存器版本代碼用不到的代碼屏蔽掉,主要是Reset_Handler函數(shù)修改。

    Reset_Handler PROCEXPORT Reset_Handler [WEAK];IMPORT SystemInit ;寄存器代碼,不需要在這里調(diào)用 SystemInit 函數(shù), ;故屏蔽掉,庫函數(shù)版本代碼,可以留下;不過需要在外部實(shí)現(xiàn) SystemInit 函數(shù),否則會(huì)報(bào)錯(cuò).IMPORT __mainLDR R0, =0xE000ED88 ;使能浮點(diǎn)運(yùn)算 CP10,CP11LDR R1,[R0]ORR R1,R1,#(0xF << 20)STR R1,[R0];LDR R0, =SystemInit ;寄存器代碼,未用到,屏蔽;BLX R0 ;寄存器代碼,未用到,屏蔽LDR R0, =__mainBX R0ENDP

    ?上述代碼:

    1、開啟了STM32F4硬件FPU的代碼,以使能浮點(diǎn)運(yùn)算單元。其中0xE000ED88就是協(xié)處理器控制寄存器(CPACR),該寄存器第20~23位用來控制是否支持浮點(diǎn)運(yùn)算,這里全部設(shè)置為1。

    2、由于使用的是寄存器版本的代碼,這里屏蔽了SystemInit函數(shù)。

    由于使能了FPU,在MDK里也需要對(duì)FPU進(jìn)行設(shè)置,否則代碼無法運(yùn)行,設(shè)置方式:打開Options for Target,如圖進(jìn)行設(shè)置

    由于開發(fā)板上晶振為8MHz所以這里將其改為8?

    • ?添加啟動(dòng)文件

    將啟動(dòng)文件startup_stm32f40_41xxx.s啟動(dòng)文件拷貝到剛剛新建立的USER文件里面。

    • 編譯啟動(dòng)代碼

    1、目標(biāo)編譯,只編譯打開的文件;2、全部編譯,編譯整個(gè)工程文件(事件較長(zhǎng))?

    ?

    • 添加系統(tǒng)代碼

    ?在USER文件種MDK5會(huì)自動(dòng)生成2個(gè)文件,用來存放MDK編譯過程中產(chǎn)生的文件,在正點(diǎn)原子中會(huì)建立OBJ 文件夾單獨(dú)存放,這里我們不對(duì)其進(jìn)行調(diào)整,僅給出調(diào)整方式。

    ?

    將系統(tǒng)代碼(即 SYSTEM 文件夾,該文件夾由 ALIENTEK 提供,可以在光盤任何一個(gè)實(shí)例的工程目錄下找到,不過不要拷貝錯(cuò)了!不要把庫函數(shù)代碼的系統(tǒng)文件夾拷貝到寄存器代碼里面用,反之亦然!這些代碼在任何 STM32F40x/STM32F41x 的芯片上都是通用的,可以用于快速構(gòu)建自己的工程,后面會(huì)有詳細(xì)介紹)?

    MDK中添加相關(guān)文件

    還需要再USER目錄下添加main函數(shù)文件,test.c文件。

    建立完成后雙擊1,可以添加建立的test.c文件。?

    ?再編寫test.c文件后會(huì)發(fā)現(xiàn)有錯(cuò)誤,這是由于還沒有添加.c的頭文件.h文件

    • 添加.h文件
    圖中 1 處設(shè)置的 STM32F40_41xxx 宏,是為了兼容低版本的 MDK(比 如 MDK4/MDK3 等)才添加的,MDK5 在你選擇器件的時(shí)候,就會(huì)內(nèi)部定義這個(gè)宏,因此在 MDK5 下面,這里不設(shè)置也是可以的。但是為了兼容低版本的 MDK,我們還是將這個(gè)宏添加進(jìn)來。 圖中 2 處是編譯器優(yōu)化選項(xiàng),有-O0~-O3 四種選擇(default 則是-O2),值越大,優(yōu)化效果越強(qiáng),但是仿真調(diào)試效果越差。這里我們選擇-O0 優(yōu)化,以得到最好的調(diào)試效果,方便開發(fā)代碼,在代碼調(diào)試結(jié)束后,大家可以選擇-O2 之類的優(yōu)化,得到更好的性能和更少的代碼占用量。 圖中 3 處,One ELF Section per Function 主要是用來對(duì)冗余函數(shù)的優(yōu)化。通過這個(gè)選項(xiàng),可以在最后生成的二進(jìn)制文件中將冗余函數(shù)排除掉,以便最大程度地優(yōu)化最后生成的二進(jìn)制代碼,所以,我們一般勾選上這個(gè),這樣可以減少整個(gè)程序的代碼量。 然后在 Include Paths 處(4 處),點(diǎn)擊 5 處的按鈕。在彈出的對(duì)話框中加入 SYSTEM 文件夾下的 3 個(gè)文件夾名字,把這幾個(gè)路徑都加進(jìn)去(此操作即加入編譯器的頭文件包含路徑,后面會(huì)經(jīng)常用到)

    添加完成后重新進(jìn)行代碼編譯,如果代碼編譯出現(xiàn)錯(cuò)誤提示:..\SYSTEM\usart\usart.c(38): error: ?#260-D: explicit type is missing ("int" assumed)?

    雙擊打開定位到38行,這里由于形參為int,且沒有返回值,所以添加一個(gè)void即可。


    二、ISP串口程序下載

    ?再使用串口下載之前需要再電腦上安裝串口驅(qū)動(dòng):CH340G,鏈接后任務(wù)管理可進(jìn)行查看。

    在安裝好USB串口驅(qū)動(dòng)后,打開串口下載軟件FlyMcu,該軟件是 mcuisp 的升級(jí)版本(flymcu 新增對(duì) STM32F4 的支持),由 ALIENTEK提供部分贊助,mcuisp 作者開發(fā),該軟件可以在 www.mcuisp.com 免費(fèi)下載。

    • 串口的一建下載功能

    在介紹一建下載之前首先介紹一下STM32的三種啟動(dòng)方式:

    [Skill] STM32的啟動(dòng)方式、啟動(dòng)文件、程序下載方式和下載電路——深度解讀(全網(wǎng)最全最詳細(xì))_追逐者-橋的博客-CSDN博客深度解讀啟動(dòng)方式及啟動(dòng)文件https://blog.csdn.net/ARM_qiao/article/details/125049804由于使用傳統(tǒng)串口方式下載需要調(diào)整BOOT[1:0]的狀態(tài),比較繁瑣。所以采用了一鍵下載電路。

    一鍵下載電路利用了串口的DTR和RTS信號(hào),分別控制STM32的復(fù)位和B0,配合串口上位機(jī)軟件FlyMcu,設(shè)置:DTR的低電平復(fù)位,RTS高電平進(jìn)入BootLoader,這樣,B0和STM32的復(fù)位,完全可以由下載軟件自動(dòng)控制,從而實(shí)現(xiàn)一鍵下載。

    • 設(shè)置在編譯前設(shè)置輸出.hex文件

    • 重新編譯后在Objects文件中就會(huì)生成機(jī)器二進(jìn)制代碼文件.hex

    • ?在串口助手中添加工程的.hex文件,和設(shè)置窗口下載

    設(shè)置編程后執(zhí)行,否則需要按一下復(fù)位鍵才能重新執(zhí)行代碼。 編程前重裝文件,該選項(xiàng)也比較有用,當(dāng)選中該選項(xiàng)之后,flymcu 會(huì)在每次編程之前,將 hex 文件重新裝載一遍,這對(duì)于代碼調(diào)試的時(shí)候是比較有用的。特別提醒:不要選擇使用 RamIsp,否則,可能沒法正常下載。
    • 點(diǎn)擊開始編程

    • 打開串口助手發(fā)現(xiàn)移植接受到數(shù)據(jù)

    說明程序已經(jīng)下載到板卡內(nèi),且正常運(yùn)行

    三、LINK程序下載與在線調(diào)試

    3.1 JTAG/SWD調(diào)試原理簡(jiǎn)析

    ?復(fù)位后JTAG對(duì)應(yīng)的IO引腳默認(rèn)為JTAG模式,有時(shí)候配置相應(yīng)的引腳無法使用GPIO功能,PB3/4

    3.2 硬件連接

    3.3 JTAG/SWD模式配置

    當(dāng)用到PB3/4的GPIO功能是需要對(duì)其模式進(jìn)行重新設(shè)置,在文件stm32f4xx_gpio.c中,void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF);

    默認(rèn)復(fù)位狀態(tài),這些引腳都是JTAG/SWD調(diào)試功能開啟。 如果需要關(guān)閉,只需要相應(yīng)的IO口設(shè)置為相應(yīng)模式。

    3.4 程序下載

    由于串口只能實(shí)現(xiàn)下載程序功能,而不能實(shí)現(xiàn)跟蹤調(diào)試,而調(diào)試工具,JLINK/ULINK/STLNK等實(shí)現(xiàn)程序的跟蹤。SWD下載調(diào)試僅需要占用兩條IO口

    本人使用的是STLINK進(jìn)行在線調(diào)試。

    • 調(diào)整Options for Target中的Debug選項(xiàng)卡

    上圖中我們還勾選了 Run to main(),該選項(xiàng)選中后,只要點(diǎn)擊仿真就會(huì)直接運(yùn)行到 main 函數(shù),如果沒選擇這個(gè)選項(xiàng),則會(huì)先執(zhí)行 startup_stm32f40_41xxx.s 文件的 Reset_Handler,再跳到main 函數(shù)。

    • ?點(diǎn)擊Setting設(shè)置

    使用SWD接口方式,右邊已經(jīng)顯示檢查到SWDIO接口

    • 下載設(shè)置

    • ?代碼程序的下載

    重新編譯后直接點(diǎn)擊下載按鈕就可以了

    下載完成?

    3.2 在線調(diào)試

    MCU內(nèi)部已經(jīng)被下入程序,接下來可以點(diǎn)擊(開始/暫停仿真按鈕)進(jìn)行在線仿真。,點(diǎn)擊

    后出現(xiàn)仿真界面,其中上面由調(diào)試的工具條:

    • 復(fù)位:其功能等同于硬件上按復(fù)位按鈕。相當(dāng)于實(shí)現(xiàn)了一次硬復(fù)位。按下該按鈕之后,代碼會(huì)重新從頭開始執(zhí)行。
    • 執(zhí)行到斷點(diǎn)處:該按鈕用來快速執(zhí)行到斷點(diǎn)處,有時(shí)候你并不需要觀看每步是怎么執(zhí)行的,而是想快速的執(zhí)行到程序的某個(gè)地方看結(jié)果,這個(gè)按鈕就可以實(shí)現(xiàn)這樣的功能,前提是你在查看的地方設(shè)置了斷點(diǎn)。
    • 停止運(yùn)行:此按鈕在程序一直執(zhí)行的時(shí)候會(huì)變?yōu)橛行?#xff0c;通過按該按鈕,就可以使程序停止下來,進(jìn)入到單步調(diào)試狀態(tài)。
    • 執(zhí)行進(jìn)去:該按鈕用來實(shí)現(xiàn)執(zhí)行到某個(gè)函數(shù)里面去的功能,在沒有函數(shù)的情況下,是等同于執(zhí)行過去按鈕的。
    • 執(zhí)行過去:在碰到有函數(shù)的地方,通過該按鈕就可以單步執(zhí)行過這個(gè)函數(shù),而不進(jìn)入這個(gè)函數(shù)單步執(zhí)行。
    • 執(zhí)行出去:該按鈕是在進(jìn)入了函數(shù)單步調(diào)試的時(shí)候,有時(shí)候你可能不必再執(zhí)行該函數(shù)的剩余部分了,通過該按鈕就直接一步執(zhí)行完函數(shù)余下的部分,并跳出函數(shù),回到函數(shù)被調(diào)用的位置。
    • 執(zhí)行到光標(biāo)處:該按鈕可以迅速的使程序運(yùn)行到光標(biāo)處,其實(shí)是挺像執(zhí)行到斷點(diǎn)處按鈕功能,但是兩者是有區(qū)別的,斷點(diǎn)可以有多個(gè),但是光標(biāo)所在處只有一個(gè)。
    • 匯編窗口:通過該按鈕,就可以查看匯編代碼,這對(duì)分析程序很有用。
    • 堆棧局部變量窗口:通過該按鈕,顯示 Call Stack+Locals 窗口,顯示當(dāng)前函數(shù)的局部變量及其值,方便查看。
    • 觀察窗口:MDK5 提供 2 個(gè)觀察窗口(下拉選擇),該按鈕按下,會(huì)彈出一個(gè)顯示變量的窗口,輸入你所想要觀察的變量/表達(dá)式,即可查看其值,是很常用的一個(gè)調(diào)試窗口。
    • 內(nèi)存查看窗口:MDK5 提供 4 個(gè)內(nèi)存查看窗口(下拉選擇),該按鈕按下,會(huì)彈出一個(gè)內(nèi)存查看窗口,可以在里面輸入你要查看的內(nèi)存地址,然后觀察這一片內(nèi)存的變化情況。是很常用的一個(gè)調(diào)試窗口
    • 串口打印窗口:MDK5 提供 4 個(gè)串口打印窗口(下拉選擇),該按鈕按下,會(huì)彈出一個(gè)類似串口調(diào)試助手界面的窗口,用來顯示從串口打印出來的內(nèi)容。
    • 邏輯分析窗口:該圖標(biāo)下面有 3 個(gè)選項(xiàng)(下拉選擇),我們一般用第一個(gè),也就是邏輯分析窗口(Logic Analyzer),點(diǎn)擊即可調(diào)出該窗口,通過 SETUP 按鈕新建一些 IO 口,就可以觀察這IO 口的電平變化情況,以多種形式顯示出來,比較直觀。
    • 系統(tǒng)查看窗口:該按鈕可以提供各種外設(shè)寄存器的查看窗口(通過下拉選擇),選擇對(duì)應(yīng)外設(shè),即可調(diào)出該外設(shè)的相關(guān)寄存器表,并顯示這些寄存器的值,方便查看設(shè)置的是否正確。

    現(xiàn)在先不忙著往下執(zhí)行,點(diǎn)擊菜單欄的 Peripherals?System Viewer?USART?USART1 可以看到,有很多外設(shè)可以查看,這里我們查看的是串口 1 的情況。如圖 4.2.9 所示:

    • ?這里先點(diǎn)擊復(fù)位按鈕,然后打一個(gè)斷點(diǎn),且點(diǎn)擊將程序執(zhí)行到該斷點(diǎn)處。就會(huì)發(fā)現(xiàn)相關(guān)的區(qū)域就會(huì)出現(xiàn)相應(yīng)的變化。

    ?該文檔到這里就結(jié)束了主要講了如何建立工程、下載程序和程序的在線調(diào)試

    總結(jié)

    以上是生活随笔為你收集整理的2、【STM32】新建工程模板、ISP串口程序下载、JLINK程序下载与调试(在线和软件)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。