STM32F103C8T6在aduino IDE编程使用 jtag模式 下载

2024-02-09 09:59

本文主要是介绍STM32F103C8T6在aduino IDE编程使用 jtag模式 下载,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、准备好相关硬件

2、arduino环境搭建参考前文
https://blog.csdn.net/qq_38288618/article/details/90553252

3、接线参考看前文
https://blog.csdn.net/qq_38288618/article/details/98640223

4、arduino ide相关设置,如图
 

 

5、找个示例编译成功,下载出现如下错误

Arduino:1.8.9 (Windows 10), 开发板:"Generic STM32F103C series, STM32F103C8 (20k RAM. 64k Flash), JLink, 72Mhz (Normal), Smallest (default)"项目使用了 16564 字节,占用了 (25%) 程序存储空间。最大为 65536 字节。
全局变量使用了11552字节,(56%)的动态内存,余留8928字节局部变量。最大为20480字节。D:\Program Files\arduino-1.8.9>rem: @echo off D:\Program Files\arduino-1.8.9>rem: Note D:\Program Files\arduino-1.8.9\hardware\Arduino_STM32-master\tools\win\ get path of this batch file D:\Program Files\arduino-1.8.9>rem: Need to change drive if My Documents is on a drive other than C: D:\Program Files\arduino-1.8.9>set driverLetter=D:\Program Files\arduino-1.8.9\hardware\Arduino_STM32-master\tools\win\ D:\Program Files\arduino-1.8.9>set driverLetter=D: D:\Program Files\arduino-1.8.9>D:D:\Program Files\arduino-1.8.9>cd D:\Program Files\arduino-1.8.9\hardware\Arduino_STM32-master\tools\win\ D:\Program Files\arduino-1.8.9\hardware\Arduino_STM32-master\tools\win>rem: the two line below are needed to fix path issues with incorrect slashes before the bin file name D:\Program Files\arduino-1.8.9\hardware\Arduino_STM32-master\tools\win>set tmpBinFilePath=C:\Users\ADMINI~1\AppData\Local\Temp\arduino_build_204733/rtos_blink.ino.bin D:\Program Files\arduino-1.8.9\hardware\Arduino_STM32-master\tools\win>set tmpBinFilePath=C:\Users\ADMINI~1\AppData\Local\Temp\arduino_build_204733\rtos_blink.ino.bin D:\Program Files\arduino-1.8.9\hardware\Arduino_STM32-master\tools\win>rem: create commander script file with the tmp bin that the Arduino IDE creates D:\Program Files\arduino-1.8.9\hardware\Arduino_STM32-master\tools\win>JLink.exe -device STM32F103C8 -if SWD -speed auto -CommanderScript C:\Users\ADMINI~1\AppData\Local\Temp\arduino_build_204733\rtos_blink.ino.bin.jlink 
'JLink.exe' �����ڲ����ⲿ���Ҳ���ǿ����еij���
�����������
上传项目出错

这里的乱码应该是
'JLink.exe' 不是内部或外部命令,也不是可运行的程序
或批处理文件。

 

分析了一下,
arduino上传(下载)时调用了一个bat,安装目录如D:\Program Files\arduino-1.8.9\hardware\Arduino_STM32-master\tools\win\jlink_upload.bat
bat文件内容如下

rem: @echo off
rem: Note %~dp0 get path of this batch file
rem: Need to change drive if My Documents is on a drive other than C:
set driverLetter=%~dp0
set driverLetter=%driverLetter:~0,2%
%driverLetter%
cd %~dp0
rem: the two line below are needed to fix path issues with incorrect slashes before the bin file name
set tmpBinFilePath=%1
set tmpBinFilePath=%tmpBinFilePath:/=\%rem: create commander script file with the tmp bin that the Arduino IDE creates@echo erase > %tmpbinfilepath%.jlink
@echo loadbin %tmpbinfilepath% , 0x8000000 >> %tmpbinfilepath%.jlink
@echo r >> %tmpbinfilepath%.jlink
@echo q >> %tmpbinfilepath%.jlinkJLink.exe -device STM32F103C8 -if SWD -speed auto -CommanderScript %tmpBinFilePath%.jlink

可见其最后调用了JLink.exe

可是文件夹里并没有这个文件

因为在keil下Jtag模式是正常的,能不能借用keil的下的文件呢?
于是找到安装目录的
D:\Keil_v5\ARM\Segger

 JL2CM3.dll
 JLink.exe
 JLinkARM.dll
 JLTAgdi.dll
将相关的文件拷贝到D:\Program Files\arduino-1.8.9\hardware\Arduino_STM32-master\tools\win,
再执行下载就ok了
我觉得配置一个Path的环境变量也是可以的,让命令找到 JLink.exe的位置

执行结果如下

D:\Program Files\arduino-1.8.9\hardware\Arduino_STM32-master\tools\win>JLink.exe -device STM32F103C8 -if SWD -speed auto -CommanderScript C:\Users\ADMINI~1\AppData\Local\Temp\arduino_build_204733\rtos_blink.ino.bin.jlink
SEGGER J-Link Commander V6.00d (Compiled Jul 29 2016 19:08:27)
DLL version V6.16c, compiled Jun 16 2017 18:14:49Script file read successfully.
Processing script file...J-Link connection not established yet but required for command.
Connecting to J-Link via USB...O.K.
Firmware: J-Link V9 compiled Jun 16 2017 16:15:10
Hardware version: V9.30
S/N: 59300616
License(s): RDI, FlashBP, FlashDL, JFlash, GDB
VTref = 3.369V
Target connection not established yet but required for command.
Device "STM32F103C8" selected.
TotalIRLen = 9, IRPrint = 0x0011
JTAG chain detection found 2 devices:#0 Id: 0x3BA00477, IRLen: 04, CoreSight JTAG-DP#1 Id: 0x16410041, IRLen: 05, STM32 Boundary Scan
TotalIRLen = 9, IRPrint = 0x0011
JTAG chain detection found 2 devices:#0 Id: 0x3BA00477, IRLen: 04, CoreSight JTAG-DP#1 Id: 0x16410041, IRLen: 05, STM32 Boundary Scan
Scanning APs, stopping at first AHB-AP found.
AP[0] IDR: 0x14770011 (AHB-AP)
AHB-AP ROM: 0xE00FF000 (Base addr. of first ROM table)
CPUID reg.: 0x411FC231. Implementer code: 0x41 (ARM)
Found Cortex-M3 r1p1, Little endian.
FPUnit: 6 code (BP) slots and 2 literal slots
CoreSight components:
ROMTbl[0] @ E00FF000
ROMTbl[0][0]: E000E000, CID: B105E00D, PID: 001BB000 SCS
ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 001BB002 DWT
ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB003 FPB
ROMTbl[0][3]: E0000000, CID: B105E00D, PID: 001BB001 ITM
ROMTbl[0][4]: E0040000, CID: B105900D, PID: 001BB923 TPIU-LiteFound SW-DP with ID 0x1BA01477
Found SW-DP with ID 0x1BA01477
Using pre-configured AP[0] as AHB-AP to communicate with core
AHB-AP ROM: 0xE00FF000 (Base addr. of first ROM table)
CPUID reg: 0x411FC231. Implementer code: 0x41 (ARM)
Found Cortex-M3 r1p1, Little endian.
FPUnit: 6 code (BP) slots and 2 literal slots
CoreSight components:
ROMTbl[0] @ E00FF000
ROMTbl[0][0]: E000E000, CID: B105E00D, PID: 001BB000 SCS
ROMTbl[0][1]: E0001000, CID: B105E00D, PID: 001BB002 DWT
ROMTbl[0][2]: E0002000, CID: B105E00D, PID: 000BB003 FPB
ROMTbl[0][3]: E0000000, CID: B105E00D, PID: 001BB001 ITM
ROMTbl[0][4]: E0040000, CID: B105900D, PID: 001BB923 TPIU-Lite
Cortex-M3 identified.
Erasing device (STM32F103C8)...
J-Link: Flash download: Total time needed: 1.699s (Prepare: 0.249s, Compare: 0.000s, Erase: 1.416s, Program: 0.000s, Verify: 0.000s, Restore: 0.033s)
Erasing done.Downloading file [C:\Users\ADMINI~1\AppData\Local\Temp\arduino_build_204733\rtos_blink.ino.bin]...
J-Link: Flash download: Flash programming performed for 1 range (17408 bytes)
J-Link: Flash download: Total time needed: 2.133s (Prepare: 0.481s, Compare: 0.137s, Erase: 0.074s, Program: 1.150s, Verify: 0.004s, Restore: 0.285s)
O.K.Reset delay: 0 ms
Reset type NORMAL: Resets core & peripherals via SYSRESETREQ & VECTRESET bit.
Setting AIRCR.SYSRESETREQScript processing completed.

 

这篇关于STM32F103C8T6在aduino IDE编程使用 jtag模式 下载的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/693902

相关文章

基于 HTML5 Canvas 实现图片旋转与下载功能(完整代码展示)

《基于HTML5Canvas实现图片旋转与下载功能(完整代码展示)》本文将深入剖析一段基于HTML5Canvas的代码,该代码实现了图片的旋转(90度和180度)以及旋转后图片的下载... 目录一、引言二、html 结构分析三、css 样式分析四、JavaScript 功能实现一、引言在 Web 开发中,

SpringBoot中使用Flux实现流式返回的方法小结

《SpringBoot中使用Flux实现流式返回的方法小结》文章介绍流式返回(StreamingResponse)在SpringBoot中通过Flux实现,优势包括提升用户体验、降低内存消耗、支持长连... 目录背景流式返回的核心概念与优势1. 提升用户体验2. 降低内存消耗3. 支持长连接与实时通信在Sp

springboot下载接口限速功能实现

《springboot下载接口限速功能实现》通过Redis统计并发数动态调整每个用户带宽,核心逻辑为每秒读取并发送限定数据量,防止单用户占用过多资源,确保整体下载均衡且高效,本文给大家介绍spring... 目录 一、整体目标 二、涉及的主要类/方法✅ 三、核心流程图解(简化) 四、关键代码详解1️⃣ 设置

python使用库爬取m3u8文件的示例

《python使用库爬取m3u8文件的示例》本文主要介绍了python使用库爬取m3u8文件的示例,可以使用requests、m3u8、ffmpeg等库,实现获取、解析、下载视频片段并合并等步骤,具有... 目录一、准备工作二、获取m3u8文件内容三、解析m3u8文件四、下载视频片段五、合并视频片段六、错误

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

SpringBoot3应用中集成和使用Spring Retry的实践记录

《SpringBoot3应用中集成和使用SpringRetry的实践记录》SpringRetry为SpringBoot3提供重试机制,支持注解和编程式两种方式,可配置重试策略与监听器,适用于临时性故... 目录1. 简介2. 环境准备3. 使用方式3.1 注解方式 基础使用自定义重试策略失败恢复机制注意事项

nginx启动命令和默认配置文件的使用

《nginx启动命令和默认配置文件的使用》:本文主要介绍nginx启动命令和默认配置文件的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录常见命令nginx.conf配置文件location匹配规则图片服务器总结常见命令# 默认配置文件启动./nginx

在Windows上使用qemu安装ubuntu24.04服务器的详细指南

《在Windows上使用qemu安装ubuntu24.04服务器的详细指南》本文介绍了在Windows上使用QEMU安装Ubuntu24.04的全流程:安装QEMU、准备ISO镜像、创建虚拟磁盘、配置... 目录1. 安装QEMU环境2. 准备Ubuntu 24.04镜像3. 启动QEMU安装Ubuntu4

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

Windows下C++使用SQLitede的操作过程

《Windows下C++使用SQLitede的操作过程》本文介绍了Windows下C++使用SQLite的安装配置、CppSQLite库封装优势、核心功能(如数据库连接、事务管理)、跨平台支持及性能优... 目录Windows下C++使用SQLite1、安装2、代码示例CppSQLite:C++轻松操作SQ