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

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

[复制链接]
wolfgang 发布时间:2016-3-24 00:12
本帖最后由 wolfgang2015 于 2018-3-17 12:58 编辑
& [* _! b5 Y% q8 }" Y0 L/ B9 C
/ p7 y/ |; w+ s8 K% a一、实验开始之前" D* X( X$ G6 v' d) M
图片01.jpg ) i: P$ b. A$ K+ f  Y4 ^) ?3 r/ @
4 t* I* q) D- Q8 w' L* x, J
    试验开始之前,非常感谢三创电子举办的“新年抢楼,送板子”活动,有幸获得JLINK、ST-LINK以及STM32F103C8Mini开发板各一块,虽然有散件待焊,常年奋斗在硬件开发的熟手们并非难事,一手烙铁,一手焊锡,不费吹灰之力很快就能将其焊接好。
图片02.jpg
因为J-LINK是 ARM-OB版本,不支持JTAG(其实也不是不支持,亲测该型J-LINK 的JTAG不能提供3.3V供电,对于熟悉JTAG引脚接口的人士,可以飞线或外部供电使用),因此只焊接4个SWD接口即可,不过焊上20PIN的标准JTAG接口也未尝不可,待解决电源供电的引脚后,也能支持通过JTAG下载程序使用了。
二、实验过程7 ~! ~3 d5 Q% h3 O7 T
7 j! P3 O; p  r+ M
3 U2 k8 z" r2 B% v0 g4 d
0、更新ST-LINK固件和JLINK固件
9 @. A. M& Z' A0 U" x  c) {+ _9 a
A、ST-LINK固件升级
   刚拿到的ST-LINK固件版本并非是最新的,能与机器上的ST-LINK驱动完美适配,因此需要使用st-linkv2_upgrade 工具对其进行固件更新。固件更新工具下载地址如下:
STSW-LINK005(https://www.stmcu.org.cn/document/detail/index/id-216344),下载并解压后可以看见蝴蝶的更新程序。
图片03.jpg
- e. l6 I% r/ ^- m3 U: _! f; n
用Mini USB连接ST-LINK后,运行EXE文件,点击DeviceConnect后,可以得到当前固件版本和更新固件版本(因我这里是最后写的调试环境,固版本号始一直的,诸位未升级固件的版本号略有不同),点击Yes后即可更新固件。
图片04.jpg
2 ?! l$ P- _. T) _) U
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

; B8 w( D) b4 h
然后会弹出一个更新固件的对话框,选择 yes 进入更新
图片07.jpg
图片08.jpg
图片09.jpg
  {; Z# @7 j6 S3 O) c
* m, y1 i7 Y% _% `
* r5 C5 C5 L$ _* @' V! z
当看见 new firmware bootedsuccessfully 后,现在固件已经还原为以前较低的版本了。
3)、更新固件
连接上J-LINK后,启动Keil ,启动 “Flash”----〉Configure Flash Tools后,
图片10.jpg

5 W8 C9 b. H1 |) f
选择Debug标签页,在Use下拉框中选择 J-LINK后点击Settings。
图片11.jpg
  X  L& ?) ^* W  j' M1 S
在弹出配置菜单后提示后,提示有固件更新的对话框,点击“是”。
图片12.jpg
系统会根据当前的J-LINK驱动自动监测并更新J-LINK固件。
图片13.jpg

8 Q( ^2 B" s, O( b) `5 |' c
更新固件后,J-LINK配置窗口显示出了相关的配置信息,选择SW调试方式后,一切准备工作就做好了。
图片14.jpg
9 T! O- K9 h5 B2 r; _
* t% M4 J) R6 r- l9 s% d; T
1、使用CubeMX辅助创建STM32F103C8 Mini开发板源代码
* a% b$ \  C  P4 x/ K 图片15.jpg
7 G% w2 y2 t; x# e9 Y" g
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

8 c* r0 r" R0 o" e' o! l
选择Project,点击Project Settings。选择项目的保存目录和项目名称,并选择IDE的(这里选择MDK-ARM V5),选好后点击OK,如下图:
图片21.jpg
参数选择好后就创建代码,Project--->GenerateCode
图片22.jpg

  ]/ `* j& b1 W6 |- l$ M
在创建源代码进度条完成后,弹出代码成功创建的对话框,点击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 */
   
...........
    8 y7 V2 a9 @2 a8 d
   
5 v: W) P4 @. g
        
.............
   
     /* USER CODE BEGIN 3 */
   
                   LED_Glisten();
   
............
   
9 @! ~" q' u2 @0 F' p/ u7 S   
/* USER CODE BEGIN 4 */
   
void LED_Glisten() {
   
         LED(sta);
   
         sta    = !sta;
   
         HAL_Delay(delay);
   
}
   
/* USER CODE END 4 */
   
& g2 g" V* L" m   
  
- J, L" B6 @5 x/ \

- U, D1 J& D2 q0 t
在INC目录中新增一个main.h文件
+ c: V" ~: F% B1 @
        
#ifndef MAIN_H_
   
#define MAIN_H_
    ) n$ l9 t1 O' s  ?1 t( I
   
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
   
};
    ) \2 i& s+ }/ _; V0 H; _/ E
   
#define ON   1      
   
#define OFF  0      
   
9 U4 v- l4 ]9 z; G; w% a1 B" b+ _   
#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)
   
! m8 f$ U* c, k! }3 B5 A   
#endif
    2 @7 V% k+ t- Q% k4 k) i5 H3 S: o
   
  
3 i0 {* @- ~  q9 q$ {+ o4 A8 P
6 k; e5 @. U) I/ N! G1 \: A
这样一个LED闪亮的程序就制作好了,经过编译后就能下载到MINI开发板中了。
2、ST-LINK 与STM32F103C8 Mini开发板连接
用跳线冒将Boot0和Boot1都连接到0条线柱上(接地),使用ST-LINK与F103C8Mini连接,连接方式如下图:
图片24.jpg

$ _( u8 [/ C7 T' q( y
上图20PIN接口三角标识的是第一脚,Reset和TDO引脚是可选连接,连接好后,打开"STM32 ST-LINK Utility"软件,在点击Target---〉Connect连接后,显示如下图:
图片25.jpg

" \( z/ J/ V1 k) o3 Y$ C* J# {2 M
这样就能通过ST-LINK擦除MINI开发板上的程序,给开发板下载程序了~~~~,当然ST-LINK的用法不仅如此,在KEIL软件中,可以通过ST-LINK进行联机调试。连接上ST-LINK后,启动Keil ,启动 “Flash”----〉Configure Flash Tools后。选择Debug标签页,在Use下拉框中选择 ST-LINK后点击Settings。
图片26.jpg
4 ~" ]* p2 X' F0 k2 o) O( R1 f
选择Ort为SW,点击确定,这时就可以使用ST-LINK调试代码了。
图片27.jpg
2 B3 [3 f$ C/ G* P6 T
选择Debug---〉Start/Stop Debug Session 对前面小节中编写的代码进行调试。
图片28.jpg
# `& _5 B) S5 T# v0 o  X

! O; ~+ D7 |1 ^& g( \. m3、JLINK 与STM32F103C8 Mini开发板连接
用跳线冒将Boot0和Boot1都连接到0条线柱上(接地),使用J-LINK与F103C8Mini连接,连接方式如下图:  
修正.jpg
6 q3 D  F, h) R# t+ o% [
  上图20PIN接口三角标识的是第一脚,使用的J-LINK ARM-OB 的SWO方式与MINI开发板连接。连接好后,打开MDK软件,选择Debug标签页,在Use下拉框中选择J-LINK后点击Settings。
图片30.jpg
) ^/ C) I- A0 i* @' }) C2 m
选择Ort为SW,点击确定,这时就可以使用J-LINK调试代码了。
图片31.jpg

  y* w: c" A" y7 ~- [0 `0 [7 M
选择Debug---〉Start/Stop Debug Session 对前面小节中编写的代码进行调试。
图片32.jpg

2 E7 b0 g* E8 Q* z4、ISP与STM32F103C8 Mini开发板连接
使用ST-LINK和J-LINK都需要芯片的Boot0和Boot1置于低点平。除此之外,还有从SRAM启动和系统存储器启动的方式,详细设置如下表:
: H1 C( V! W+ |
  
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

, e/ o1 s; A  _9 l8 R* i% _6 W" b1 k5 u. H: }# N- |
设置好BOOT0、Boo1条线帽后(并非下图照片中的设置),用下图连接方法来连接一个USB转TTL串口的工具(如:CH340G等芯片工具)。
图片34.jpg
8 t8 }) V5 ?- D7 V8 F
到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

! l" s- x/ O& V6 N+ [4 |$ e  k3 R
做好Boot0=1,Boot1=0准备,用串口TTL连接到MINI主板的准备工作后,连接USB,并启动Demonstrator GUI 软件。
图片36.jpg
$ t  q; w! [7 A0 I: c0 q& o, ^
在PortName的下拉框中选择正确CH340G工具所在的端口号后,点击下一步;
图片37.jpg

, G7 t: [! N% H& w: F
当出现“Targetis readable.....”时,代表已经于MINI开发板芯片连接上了,点击下一步;
图片38.jpg

! Y9 `  U: C0 S
这里就通过软件读取到MINI开发板的上STM32F103C8芯片内部的Flash信息,每个Flash块大小1K,Page0到Page63总共64个块区(地址0x0800,0000~0x0800,FFFF)。点击下一步;
图片39.jpg

' q5 q) l9 N4 `  l: w
这里我们可以进行Flash擦除;或者下载HEX文件到Flash中进行程序更新;或者更新设备中的文件;或者进行保护设置;或编辑Flash的字节信息等功能。
+ s* [: `' r& T3 [9 K; e  I5 {; l6 a$ L
三、实验后的心得    ; L3 Z" k) V; K. [7 x2 K. a5 J

, j2 y, `0 q% u( N) d; Y

/ u1 z4 q5 Y0 r/ E6 I! P在本文的试验里,介绍了3种基本与开发板的链接方式,分别是ST-LINK、J-LINK以及TTL串口的ISP方式连接。通过这三种方式,在项目研发、产品设计时,就能通过开发工具实现软件开发、程序调试等工作,以便对芯片内部或电路板上各种硬件资源进行操作;在某些产品设计中,还需要将这些接口预留出来便于软件下载与升级。* z% g+ d( |1 G4 y0 ~

! o& l7 O4 t7 c% n- D9 g5 d0 l1 G2 I本文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分享. ?( g: l2 ?5 ~# Z: F
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

* q8 n( r- F0 R1 O多谢分享。。。
风子 回答时间:2016-3-24 09:28:19
很详细  
wolfgang 回答时间:2016-3-24 09:32:15
Tcreat 发表于 2016-3-24 08:39) K3 j+ k1 x. z9 V! J( ?: x5 e
首先声明   JLINK OB是支持JTAG的   而且我做的那个JLINK的JTAG也是可用的,JTAG的3V引脚不提供电源, ...
  [+ Y& M" S8 @2 `. c
不好意思,市面上的大多数J-LINK不支持JTAG。. n; M: K% [6 s0 h# D  ^  p+ s$ w0 k0 w
能否提供一下操作说明或注意事项,对此进行改进。
2 |7 I( ]5 H- Y  H( u
wujianwei3980-5 回答时间:2016-3-24 11:23:43
多谢楼主分享。。。。。。。。。。
wolfgang 回答时间:2016-3-24 11:46:57
Tcreat 发表于 2016-3-24 08:39% d& x  n8 r- J/ v/ [' N
首先声明   JLINK OB是支持JTAG的   而且我做的那个JLINK的JTAG也是可用的,JTAG的3V引脚不提供电源, ...
8 B# ~& w4 `) X0 A* R8 h
文档已更新~~
肽宰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管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版