: P6 y4 }3 L, i5 V/ }6 i. ^/ g0 L$ b$ j
' k# l! m7 ~8 ], K6 L
0 @- r8 e0 b8 ^+ R- ]6 X
写在前面:0 W; d5 x6 V2 P4 l* T
0.好久不发帖子,排版略渣
$ B+ g! C9 G% B( [# A) }' G, b1.编译是可以成功的,但不保证不同环境及设置所造成差异
% N6 u; x- l* t3 j6 B6 F$ i1 c2.只是编译通过,库本身是否有bug属于未知问题.
/ ^6 s( [. W# q$ [4 D, J. [8 _1 G. Y$ C E- ]# B G
& f4 M% r9 Q4 c) v1 x仓库简介:
3 ^% L( \% H0 s; u t! dSTMicroelectronics STlinkv2 programmer library and tools
0 N% A% Y2 @, q, I(具体可到web页面上自己看 http://github.com/xor-gate/stlink2)+ J' O4 h6 b2 l" ]/ j, @5 L" F
这个就不多说的,代码不是我写的.
3 ^( ]( I, {( |( n t
8 y& U* `) A, T/ I
9 r E1 n+ N$ `" m1 |/ L) hwindows环境编译心得及步骤:
- h! w3 l/ @7 s: [) E' K1.搭建msys2环境。
& ]( Y6 v% U7 X# y# |[仅mingw可能就够用了,不过考虑到源码用到cmake,有个shell命令行开发环境,是相当有必要的]/ r6 b2 Z% b' z. F' J
下载 msys2安装包(我用的是msys2-x86_64-20161025.exe) ! b. ~$ Q% m* A" y5 |
ref:
3 W+ n9 k( n" c, `8 v! _http://sourceforge.net/projects/msys2/files/Base/i686/ ) i2 } ^" j' P
http://www.msys2.org/
" e( A& C% h. v# G. n- x1 F印象中这个是要windows 64位操作系统才支持的。% x7 R, ^$ d) r2 c
安装步骤略...,就是一路点下去,设个安装路径.
: A5 S8 }: I& x* n9 `, @启动过后用pacman安装必要的工具,这个不是本贴重点,暂略...
* z/ X; [' D+ U7 M, A0 v7 T具体可以百度google,网络不行pacman的源也可以修改,baidu吧.
) }. m A# ]8 m5 _" U8 Z# H+ q) a9 B' t9 g! i
2.编译libusb8 Q2 q9 W2 a8 \) E3 V, s: B
下载libusb-1.0源码
8 Q8 B: p" ?$ l8 h, J[参:http://sourceforge.net/projects/libusb/files/libusb-1.0/]
2 \! [# f% w0 N3 K% E. G' x% U子版本号应该不是重点2 j- l! F! B+ ?1 g. A
这个编译很简单,编译步骤:
, _ v X' a/ O* |4 O" r8 n5 z- 解压
- msys2进入相应目录下
- ./configure
- make
6 g) j' b$ r# n
1 q) c i9 m; q如果成功,在libusb/.libs目录下生成libusb的静态库和动态库.这是我们需要的。
1 D2 J' G7 }7 k: g- r! V8 ?- zlibusb/下的头文件也用的到.
4 N2 U5 i/ ?; v( {' x) _/ o% ?; [4 ?. ]6 j0 z
几点说明:
, `! r/ a% _; Q* \8 _[注1:可以make install,但并非必要]
* h0 P' Z) }# S, R[注2:可以指定安装路径,也非必要 ./configure --help 查看帮助]4 z/ S9 T7 T! y
% H. c5 P2 ?- H: M
3.编译stlink2
' ?0 T: O: V0 E* w, \( R下载源码:
& ?( N8 I |1 Y ]git clone http://github.com/xor-gate/stlink2
3 i5 V/ `& n$ F! ^) F如果msys2不想安装git,web页面下载压缩包,然后解压过去,效果是一样的。
% p; D3 \( _/ n进入stlink目录,打开README.md...先看一看... + z+ ]( F% R$ N; Y2 v V
这是个好习惯
, q0 t+ T! J( R: `/ w5 M2 f所有设置都正确,执行make debug即可开始编译。
: k) s* }1 O( [% S6 B8 o( l由于现在什么也没做,不出意外,是编不过的。9 n2 B) W5 r( c4 f# E: ?
make release应该差不多,先不考虑。0 c4 F1 F0 E7 ^, A% p' s2 D8 d% Y
根据出错提示进行修改,修改过后,执行:) \5 W d5 U6 F3 r1 ~1 m
make clean
/ s/ O! m3 _- m6 c. I/ u& y( e& \make debug, R' n9 T/ _& m w5 E' A
修改方法:
+ x5 f( \1 Y5 B6 G0 @* \/ v* D1.提示缺少工具
- d, L4 r% k ]* V比如没装gcc,没装cmake,没装make。。。那么安装一个..,反正少啥就装啥...
* }9 w. G# _! h; U5 N! t
+ y. c9 s3 P- y0 @! u8 y2.提示:& k/ ~) v7 x3 W- \6 t- O" w3 f9 o3 U1 c) k
System is unknown to cmake, create:, N: y/ L L( j8 T- d% ? A* P
Platform/MINGW32_NT-6.1 to use this system, please send your config file to cmake@www.cmake.org so
* t/ k: S, j5 z+ f" W修改顶层MakeFile[line 49 - 51] (贴出来tab键咋没了 )& j" m/ ?7 g. S4 K/ E+ j. s5 j, ]
- build/Debug:/ a: Z( A, S* d7 h$ y
- @mkdir -p $@
) P0 \. ^( u# Y! ]- r - @cd $@ && cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_SYSTEM_NAME=Generic ../../
复制代码 release先不考虑...2 {+ C2 h$ x, g. a; R6 b; @6 t
7 Q: z' G' Q+ [# i0 B: c3.提示LIBUSB_INCLUDE_DIR LIBUSB_LIBRARY 出错
, u4 A3 o0 C5 [! o! f& a这是因为cmake找不到libusb库,可以手动设置下:
4 J7 Y5 U6 m1 ?6 }8 L4 h/ Y) S修改cmake/Find7Zip.cmake7 E& u% v; E3 O0 y. v9 ]& b8 J4 y! J( h
set (LIBUSB_INCLUDE_DIR [这儿填路径,中括号删掉])% z8 x0 @* _8 G" m5 q" I
set (LIBUSB_LIBRARY [这儿填路径,中括号删掉])& D0 M# ]+ e @& r4 W* ^
LIBUSB_LIBRARY 指向 你的libusb-1.0.a的路径
3 U" ^* n* h' ]) dLIBUSB_INCLUDE_DIR 应该也可以随便设,自己把libusb的.h copy过来$ r- v& a& G3 J1 `
# v0 i4 X T8 N4.缺少头文件
# \* Y3 r' n, Z+ k' A反正都能找的到...注意下 include <>与“”的差别+ v( w$ u4 v9 u/ J" R
% @( e7 j% S1 l1 |( |6 Q
附上编译成功的输出信息:
) |! g G4 s; ~0 d ~) q* `' s- admin@admin-PC MINGW32 ~/workspace/STLINKALL/stlink2
# l% w# t: X4 F3 C( \ - $ make debug, n( d9 s$ X$ y* e, a& E* B1 L
- -- The C compiler identification is GNU 5.3.06 j! Q9 r! T9 K9 I* B4 N/ n
- -- Check for working C compiler: /usr/bin/cc.exe
8 t* C1 H9 Z; b- E! C @9 v - -- Check for working C compiler: /usr/bin/cc.exe -- works
0 m2 [4 u) m. N* [ - -- Detecting C compiler ABI info# i: H" h; o: s* ]' c
- -- Detecting C compiler ABI info - done
3 [, y) v2 |/ Y" E6 z( [- F) E - -- Detecting C compile features, ^1 R8 \: W) U
- -- Detecting C compile features - done& p( E, Q3 R3 `" `* Z7 x
- -- stlink2 version: 0.1.0-dev
% r+ e( T( g$ ?6 X - -- Major 0 Minor 1 Patch 0$ p% d3 w) ]5 h. _
- -- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE)$ u& M3 k5 N$ m, d; L6 f. j0 o
- CMake Warning (dev) at cmake/Doxygen.txt:27 (message): U7 M' r) F9 E1 |: k) l
- Doxygen is needed to build the documentation.
$ A0 Z' c% H, L - Call Stack (most recent call first):
7 \$ ?$ w" H/ @6 w0 m- i! b* }$ T - CMakeLists.txt:19 (include)1 D3 V6 X! z+ B2 k# g5 J5 E" S
- This warning is for project developers. Use -Wno-dev to suppress it.6 u2 M4 n! G. C/ z4 y3 `" D
4 R3 x! S; @' \% Z. C* N- -- Performing Test C_SUPPORTS_STD_C99
; \7 O' u9 G6 [: o - -- Performing Test C_SUPPORTS_STD_C99 - Success
0 ]: H& _5 z3 \) @. |2 [3 { - -- Performing Test C_SUPPORTS_WEXTRA
0 ~/ ~: P8 m2 D - -- Performing Test C_SUPPORTS_WEXTRA - Success
% x: q- ^3 o. ]' P- b - -- Performing Test C_SUPPORTS_WSHADOW7 R5 A' S! [ ~3 ~2 W8 C7 `
- -- Performing Test C_SUPPORTS_WSHADOW - Success! t& m3 I: I3 {2 H9 C
- -- Performing Test C_SUPPORTS_D_FORTIFY_SOURCE_2
& N& O3 J- j( w& L- S$ M. N0 M - -- Performing Test C_SUPPORTS_D_FORTIFY_SOURCE_2 - Success. V: x' {" b" ~, b# d B7 h; o
- -- Performing Test C_SUPPORTS_FSTRICT_ALIASING
1 g% d9 X5 Z! r* `0 h - -- Performing Test C_SUPPORTS_FSTRICT_ALIASING - Success
; q; j5 j; x+ E" b1 O8 [ - -- Performing Test C_SUPPORTS_WFORMAT
/ K6 F7 E( M* C$ P8 ~9 M" a! x8 a - -- Performing Test C_SUPPORTS_WFORMAT - Success
4 y4 S4 q* r* f' ^; c - -- Performing Test C_SUPPORTS_WFORMAT_SECURITY9 ]. U/ b$ v0 A- E. R P8 \) l. j
- -- Performing Test C_SUPPORTS_WFORMAT_SECURITY - Success
& O9 s. P* @ \% w, W - -- Performing Test C_SUPPORTS_WMAYBE_UNINITIALIZED
/ P% Q% x0 S* m$ P# j) N - -- Performing Test C_SUPPORTS_WMAYBE_UNINITIALIZED - Success
! P" {: T i( A$ j2 \7 [ - -- Performing Test C_SUPPORTS_WMISSING_VARIABLE_DECLARATIONS6 k# Q' X! P! s* G3 ?
- -- Performing Test C_SUPPORTS_WMISSING_VARIABLE_DECLARATIONS - Failed0 T1 A& j# d, f2 d6 g; o9 y
- -- Performing Test C_SUPPORTS_WSHORTEN_64_TO_32
8 Q- g$ k, O$ o - -- Performing Test C_SUPPORTS_WSHORTEN_64_TO_32 - Failed+ X1 J- h8 K! s, D( \% [
- -- Performing Test C_SUPPORTS_WIMPLICIT_FUNCTION_DECLARATION0 E+ [4 e/ L# u) v
- -- Performing Test C_SUPPORTS_WIMPLICIT_FUNCTION_DECLARATION - Success) N& z* ?3 A% z/ o, n$ L
- -- Performing Test C_SUPPORTS_WREDUNDANT_DECLS
9 Y7 d4 e" l4 k w m1 P- N - -- Performing Test C_SUPPORTS_WREDUNDANT_DECLS - Success
- T' ]/ S: r, e1 k0 L: r+ ~ - -- Performing Test C_SUPPORTS_WUNDEF; _' j2 A8 r2 V ]/ E$ A6 _
- -- Performing Test C_SUPPORTS_WUNDEF - Success
4 W; v, S* Y# H5 T$ e- V6 |$ ? - -- Performing Test C_SUPPORTS_WSWITCH
- X E( T7 Q3 J4 [( t% S% j$ ]( M0 E - -- Performing Test C_SUPPORTS_WSWITCH - Success: @' I7 R, A) `
- -- Performing Test C_SUPPORTS_WFLOAT_EQUAL; t, {4 M* }( z. E! s2 X7 u
- -- Performing Test C_SUPPORTS_WFLOAT_EQUAL - Success
+ r% J! P( W' R- v - -- Check if the system is big endian: q n/ v. Y' C& A! a/ y2 [
- -- Searching 16 bit integer$ r8 P1 H- t2 I& q$ T6 j+ T
- -- Looking for sys/types.h
8 \6 V8 t% |4 i$ ^& L - -- Looking for sys/types.h - found
. K5 n2 m5 K# u, N - -- Looking for stdint.h) h( S9 y8 Z& n( i) b+ U m/ o& S! x
- -- Looking for stdint.h - found
" d" d" C( q6 U2 j" E7 [/ e# e& W - -- Looking for stddef.h
$ k+ ?! k7 N* {4 I8 d! l" n - -- Looking for stddef.h - found
* ~& m, l* L4 i - -- Check size of unsigned short
* n* @0 }$ D F - -- Check size of unsigned short - done
0 F L4 V( j0 X - -- Using unsigned short
- F7 u4 s+ V* b) Y% L& F) p - -- Check if the system is big endian - little endian; U3 ?4 d# @3 h2 L8 F& M( l
- -- LITTLE_ENDIAN x. C# e9 v `3 W; u
- -- Looking for nanosleep
( g2 x1 u! h6 N! S8 E - -- Looking for nanosleep - found6 \1 P0 N! w4 s
- -- Performing Test C_SUPPORTS_WALL- R' F! F5 ?0 H r7 x! Y) A
- -- Performing Test C_SUPPORTS_WALL - Success
& {( N+ b" f% ^; m4 b2 _ - -- Performing Test C_SUPPORTS_O0
/ |( k+ { X9 p - -- Performing Test C_SUPPORTS_O0 - Success% ~# w5 ?2 s, s3 T: q
- -- Performing Test C_SUPPORTS_GGDB4 ^6 q4 e% f& R; s% w# z$ B
- -- Performing Test C_SUPPORTS_GGDB - Success8 N' D2 }9 S* _" N$ d* m3 f
- -- Performing Test C_SUPPORTS_FPROFILE_ARCS; A8 B7 v- p6 y) l4 P- ^
- -- Performing Test C_SUPPORTS_FPROFILE_ARCS - Failed& f1 E9 T' l* s8 U
- -- Performing Test C_SUPPORTS_FTEST_COVERAGE
) t) B$ u `* M7 K - -- Performing Test C_SUPPORTS_FTEST_COVERAGE - Success( o. c, o# ?) w" C3 L/ |* @
- -- Performing Test C_SUPPORTS_FNO_OMIT_FRAME_POINTER
! e- i4 |; t1 f0 H$ s3 E& \ - -- Performing Test C_SUPPORTS_FNO_OMIT_FRAME_POINTER - Success1 @0 y& z. I9 H4 e2 ~$ @1 l
- -- LIBUSB_INCLUDE_DIR: ~/workspace/STLINKALL/stlink2/3thparty/libusb-1.0.21/libusb-1.0.21/libusb/3thparty/libusb-1.0.21/libusb-1.0.21/libusb/
; L( l* G9 g. y - -- Found Libusb: ~/workspace/STLINKALL/stlink2/3thparty/libusb-1.0.21/libusb-1.0.21/libusb/.libs/libusb-1.0.a! P, G4 H; x6 z/ P+ X
- CMake Warning (dev) at src/CMakeLists.txt:39 (add_library):
0 V: W0 z* T- u. i - ADD_LIBRARY called with SHARED option but the target platform does not0 l4 L8 y L& Z/ S, C* u* a8 m/ v
- support dynamic linking. Building a STATIC library instead. This may lead7 h$ g: ~& v6 |7 c" W6 ^4 S
- to problems.
2 ^$ A4 t, u: i2 I" \ - This warning is for project developers. Use -Wno-dev to suppress it.
! P$ ^$ g' T" a, m- B; g
3 g- t4 u: [( Q3 @" I. R- -- Found Perl: /usr/bin/perl.exe (found version "5.22.1")+ C1 a @. [, x7 ^
- -- tests enabled/ \$ P+ U9 |9 u- Q
- -- Configuring done1 i% t- y. A' b, a7 H1 d
- -- Generating done# y" @4 h. z# c4 X' e
- -- Build files have been written to: /aaaa/workspace/STLINKALL/stlink2/build/Debug8 z* t% \8 X0 n) ]; A" @
- [DEBUG]
/ I) x: e2 M4 X% d2 H$ y( {" V - Scanning dependencies of target stlink2-shared/ s3 r! I+ M( r" E7 _+ w
- [ 2%] Building C object src/CMakeFiles/stlink2-shared.dir/stlink2.c.obj
1 k, z: ?4 g' ]7 z' u - [ 5%] Building C object src/CMakeFiles/stlink2-shared.dir/cortexm.c.obj
: n3 {/ S' r- U; J+ o - [ 8%] Building C object src/CMakeFiles/stlink2-shared.dir/flash.c.obj
0 l9 \) q2 l+ f4 N - [ 11%] Building C object src/CMakeFiles/stlink2-shared.dir/log.c.obj* s. O- s \$ a# `
- [ 14%] Building C object src/CMakeFiles/stlink2-shared.dir/usb.c.obj2 I: T0 l' X8 I `/ @) ?" }
- [ 17%] Building C object src/CMakeFiles/stlink2-shared.dir/stm32.c.obj
. Y3 B# _) U2 D* |* e - [ 20%] Building C object src/CMakeFiles/stlink2-shared.dir/semihosting.c.obj
7 d- |8 ]. r# P# H. F- q; } - [ 23%] Building C object src/CMakeFiles/stlink2-shared.dir/utils/hexstr.c.obj0 a' r8 ]' G# {) S% h" c
- [ 26%] Building C object src/CMakeFiles/stlink2-shared.dir/utils/msleep.c.obj1 P4 w* e9 U6 v9 B9 `9 a5 C
- [ 29%] Building C object src/CMakeFiles/stlink2-shared.dir/utils/ihex.c.obj2 c# H8 [6 c9 [& c3 U
- [ 32%] Building C object src/CMakeFiles/stlink2-shared.dir/utils/flag.c.obj
8 ^0 l T5 z/ V. T5 G - [ 35%] Linking C static library stlink2.a8 q- ], g& l2 H
- [ 35%] Built target stlink2-shared/ r# j) @# f$ S. U
- Scanning dependencies of target stlink2-static3 E" y! W7 p' @: c. h
- [ 38%] Building C object src/CMakeFiles/stlink2-static.dir/stlink2.c.obj
# f' j) H7 V1 p" Y4 i1 S - [ 41%] Building C object src/CMakeFiles/stlink2-static.dir/cortexm.c.obj
0 Q& W. S0 z; w" T9 a$ a" g - [ 44%] Building C object src/CMakeFiles/stlink2-static.dir/flash.c.obj
/ C, H' B+ o1 H# C - [ 47%] Building C object src/CMakeFiles/stlink2-static.dir/log.c.obj
( g" y* j: {1 B) L* ? - [ 50%] Building C object src/CMakeFiles/stlink2-static.dir/usb.c.obj
) q: ]* y$ U, Q$ o- S - [ 52%] Building C object src/CMakeFiles/stlink2-static.dir/stm32.c.obj/ c- u+ e; O3 d$ @5 x
- [ 55%] Building C object src/CMakeFiles/stlink2-static.dir/semihosting.c.obj
8 T5 T# Z; [% \" D3 a; i A* n& Q - [ 58%] Building C object src/CMakeFiles/stlink2-static.dir/utils/hexstr.c.obj
$ x0 b+ @2 X$ _ - [ 61%] Building C object src/CMakeFiles/stlink2-static.dir/utils/msleep.c.obj5 `; l, Y$ `/ I& w9 M
- [ 64%] Building C object src/CMakeFiles/stlink2-static.dir/utils/ihex.c.obj
+ l1 d! f: k1 A; a+ Q5 Z0 c& x* W - [ 67%] Building C object src/CMakeFiles/stlink2-static.dir/utils/flag.c.obj0 j( B% ]/ T6 M: M2 p0 i
- [ 70%] Linking C static library stlink2.a
# J7 a6 z" X: m8 U - [ 70%] Built target stlink2-static$ ]# h# ?/ g v" m2 L
- Scanning dependencies of target stlink2( f! Z- F3 ]$ Y5 ] I' E! `$ {, h
- [ 73%] Building C object src/cmd/stlink2/CMakeFiles/stlink2.dir/main.c.obj
; s! V0 |/ O+ y. A6 n8 T: N! k# {4 u - [ 76%] Linking C executable stlink2* h7 M3 N0 R5 Q3 ]$ ` o2 {
- [ 76%] Built target stlink2
0 k7 y0 ~# M3 g! S - Scanning dependencies of target probe4 O- h, C5 a# A7 I. p* w/ }
- [ 79%] Building C object tests/CMakeFiles/probe.dir/probe.c.obj
# M" Y9 n! l @8 @2 ^7 { - [ 82%] Linking C executable probe/ D% p5 ^7 }1 y5 O; H
- [ 82%] Built target probe# i9 ^/ f/ a1 U) O3 z5 r' K
- Scanning dependencies of target open_close
0 }7 A7 k9 d2 j- M) w) p9 u - [ 85%] Building C object tests/CMakeFiles/open_close.dir/open_close.c.obj4 {4 J# I* |+ p( L7 Q
- [ 88%] Linking C executable open_close, d9 S3 M9 z" g$ e
- [ 88%] Built target open_close
" i+ K. e- m& D$ K - Scanning dependencies of target ihex2 @6 B# E3 g$ L; z
- [ 91%] Building C object tests/CMakeFiles/ihex.dir/ihex.c.obj$ V% K8 m; P9 ~6 S# y
- [ 94%] Linking C executable ihex
2 V. G( {7 r. z, b7 A - [ 94%] Built target ihex, a; g1 O- N K+ F7 j& m3 o
- Scanning dependencies of target log, r; N4 _1 o! D r u; W$ `
- [ 97%] Building C object tests/CMakeFiles/log.dir/log.c.obj6 U; @8 e! B P* b. N2 |5 k7 t
- [100%] Linking C executable log1 C4 U8 X1 [! j+ V& Z
- [100%] Built target log
# V% f% o" t- q) H! ]" ~
" a4 W( m' J$ o( r, n0 V- admin@admin-PC MINGW32 ~/workspace/STLINKALL/stlink2) a! A; L8 S8 e. F
复制代码 测试工具在 build\Debug\tests
: g/ c& l1 |! ~6 e+ q% \编好的静态库 build\Debug\src\stlink2.a2 w% Y% n; e' \
3 b& d& Y G- w/ v$ Z
; f4 _; A+ ]2 [ % j+ Y) x5 T$ C+ ?! o( {. d" v
, f: E' j2 R. A5 m* O, l
2 _7 f- N* C0 [ C+ k6 |, s) i. dmsys2命令行下可直接运行.8 N$ U8 B5 E: r" L
window cmd下运行可能会提示缺少msys-2.0.dll,msys2\usr\bin下可以找的
9 C% G5 E) j) K* n' s% W1 e
9 B; y, \2 i3 }测试一下:" Z$ h3 M' c3 G" ~4 o
: D, _: Z5 L6 l- \3 h5 R1 t
open_close
4 Y$ K r v3 O) @7 [/ |4 c3 D, ]1 F& |% F# P% X! I
# D& M; d6 Q1 h; ^% P7 d5 P
ENJOY YOURSELF 2 c! N$ [$ v+ m/ Y0 m2 ^
: U; @. P+ h- M: y
* d- K$ b8 R4 F6 a
6 S! Y! ~$ ]: U4 H; Y7 g
( e* I( v0 e" w( g* G3 [. e$ ?3 }: g( s* u; w
# f. ^* T6 j; ~$ c. B7 D7 }- ~! g
* u. Z. I3 C, v' s' R) [* s |
修改下open_close.c:
标记备用
我截图用的NUCLEO-F303RE..
最近也在搞这个。
我用的是TDM-GCC,cmake已经构建成功,make有问题,先赞一下楼主,再回过头看。& Q- c3 O4 F( O- o
现在已经编译成功,生成了三个文件,sg.exe flash.exe usb.exe 问一下楼主,接下来应该怎么用啊???. |- R9 y- N. _: ]2 f: _
你用的应该是http://github.com/texane/stlink吧。
和我一楼说的不是一个东西。这个要比我1楼说的功能强很多.
这个github上有编译好的win64版本
官方stlink utility 就有这功能的.(没用过
http://www.st.com/content/ccc/re ... s/en.CD00262073.pdf
2.2.6节 3.9节 等
软件我是用过的,现在是想用STlink通过读写寄存器配置STM32的SPI,将数据写入DR寄存器。然后再外置的SPI FLASH读取DR寄存器。来直接对外置SPI FLASH进行读写操作。
有一个*.a的库。% [: d! K V, E0 W. M2 J, K- C
ihex log open_close相当于是例子.功能比较少...
那意思是,这个不是一个完整的工具?而只是一个开发库?
是啊./ I$ l4 x* g# T& W( h; K( |
另外,找了半天只找到memread,没找到memwrite
功能不是很全,编译一下,纯当练练手了.9 ^8 ] O& v3 A: Y% K