STM32的LED控制图在上一篇博客里,需要的话可以参考
) [( J1 o$ x& e$ E, G$ R, b
) o& i8 G1 p( l& {* l7 `LED闪烁控制的步骤
. L5 F* N' G! E8 n2 \ v2 S& V+ c/ T7 V! u8 r9 C% X
1.PB8引脚输出低电平,LED点亮
6 {& x4 H$ J2 x. t5 y- z5 c7 w
# v$ z+ n3 c* Y2.延时; W& ~4 Q: W7 \: Y: |
5 L; ^" X4 z- X) T, |3.PB8引脚输出高电平,LED熄灭
" e4 k" b8 j! v) _9 E; Z$ [8 i' ^. u y- |4 }! s* ~
4.延时
! M% T$ ~, Q/ p( I) _. l n2 R( H5 c4 Q) }2 i. `4 M
5.重复第一步(循环)
' [9 R, M( h8 _ ]. W! l" ?# d- J; a0 z3 U ~( t; |0 P) [5 E- P6 ]
- #include "stm32f10x.h"/ K, {7 ]) k' a. W
- ' m5 f( c3 I" V: e: Z
- void Delay(unsigned int count) //延时函数
2 }0 `* }( \1 S1 {" b) Y/ S - {
- T0 `" U, p8 ~0 n( o - unsigned int i;
; v1 }/ h, \% y; ^# ` - for(;count!=0;count--)3 _ F# m; J% \8 c5 O, F
- {
7 Q/ a+ E% x- [% R- X! g6 \9 { - i=5000;& B6 Z: r1 x' ]7 ]2 _6 S' d
- while(i--);
8 j, f; x2 b1 i! T9 w" O% }( \. g - }9 Y" ?; n+ V/ Z, L; P
- }
* y0 I; O$ p& U# `# S5 d - int main(void)% |4 w# j: m( E/ R) h5 `. o
- {
( x! a) s5 c) ] - GPIO_InitTypeDef GPIO_InitStructure;# R2 C) p: m _9 j
- RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE); //使能GPIOB时钟
* E8 z2 q% n2 n3 Z R, @) T7 D - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //PB8引脚配置
1 t6 ]5 @, D8 V - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //配置PB8为推挽输出- S# J! O0 e! Q, g9 n
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //GPIOB速度为50MHz/ O# j* h2 F+ n5 z! `! ]
- GPIO_Init(GPIOB, &GPIO_InitStructure); //初始化PB8. p* |5 G$ D/ Z. f" w3 `* \# {
- GPIO_SetBits(GPIOB,GPIO_Pin_8); //PB8输出高电平,LED熄灭
% y8 e, W0 ~3 U7 Z4 Y7 @4 r
; l6 V9 `0 u) x* x- while(1)
0 T; |' k2 ^. p" F; b ~6 G - {4 M4 G( E1 d, j) ?, h! v4 h
- GPIO_ResetBits(GPIOB,GPIO_Pin_8); //PB8输出低电平,LED点亮
0 s# a. F% E7 u - Delay(100); //延时,保持点亮一段时间' C" A* y& {) a9 i/ o. d% y! B
- GPIO_SetBits(GPIOB,GPIO_Pin_8);
. f) T; d/ P( g( K b - Delay(100); //保持熄灭一段时间
0 J) ?! N. v/ `# c2 s/ t - }% h' @: R: U. w4 ^: T3 s3 X- |* X
- }
复制代码
3 `* d/ R/ c0 A A
9 e) o) q, m5 s0 H$ l延时说明:因为stm32指令反应速度很快,人眼很难识别,所以需要延迟一段时间,这样就能看到闪烁效果
2 K ^5 ?: i6 X. h) _2 e: d: q. ^, m/ r* P
& {" P9 i9 P: e. y! Y& A9 T |