: s+ y' J$ P; Y+ H
* y& X# U4 b" K7 i' h
通过开发板的上的SB4,SB5,SB6跳线来选择STM8L001芯片,STM8L050和STM8L001都属于STM8L系列芯片,所有工程文件就还是用之前的STM8L050创建的工程文件,通过GPIO驱动来验证工程的可运行性。
# C2 a7 i7 c6 v$ M6 z( A- _/ T" o! G$ `$ N% r u; I
& e' M9 q/ G8 \7 W; A" f
一、硬件部分, k2 @; C. K- b* s
) k/ T7 F9 U1 B; O% ]' \
4 c( F" B2 s7 g, s
使用PB5引脚来驱动LED。6 D: i8 q/ v& Z* y$ @
/ {7 j: P* ~& E6 _4 D# u8 I
9 N3 `; w8 g- A% d6 G
二、程序部分8 L) [; I6 F9 I
4 x0 u% R V- m" B( }( s1 y" |! s% H0 E- \" U
2.1、在工程文件中,选择STM8L001芯片型号
3 Q$ I( h1 l }7 J
) v8 D. \! k7 x, e$ |
' ~; m, \% z: W, |7 }
2.2、程序代码
8 ^8 ~( S7 V; R; m3 W" S0 u S7 A/ b$ |
$ H( G% a, p. M) x 2.2.1、LED代码
4 S! t/ b+ x. D9 B% D1 T- //led/c. M' d* y" s. e7 X* l9 B
- #include "stm8l15x.h"% v: R( \; j. g. f; W+ I
- #include "led.h"
) d" ]$ g8 o- Y9 R/ }
3 U* c1 |4 a: b1 p. S( y/ f- void led_init(void)
+ M; U6 H, {# l - {3 u" k6 Q* ]! s: I: D0 K. w
- GPIO_Init(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS, GPIO_Mode_Out_PP_Low_Fast);4 K0 O5 X0 F( o, e
- }" c( V$ E0 G0 T' n
9 _ A1 k4 v9 ]/ r1 a% S- //led.h
; s4 d7 P4 k# w3 Y8 P - #ifndef __LED_H
j( N; W8 L) t/ }- _" b/ z - #define __LED_H6 _* E e2 C$ {
8 p5 ^: K q$ o: ?! a- #define LED_GPIO_PORT (GPIOB)
' e3 I5 I5 J! b2 ]% c - #define LED_GPIO_PINS (GPIO_Pin_5) & f; h2 H5 P% V8 a0 U
- 2 @7 U/ A- M7 e+ A) F, F
- #define led_tog() GPIO_ToggleBits(LED_GPIO_PORT, (GPIO_Pin_TypeDef)LED_GPIO_PINS)$ g) u5 z' q0 E! O
- " A" K* W: ]/ S; I$ F0 k# h, d
- void led_init(void);: f: c) v+ E5 ]$ B4 e( F/ ]
- # e' h& @' ?* z7 O R
- #endif
复制代码 2 w. {9 E. p, _: Z' i6 `: G7 B
2.2.2、主程序
9 J( T) g4 p( q; `' p. a7 R Q8 \- void main(void)
) E/ k- }( r$ W: G4 P. o - {
: o' S0 j+ j) @6 |- p - CLK_Config(); //时钟初始化' v- a: D" q8 z) C$ [
-
, a) G! \ u8 [ - Delay(0x2fffff); //延时5S4 l$ J0 o0 z& h/ l
-
+ a% ]% W0 }1 J3 @) {% [0 \; ] - led_init(); //led初始化% O+ H: W4 R; k! A5 T
- ! Y/ x+ D; |+ B5 k, k+ Z" G
- while (1)- g5 M7 U# A' W" o" O4 p- @
- { ]$ c4 Y/ u% ~! t
- led_tog(); //LED取反 ) E4 F' d+ E9 J$ b
- Delay(0xffff);( G9 [% F# b& E5 F1 p
- }% H# B b* p8 T0 ? P
- }
复制代码
+ R5 I3 B! T7 y+ s4 B% B8 H' m 三、执行结果6 I# F4 g2 ~; D; X0 u! y/ }
) P* |3 H! |! Z( C# B
1 b5 T" m' t, \, g+ e% w" {
3.1、在原来的工程文件仿真时,程序执行到. `# D% r9 n4 j5 A$ u# Z
CLK_Config(); //时钟初始化2 G4 @. |5 B6 b5 g
- //时钟初始化1 D6 g, U# I! z6 T# A; f7 F' x' @- F
- static void CLK_Config(void)
1 P h3 Y2 u# N - {
" T F" g, T& ]1 ]/ b - /* Select HSI as system clock source */
+ T/ O; Q; i7 g& C - CLK_SYSCLKSourceSwitchCmd(ENABLE);: q: r) @8 @4 S6 Z- q2 f
- CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);' {/ {3 B7 f5 f
- /* system clock prescaler: 1*/; f( `# F, k: t
- CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
/ ~# [& W5 r) b4 u - //while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSI)
n4 e3 x Z* N, f8 k( U5 o+ C - //{}
3 V2 ?) f( e1 r3 u) J% v$ _ - }
复制代码 ; Y- @5 ?! Z5 N$ m8 A" O2 D
这个函数while (CLK_GetSYSCLKSource() != CLK_SYSCLKSource_HSI){} 位置跳转转不出来,把这个函数屏蔽掉以后,程序可以运行下去,后面再看看具体原因是什么。9 f) }1 N; n' }! J! ?; N8 |
( ?* q( z, Y) F$ y4 ^$ C+ c7 F; N
3.2、运行的视频
; I$ d+ ^# _& Q, ^4 ?' P3 ^8 L* U. z
9 {9 `" z. S+ {6 k0 v% A( A5 n; E& ?+ ^
2 Q; G: A, B! x4 P; x, ]- q- Y, D! M" t1 U2 [7 w3 i" t0 Z
& ^& R3 s4 H& y2 |" x
stm8l001芯片运行正常。
6 x; O) ^& {0 s/ D+ {1 y/ m
9 ]8 Y8 t; t2 P# ^. q. @7 D
* n5 a8 j* d. i
/ v; W% T7 ?5 v3 C# c
3 g" P, [4 s% z3 ]
. U6 h: v f2 q6 l( d9 z) g
5 _" I' R- ~& H
; E# K: f- [1 \4 p/ c3 q6 }, B' `% p) A7 Z8 Z. C; J4 O" l
" ?3 k, I' _% E& S
|