本帖最后由 电子星辰 于 2018-6-17 21:19 编辑 5 y1 `; K$ I' m
9 M5 }; a# t7 M$ L开发环境:WIN7_64位系统;Keil MDK5;STM32CubeMX。(Java环境(Cube必须))
, Q* T8 B, r5 z1、下载并安装好STM32CubeF0_V1.9.0,USB驱动:STSW_LINK009_V2.0.0。
) U8 q* |2 ?. s+ ?: s- t2、随便找一根MicroUSB的安卓手机线连接Nucleo板和电脑就可以了。
" l2 R8 |; u' \% H4 ]$ Q" h
- ^ y: s% a- j* q3 w* c' L* L上电之后LED1先亮,随后LED2亮起,LED3闪烁。将D2和GND的跳线帽拔掉,LED3闪烁频率加快。. y0 ?/ n& t) c R a1 p5 W- g

/ W0 S; l! b$ l0 i! i% B
8 `$ c, s' i# E d找到官方的例程代码5 E1 x& E3 j+ f
...\Repository\STM32Cube_FW_F0_V1.9.0\Projects\STM32F042K6-Nucleo\Examples\GPIO\GPIO_IOToggle! X/ p# r; a: `
这个例程是展示,通过HAL API来配置GPIO的。我觉得例程说明比较像板载的原始代码。8 \9 k k R; u( u% U
编译,下载。
! y4 _- ^4 ^% V) \' D4 C) ?% O下载失败。。。' s4 K. h! L- d! I; M& }+ X
. C2 E% y$ M4 _1 t
& Z: u# h* ~$ q0 q$ `' t打开设置里-Debug-STLink Debugger的Settings-Flash Download
% q* }+ k, T* _0 T2 |点Add,选32K的。7 f1 H% J& t3 x8 x" V9 Y
p9 s- e0 r, s5 u" V4 A; A
2 r& V8 N! N" J" A, s好,这次可以了。
% l! L! `3 A! B: ]这时,LED3闪烁频率加快,拔掉跳线帽也对闪烁没有影响。哦豁,下错了。5 E& f" I# s! z2 V7 V( L% _3 ~, r; k
附一下例程部分代码:
$ q, Y7 y! E* }" j' P ^- int main(void)
7 L8 w7 u& M/ b6 q4 j6 m3 ?; U" K, v - {" Z; e* F( W; _8 ^
- /* This sample code shows how to use GPIO HAL API to toggle LED3 IO0 ?( q8 g1 K& q W4 M9 k
- in an infinite loop. */
& i7 [& S1 ~7 @6 x7 ]
5 r }, r7 }) C$ K% B0 n, |) v- /* STM32F0xx HAL library initialization:
6 {( F2 l9 `& n& f" z - - Configure the Flash prefetch, R$ D( r$ x. J9 J5 j" S0 F$ U) _
- - Systick timer is configured by default as source of time base, but user 1 A1 e1 E6 [1 F+ \
- can eventually implement his proper time base source (a general purpose
6 x' T1 J$ Z/ E - timer for example or other time source), keeping in mind that Time base . p4 k/ R$ ]5 x; z4 g" u
- duration should be kept 1ms since PPP_TIMEOUT_VALUEs are defined and Z/ I- A. R. L* O/ }( S
- handled in milliseconds basis.. f4 f5 w8 J1 ^( ]" c9 K7 C
- - Low Level Initialization) m/ O8 P& P3 r
- */1 B- B$ [: y$ Y! A! H5 g$ p: e
- HAL_Init();
' `) f" K6 M7 @$ O n/ `/ F - 6 U, _ T$ `. n/ \, p
- /* Configure the system clock to 48 MHz */$ ~; {3 y/ m- U9 s* ^/ W
- SystemClock_Config();/ D. {7 v2 Q8 j; c A3 o
- : F2 ]( N; i& R8 B3 @6 q
- /* -1- Enable GPIO Clock (to be able to program the configuration registers) */3 |0 U1 T! t6 i1 _# ^0 o& m
- LED3_GPIO_CLK_ENABLE();3 a: T# T* a2 E( G
$ v( P) J/ p, m- B( P0 N- /* -2- Configure IO in output push-pull mode to drive external LEDs */. J9 T' Q3 O6 K6 p. {
- GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
9 I; N+ x9 V$ s d; z - GPIO_InitStruct.Pull = GPIO_PULLUP;3 n U6 [* V) M) v, q+ H; r) V
- GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;: b% K- T1 l6 S& X
1 }3 S7 a: d3 M- GPIO_InitStruct.Pin = LED3_PIN;
. G _7 p, \/ s& k5 o! L - HAL_GPIO_Init(LED3_GPIO_PORT, &GPIO_InitStruct);( a3 ?' A0 K* A' ~8 `
- 1 c" u" f' ]6 ^& w
- /* -3- Toggle IO in an infinite loop */; D& I! X* r! A7 V8 Q
- while (1)
2 l% w2 o( Z1 o& S5 F }; y - {- @3 R) U [; |! q% _
- HAL_GPIO_TogglePin(LED3_GPIO_PORT, LED3_PIN);
( N8 y5 Y# ?* x# `4 N - /* Insert delay 100 ms */
$ r1 a, Q3 d3 z/ G. h4 t2 u - HAL_Delay(100);% w; A( ~* q6 @2 V& z$ ^2 h
- }" K( ?4 r+ r6 K+ l r
- }
复制代码 好吧,暂时就这样吧。
& |" D0 [. H# W+ X) Q9 }; I7 M
' O" i' u: M6 {% o1 d) ?) C& s1 r4 g0 O% j+ Q: q+ x
7 r w# ~7 G0 V( i" L6 W |