4 u* G! Q7 {( V8 B
: [# Z* q W# t% [2 J 通过开发板的上的SB4,SB5,SB6跳线来选择STM8L001芯片,STM8L050和STM8L001都属于STM8L系列芯片,所有工程文件就还是用之前的STM8L050创建的工程文件,通过GPIO驱动来验证工程的可运行性。$ O; ^. w Q% o7 y+ s4 v6 M" ~, G
9 G. m/ L1 P3 F
' J4 S7 t0 A, z5 {* i, M 一、硬件部分
* a+ ~5 T% C- u# `$ ]' p2 l
% M; h; }, g0 B/ G }6 P/ s6 W% ~1 O4 J: o N2 X+ U8 S: @
使用PB5引脚来驱动LED。
% g" j6 Z4 T% `
; K+ y% M" \- m( e: }; `6 l. @ ; t) h8 l8 y# G. q2 w2 M, @
二、程序部分
6 p6 x4 D6 E) h1 I0 {. ]
3 `. V6 ^% Q4 S4 v w4 n$ a. h8 x P/ R" z6 H6 O( D+ v2 a9 o% `
2.1、在工程文件中,选择STM8L001芯片型号: h/ l& h) d+ z
& P% c1 [9 M/ l$ E6 s. z X# W# C+ M$ `# f( ^
2.2、程序代码
6 F& V' t/ C9 @3 k7 E. k$ n, }5 C1 p% L5 B& E; ?
5 H( i Y( W9 e* g 2.2.1、LED代码 2 L3 |: o" g3 r% x7 l
- //led/c0 B$ h! p' G, z$ @
- #include "stm8l15x.h": H s2 |1 m/ ~0 X! g- P* O" b
- #include "led.h"
: E/ q" ]! K. M9 ` @
/ f# w. F' n- Z* w f- void led_init(void)
5 L! O6 d% } i4 o- n6 W; M3 \ - {$ U4 n. |4 I2 ~/ s
- GPIO_Init(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);: l; B7 l; F: h1 l. `2 Z* ~. I
- } @$ L8 t. A& f5 E; m% g# n
- + `+ y0 z, D/ L0 e, E7 y F
- //led.h' Z7 I, [# j4 B
- #ifndef __LED_H7 V8 {/ {4 w& R
- #define __LED_H
3 m. D o* c" l* v& d [ - 8 m' u8 L$ V, A Z4 J- q# N2 |
- #define LED_GPIO_PORT (GPIOB)
+ R& O; `, Q4 s4 ~% a - #define LED_GPIO_PINS (GPIO_Pin_5)
5 M$ c* m0 b/ Y- U# O7 s: e8 c - 0 c- b; C* ]9 `) M
- #define led_tog() GPIO_ToggleBits(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS)! _; b6 R5 C- P2 a8 [. x, ^
8 [5 L% u7 x8 P6 L6 o- void led_init(void);4 R, d* B3 [5 l
% f7 z2 s* c+ g0 |1 X( J8 ]2 i- #endif
复制代码 ! z) V6 x* c! J. M2 R1 d
2.2.2、主程序8 x t6 R- w1 A$ J' I
- void main(void), Z- C4 p# _$ ]& Q! H; b: _
- {1 R. Q1 ~. M4 C1 S: ~+ I
- CLK_Config(); //时钟初始化
! C0 ~: _3 }' Y8 { - ' V3 s: Z5 G8 ]2 P8 B, u
- Delay(0x2fffff); //延时5S$ {2 I' ?3 C/ v1 T* c" [1 o$ _! U
-
6 a) {9 |: L& y% Y: S- @ - led_init(); //led初始化6 H& q- q: x" X, N
- : C7 \7 g+ f1 q$ E }
- while (1)
$ h% n( k) q; _& {8 {: q - {& m' }0 r# ?8 Z+ s9 x5 c" C
- led_tog(); //LED取反
3 \ J2 Q p7 A - Delay(0xffff);" L4 m4 z k2 U
- }0 ?- T. [: _1 L& G7 ]
- }
复制代码
& x( c$ z; n2 x$ S. o, n2 M 三、执行结果1 r% ?8 a/ q9 P" R1 W
- _6 f& M6 p# \8 Z5 y: n6 o, Q* l- L9 F& w2 N
3.1、在原来的工程文件仿真时,程序执行到
5 s# K7 f/ S; W) y/ G# }& t CLK_Config(); //时钟初始化
3 E& w8 X% D/ x& f# V! I- //时钟初始化/ J+ A' p: W+ _7 Q/ G, Y
- static void CLK_Config(void)
8 P" c" ^' M3 F. s2 S: S* P7 F - { a9 d. Y( M( [! ]
- /* Select HSI as system clock source */
0 z, x4 r& q$ A8 F0 y+ |! D - CLK_SYSCLKSourceSwitchCmd(ENABLE);% H+ l9 S% H- ^% S4 @
- CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);! T0 J; H! h9 t& K7 ]) |2 [" y. g
- /* system clock prescaler: 1*/# k, @7 H& k6 j( Z1 p/ B9 Q! O+ b
- CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
/ p" P0 F% y1 U" _! A; \* k+ ` - //while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSI)5 P& w4 |- j7 J4 @$ ^
- //{}
$ t8 \( t4 C4 b* {7 Q - }
复制代码
% N1 h& R" A- a. f. z% u$ ^ 这个函数while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSI){} 位置跳转转不出来,把这个函数屏蔽掉以后,程序可以运行下去,后面再看看具体原因是什么。
. {" k) K# _9 W- K. K, U$ w
2 X/ K$ H0 J! |; r 3.2、运行的视频
6 z3 B% Y2 ]: D- D( d2 @; D- m
, f Y4 {5 T6 O- ?
& l0 \8 C+ t. }* b8 M; X- l, t& w5 x) P% q: k
, `# t% S8 O* x/ p, B$ z- o4 D( ^' c% v) r( O# w: @0 t
stm8l001芯片运行正常。) {' k* g. g& r4 q+ v9 |4 e
2 M( o0 k8 a& E2 ^
- c' g n- l% O- ^. ~% q. }- a0 f6 X2 e: j: @
8 z0 Z& Z2 }$ Z8 W/ K; @
: g: r% E7 u$ I! h# K* s/ Y7 D
2 E7 |) ?& G, {6 ]3 c% m- }0 Y4 I! Y4 c
- a% ~8 K% d8 _/ R+ P2 x2 w7 r( `" b
0 t4 d r% E4 W! e ~7 Y
|