你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【2016跨年抢楼活动】STM32F103C8 Demo Board试验心得 精华

[复制链接]
wolfgang 发布时间:2016-3-24 00:12
本帖最后由 wolfgang2015 于 2018-3-17 12:58 编辑 5 P" \5 y, h1 H) v' O3 G

2 [5 H$ W8 `' S: N一、实验开始之前
7 E: \( N( X& F" o$ V1 E; t 图片01.jpg
  w& U; a' [* F: A
8 n2 Q% u' T1 y5 l* }0 Z
    试验开始之前,非常感谢三创电子举办的“新年抢楼,送板子”活动,有幸获得JLINK、ST-LINK以及STM32F103C8Mini开发板各一块,虽然有散件待焊,常年奋斗在硬件开发的熟手们并非难事,一手烙铁,一手焊锡,不费吹灰之力很快就能将其焊接好。
图片02.jpg
因为J-LINK是 ARM-OB版本,不支持JTAG(其实也不是不支持,亲测该型J-LINK 的JTAG不能提供3.3V供电,对于熟悉JTAG引脚接口的人士,可以飞线或外部供电使用),因此只焊接4个SWD接口即可,不过焊上20PIN的标准JTAG接口也未尝不可,待解决电源供电的引脚后,也能支持通过JTAG下载程序使用了。
二、实验过程
8 `2 \# Z$ G3 x; j
# q, x, [" q( o  R  l! v

* F) `/ ?9 Z* n; y0、更新ST-LINK固件和JLINK固件
6 g. \6 k, K7 t3 Z5 Y
A、ST-LINK固件升级
   刚拿到的ST-LINK固件版本并非是最新的,能与机器上的ST-LINK驱动完美适配,因此需要使用st-linkv2_upgrade 工具对其进行固件更新。固件更新工具下载地址如下:
STSW-LINK005(https://www.stmcu.org.cn/document/detail/index/id-216344),下载并解压后可以看见蝴蝶的更新程序。
图片03.jpg

- n, t) X0 G( H. h8 P
用Mini USB连接ST-LINK后,运行EXE文件,点击DeviceConnect后,可以得到当前固件版本和更新固件版本(因我这里是最后写的调试环境,固版本号始一直的,诸位未升级固件的版本号略有不同),点击Yes后即可更新固件。
图片04.jpg

- O7 N4 o6 M; q0 J/ a6 c
B、J-LINK ARM OB固件升级
1)、下载J-LINK驱动
打开segger管网(http://www.segger.com/
图片05.jpg
找到行栏中找到 Older versions(链接:http://www.segger.com/j-link-older-versions.html),在历史版本中找一个与您当前使用的Keil版本和JLINK兼容的版本(比如:4.92链接:http://www.segger.com/jlink-software.html?step=1&file=JLink_492
下载后安装很简单,可以通过下一步、下一步安装到系统中。若已经安装有J-LINK驱动的可以跳过这步,直接升级固件。
2)、恢复到一个低版本的J-LINK固件
  驱动下载并按转好后,使用Mini USB连接。J-LINK OB固件恢复出厂设置,打开“开始”菜单--〉“SEGGER” ---〉<版本号>---〉“J-LinkCommander”,并输入 exec  invalidateFw(手动降级命令)如下图:
图片06.jpg

7 d3 t9 T( ~5 q& F& g  E- a0 a  B. _
然后会弹出一个更新固件的对话框,选择 yes 进入更新
图片07.jpg
图片08.jpg
图片09.jpg

0 l, m- c# m: m- D
0 }) n3 S% u' k2 |& P& H
( f2 A, C4 p2 g& Q4 W
当看见 new firmware bootedsuccessfully 后,现在固件已经还原为以前较低的版本了。
3)、更新固件
连接上J-LINK后,启动Keil ,启动 “Flash”----〉Configure Flash Tools后,
图片10.jpg

0 I% T* V" i- G3 R) }
选择Debug标签页,在Use下拉框中选择 J-LINK后点击Settings。
图片11.jpg
) B* e7 t/ w+ a+ A8 n+ \% w& X9 u# ]
在弹出配置菜单后提示后,提示有固件更新的对话框,点击“是”。
图片12.jpg
系统会根据当前的J-LINK驱动自动监测并更新J-LINK固件。
图片13.jpg
4 N: d" ]; v$ u, M! ]) O
更新固件后,J-LINK配置窗口显示出了相关的配置信息,选择SW调试方式后,一切准备工作就做好了。
图片14.jpg
8 i5 z- O) C. p: Z
0 N5 j! j; K7 n# X* d9 R
1、使用CubeMX辅助创建STM32F103C8 Mini开发板源代码3 ]4 A) B6 n- i* y( Q8 @
图片15.jpg
( }- W% V1 N1 r: F6 B# Q+ P
Mini开发板上有一个PC13引脚连接的LED灯,用CubeMX创建一个STM32F103C8Mini开发板的工程。MCU选择 STM32F103C8Tx的芯片。
图片16.jpg
选择好后点击OK。界面中出现了芯片的引脚的分布图。
图片17.jpg
选择左上角的PC13,在下拉菜单中选择GPIO_Output。
图片18.jpg
选择SYS节点,Debug,选择Trace-Asynchronous_SW选项。
图片19.jpg
第二页时钟配置默认,第三页Configuration,选择GPIO按钮,在弹出菜单中选中列表中的PC13,编辑下方的PC13配置参数,点击OK。
图片20.jpg
# E# b$ L7 n7 ^1 m! r; |6 ~. h
选择Project,点击Project Settings。选择项目的保存目录和项目名称,并选择IDE的(这里选择MDK-ARM V5),选好后点击OK,如下图:
图片21.jpg
参数选择好后就创建代码,Project--->GenerateCode
图片22.jpg
( |* |& D" }0 R* j( J
在创建源代码进度条完成后,弹出代码成功创建的对话框,点击OpenProject用MDK程序打开项目。
图片23.jpg
  打开项目后,在Main.c文件中增加下列内容:
        
.......
   
/* USER CODE BEGIN Includes */
   
#include "main.h"
   
......
   
/* USER CODE BEGIN 0 */
   
uint8_t sta = ON;
   
static enum Enum_Delay delay =    Delay_512;
   
void LED_Glisten();
   
/* USER CODE END 0 */
   
...........
   
+ X# D2 j4 A, b0 ~   

6 q2 m# [1 N5 [
        
.............
   
     /* USER CODE BEGIN 3 */
   
                   LED_Glisten();
   
............
    6 s, @1 ~% B* Y
   
/* USER CODE BEGIN 4 */
   
void LED_Glisten() {
   
         LED(sta);
   
         sta    = !sta;
   
         HAL_Delay(delay);
   
}
   
/* USER CODE END 4 */
   
7 K" I& |; _( r7 H/ [* C$ ]) T) D   
   4 s8 h! }; m! p& X! d& v9 Z

& u6 D1 o& t- P# l0 y8 K. e
在INC目录中新增一个main.h文件
* s9 P# C! }: s0 t4 l/ W
        
#ifndef MAIN_H_
   
#define MAIN_H_
    0 k% v6 o5 Z& H
   
enum Enum_Delay {
   
         Delay_512    = 512,
   
         Delay_256    = 256,
   
         Delay_128    = 128,
   
         Delay_64    = 64,
   
         Delay_32    = 32,
   
         Delay_16    = 16,
   
         Delay_8    = 8,
   
         Delay_4    = 4,
   
         Delay_2    = 2,
   
         Delay_1    = 1,
   
         Delay_0    = 0
   
};
    % G. A, m8 t! r$ J: H6 q: z( |
   
#define ON   1      
   
#define OFF  0      
   
* p& m" j! q( @) `1 E   
#define LED(STA)  (STA)?HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_SET):HAL_GPIO_WritePin(LED_GPIO_Port,LED_Pin,GPIO_PIN_RESET)
    : s4 N5 `9 ]" j8 V2 F# I' z* Q
   
#endif
   
6 D! \* g' _+ o2 s5 k, j; ^) x   
  
" k9 _- T; g# F3 o4 d5 J' i
/ k0 c& h# ~* Q6 a
这样一个LED闪亮的程序就制作好了,经过编译后就能下载到MINI开发板中了。
2、ST-LINK 与STM32F103C8 Mini开发板连接
用跳线冒将Boot0和Boot1都连接到0条线柱上(接地),使用ST-LINK与F103C8Mini连接,连接方式如下图:
图片24.jpg

! k' f1 I: d! k
上图20PIN接口三角标识的是第一脚,Reset和TDO引脚是可选连接,连接好后,打开"STM32 ST-LINK Utility"软件,在点击Target---〉Connect连接后,显示如下图:
图片25.jpg
1 P2 A/ u$ I0 ~' @! R/ ^
这样就能通过ST-LINK擦除MINI开发板上的程序,给开发板下载程序了~~~~,当然ST-LINK的用法不仅如此,在KEIL软件中,可以通过ST-LINK进行联机调试。连接上ST-LINK后,启动Keil ,启动 “Flash”----〉Configure Flash Tools后。选择Debug标签页,在Use下拉框中选择 ST-LINK后点击Settings。
图片26.jpg
7 A) ~1 v3 I& x1 Y! a
选择Ort为SW,点击确定,这时就可以使用ST-LINK调试代码了。
图片27.jpg

5 Q3 H5 F6 W  P" i9 c
选择Debug---〉Start/Stop Debug Session 对前面小节中编写的代码进行调试。
图片28.jpg

% A; q5 P+ x& x' i# x: L
5 H. W( s" R; c7 [. A+ u$ I3、JLINK 与STM32F103C8 Mini开发板连接
用跳线冒将Boot0和Boot1都连接到0条线柱上(接地),使用J-LINK与F103C8Mini连接,连接方式如下图:  
修正.jpg

4 k' `$ t6 S4 C! \, m& @
  上图20PIN接口三角标识的是第一脚,使用的J-LINK ARM-OB 的SWO方式与MINI开发板连接。连接好后,打开MDK软件,选择Debug标签页,在Use下拉框中选择J-LINK后点击Settings。
图片30.jpg
7 e- ^, @  R9 Q
选择Ort为SW,点击确定,这时就可以使用J-LINK调试代码了。
图片31.jpg

/ L4 q% J0 C1 o0 m
选择Debug---〉Start/Stop Debug Session 对前面小节中编写的代码进行调试。
图片32.jpg

7 w$ ]2 L4 k9 r9 [6 M* T4、ISP与STM32F103C8 Mini开发板连接
使用ST-LINK和J-LINK都需要芯片的Boot0和Boot1置于低点平。除此之外,还有从SRAM启动和系统存储器启动的方式,详细设置如下表:

$ G: g* I. v: q% ~2 u2 |% [; ]
  
STM32三种启动模式对应的存储介质均是芯片内置的,它们是:
  
用户闪存
BOOT0=0,BOOT1=x
芯片内置的Flash,即主存储器Flash
SRAM:
BOOT0=1,BOOT1=1
芯片内置的SRAM 区,就是内存啦
系统存储器:
BOOT0=1,BOOT1=0
芯片内部一块特定的区域,叫做系统存储器。芯片出厂时在这个区域预置了一段Bootloader,就是通常说的ISP程序。这个区域的内容在芯片出厂后没有人能够修改或擦除,即它是一个ROM 区。
我们可以设置Boot0为高点平, Boot1为低点平使用ISP来连接开发板,Boot0、Boot1如下图所示:
图片33.jpg
( ]5 }6 b: `# j. b
( }; O. A  y) g* K; Q1 C, Q1 Z
设置好BOOT0、Boo1条线帽后(并非下图照片中的设置),用下图连接方法来连接一个USB转TTL串口的工具(如:CH340G等芯片工具)。
图片34.jpg

4 U" p7 _" Q5 V- ]1 \0 ^8 u. b. a" v
https://www.stmcu.org.cn/网站下载《STM32和STM8 FlashLoader演示程序:stsw-mcu005》(链接:https://www.stmcu.org.cn/document/detail/index/id-216326),安装后在开始菜单中会出现FlashLoader目录,DemonstratorGUI 工具是官方提供的ISP工具。
图片35.jpg

9 d8 n4 F9 p" s( U7 T# Q' g
做好Boot0=1,Boot1=0准备,用串口TTL连接到MINI主板的准备工作后,连接USB,并启动Demonstrator GUI 软件。
图片36.jpg
' L, r1 d* R6 p  D4 `
在PortName的下拉框中选择正确CH340G工具所在的端口号后,点击下一步;
图片37.jpg

! C+ k3 _4 t: L9 ]
当出现“Targetis readable.....”时,代表已经于MINI开发板芯片连接上了,点击下一步;
图片38.jpg
4 v+ j6 u' Y+ z) z* C
这里就通过软件读取到MINI开发板的上STM32F103C8芯片内部的Flash信息,每个Flash块大小1K,Page0到Page63总共64个块区(地址0x0800,0000~0x0800,FFFF)。点击下一步;
图片39.jpg
6 |+ q2 f+ V% C5 a! X2 E1 `3 s
这里我们可以进行Flash擦除;或者下载HEX文件到Flash中进行程序更新;或者更新设备中的文件;或者进行保护设置;或编辑Flash的字节信息等功能。

! H* T7 {3 `/ ~& d; u; K0 p! D三、实验后的心得    5 s( F! i( ~" S# o9 y
4 E" n4 A1 r8 b" {5 R& B* }
8 l! d+ i: M3 Q4 @3 n
在本文的试验里,介绍了3种基本与开发板的链接方式,分别是ST-LINK、J-LINK以及TTL串口的ISP方式连接。通过这三种方式,在项目研发、产品设计时,就能通过开发工具实现软件开发、程序调试等工作,以便对芯片内部或电路板上各种硬件资源进行操作;在某些产品设计中,还需要将这些接口预留出来便于软件下载与升级。  y% M& I- @; f8 x, S, B/ n
, @7 b: X; H: q* Q+ `" `6 f) E* k
本文PDF文档下载: 6、STM32F103C8 Demo Board试验心得.pdf (2.18 MB, 下载次数: 17)
收藏 5 评论14 发布时间:2016-3-24 00:12

举报

14个回答
zhangdaijin 回答时间:2016-3-24 07:18:04
谢谢LZ分享; l7 N% I; T& j! g) X! O( R) D$ n4 k
Tcreat 回答时间:2016-3-24 08:39:22
首先声明   JLINK OB是支持JTAG的   而且我做的那个JLINK的JTAG也是可用的,JTAG的3V引脚不提供电源,所以板子务必自己供电才行~~
lisingch 回答时间:2016-3-24 09:20:44
谢谢分享!
Paderboy 回答时间:2016-3-24 09:25:25

" H, g: E, B) F# n  I1 N多谢分享。。。
风子 回答时间:2016-3-24 09:28:19
很详细  
wolfgang 回答时间:2016-3-24 09:32:15
Tcreat 发表于 2016-3-24 08:395 }+ \. M7 H$ V/ w8 G
首先声明   JLINK OB是支持JTAG的   而且我做的那个JLINK的JTAG也是可用的,JTAG的3V引脚不提供电源, ...
% T* @! Y5 J1 ]( ?
不好意思,市面上的大多数J-LINK不支持JTAG。
+ q: c8 K. O2 X$ W2 c% E  e3 A4 T. H7 t能否提供一下操作说明或注意事项,对此进行改进。
) M" s* V( m$ E4 C
wujianwei3980-5 回答时间:2016-3-24 11:23:43
多谢楼主分享。。。。。。。。。。
wolfgang 回答时间:2016-3-24 11:46:57
Tcreat 发表于 2016-3-24 08:39
- G7 O/ V% Q, |! C1 A2 K1 s3 N5 r首先声明   JLINK OB是支持JTAG的   而且我做的那个JLINK的JTAG也是可用的,JTAG的3V引脚不提供电源, ...
$ v! V+ z' {! l7 z' D6 ~& X% ?
文档已更新~~
肽宰1 回答时间:2016-3-24 12:00:26
天使与魔鬼 回答时间:2016-3-29 22:33:12
可以申请开发板吗?
落月枫情 回答时间:2016-4-2 09:26:37
多谢分享
HONGYEALINK0 回答时间:2016-4-12 10:13:53
多谢分享
delamu 回答时间:2017-7-28 18:46:21
谢谢分享,学习学习
wolfgang 回答时间:2018-3-17 12:59:04
图:3、JLINK 与STM32F103C8 Mini开发板连接  已修正

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版