STM32的LED控制图在上一篇博客里,需要的话可以参考
/ k |2 m+ e9 y5 Y3 f/ J; F, o5 U+ d. V. Y
LED闪烁控制的步骤
# f6 o$ }7 Q1 A- C4 Q; W3 ~: n) E! F8 M. {" u* P
1.PB8引脚输出低电平,LED点亮
. t5 P; _$ e" R1 q" p% g. {4 g! T, x9 D( l( w3 `2 m+ J }3 K
2.延时0 L: z" N9 }) K) ?) M( b+ y w
* t' v. Q% q; o; A2 Z/ [3 l3.PB8引脚输出高电平,LED熄灭: P* v( b$ f# W7 Y# y& T
( ~0 p9 P9 W2 r& H- p
4.延时
7 O5 [9 V1 |" T# ^8 y) m! v9 x6 ]0 ^& i/ o1 c; {8 c% n
5.重复第一步(循环)- M1 B( q d, ~* I5 d5 u0 F) P
7 W- @8 } [% j- `- #include "stm32f10x.h"0 U& p' ?$ T; Z' n X
1 |+ J7 w1 u9 W% f$ u- void Delay(unsigned int count) //延时函数
! N m$ L( Q/ `1 p! T - {+ _ `) ]$ Y, d0 N( D
- unsigned int i;1 k" \$ I! q% I+ D7 x% |3 F
- for(;count!=0;count--)& }* ]. B& @$ q+ P5 i
- {
P. e- G9 ^4 e4 \1 K5 n - i=5000;
: n; w' w2 Y. E- n% } - while(i--);
, B( {* P4 @! Q6 P |( \5 a - }) _3 Z1 x: m* t/ N; b
- }2 B9 J0 G/ Y" e" T1 O, Z5 R$ S
- int main(void)" t" @6 K+ v" p; x4 ^: y! g
- {; I+ R' J4 t1 C
- GPIO_InitTypeDef GPIO_InitStructure;9 F2 }0 i" Y+ ~) h8 O& G6 [
- RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOB时钟' H5 _0 S% |+ Q7 T. `; Q( M
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //PB8引脚配置
7 s) r3 |# K* a - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //配置PB8为推挽输出
& o) t5 f0 @( s$ P5 e! E) s' B0 X - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //GPIOB速度为50MHz
) Z( A* i, a, o4 Q6 t: z - GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化PB8) q0 J+ P5 z$ e L( v4 D
- GPIO_SetBits(GPIOB,GPIO_Pin_8); //PB8输出高电平,LED熄灭
' ~! u* t; x6 _! K9 I0 I - ) }5 d3 V; Y0 }7 R8 c8 Q
- while(1)
$ E$ K2 F5 f% _ K, C - {
0 Q! w1 ^1 Q" l4 N - GPIO_ResetBits(GPIOB,GPIO_Pin_8); //PB8输出低电平,LED点亮
' W2 c$ a: {. h) W0 a - Delay(100); //延时,保持点亮一段时间/ e# M5 f) F( a7 i( |! J2 `
- GPIO_SetBits(GPIOB,GPIO_Pin_8); ' z/ ]8 u3 g: N$ [1 c% Z9 c- d% w
- Delay(100); //保持熄灭一段时间5 ~; W4 z1 e7 A# C& o1 n. K) L, H L
- }
8 m4 K3 b. H1 c, C1 t, D - }
复制代码 0 z9 B4 P1 h* O: y0 D4 K7 I
: I4 C6 s z) E( }6 n延时说明:因为stm32指令反应速度很快,人眼很难识别,所以需要延迟一段时间,这样就能看到闪烁效果
/ I5 _7 }- a1 i+ o2 h" G* P0 E t3 }6 q9 |9 }* j D
$ u; W2 {, n- K H6 _& K |