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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

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

目錄

前言

一、新建工程

?編輯

二、ISP串口程序下載

三、LINK程序下載與在線調試

3.1 JTAG/SWD調試原理簡析

3.2 硬件連接

3.3 JTAG/SWD模式配置

3.4 程序下載

3.2 在線調試


前言

該文檔主要講解內容有:

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

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

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

    • 保存新建工程

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

    • 選擇芯片型號

    這里本人使用的信號型號為:STM32F407ZGT6,找到點擊ok選擇即可。

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

    keil軟件STM32系列芯片支持包-嵌入式文檔類資源-CSDN下載請按如下順序安裝:1,安裝mdk_514.exe2,安裝Keil.STM32F4xx_DF更多下載資源、學習資料請訪問CSDN下載頻道.https://download.csdn.net/download/ARM_qiao/85498259

    • ?添加功能組件

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

    • 建立好的工程目錄

    • 啟動文件設置

    關于啟動文件詳細介紹推薦大家看一下鏈接里的介紹,非常細致極力推薦:

    STM32啟動文件詳解 | 技術部落

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

    ST公司對于STM32F40X和STM32F41X系列統一使用:startup_stm32f40_41xxx.s啟動文件。

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

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

    ?上述代碼:

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

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

    由于使能了FPU,在MDK里也需要對FPU進行設置,否則代碼無法運行,設置方式:打開Options for Target,如圖進行設置

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

    • ?添加啟動文件

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

    • 編譯啟動代碼

    1、目標編譯,只編譯打開的文件;2、全部編譯,編譯整個工程文件(事件較長)?

    ?

    • 添加系統代碼

    ?在USER文件種MDK5會自動生成2個文件,用來存放MDK編譯過程中產生的文件,在正點原子中會建立OBJ 文件夾單獨存放,這里我們不對其進行調整,僅給出調整方式。

    ?

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

    MDK中添加相關文件

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

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

    ?再編寫test.c文件后會發現有錯誤,這是由于還沒有添加.c的頭文件.h文件

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

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

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


    二、ISP串口程序下載

    ?再使用串口下載之前需要再電腦上安裝串口驅動:CH340G,鏈接后任務管理可進行查看。

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

    • 串口的一建下載功能

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

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

    一鍵下載電路利用了串口的DTR和RTS信號,分別控制STM32的復位和B0,配合串口上位機軟件FlyMcu,設置:DTR的低電平復位,RTS高電平進入BootLoader,這樣,B0和STM32的復位,完全可以由下載軟件自動控制,從而實現一鍵下載。

    • 設置在編譯前設置輸出.hex文件

    • 重新編譯后在Objects文件中就會生成機器二進制代碼文件.hex

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

    設置編程后執行,否則需要按一下復位鍵才能重新執行代碼。 編程前重裝文件,該選項也比較有用,當選中該選項之后,flymcu 會在每次編程之前,將 hex 文件重新裝載一遍,這對于代碼調試的時候是比較有用的。特別提醒:不要選擇使用 RamIsp,否則,可能沒法正常下載。
    • 點擊開始編程

    • 打開串口助手發現移植接受到數據

    說明程序已經下載到板卡內,且正常運行

    三、LINK程序下載與在線調試

    3.1 JTAG/SWD調試原理簡析

    ?復位后JTAG對應的IO引腳默認為JTAG模式,有時候配置相應的引腳無法使用GPIO功能,PB3/4

    3.2 硬件連接

    3.3 JTAG/SWD模式配置

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

    默認復位狀態,這些引腳都是JTAG/SWD調試功能開啟。 如果需要關閉,只需要相應的IO口設置為相應模式。

    3.4 程序下載

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

    本人使用的是STLINK進行在線調試。

    • 調整Options for Target中的Debug選項卡

    上圖中我們還勾選了 Run to main(),該選項選中后,只要點擊仿真就會直接運行到 main 函數,如果沒選擇這個選項,則會先執行 startup_stm32f40_41xxx.s 文件的 Reset_Handler,再跳到main 函數。

    • ?點擊Setting設置

    使用SWD接口方式,右邊已經顯示檢查到SWDIO接口

    • 下載設置

    • ?代碼程序的下載

    重新編譯后直接點擊下載按鈕就可以了

    下載完成?

    3.2 在線調試

    MCU內部已經被下入程序,接下來可以點擊(開始/暫停仿真按鈕)進行在線仿真。,點擊

    后出現仿真界面,其中上面由調試的工具條:

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

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

    • ?這里先點擊復位按鈕,然后打一個斷點,且點擊將程序執行到該斷點處。就會發現相關的區域就會出現相應的變化。

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

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。