前言
6 U$ ?7 U2 ]- x% O配置GPIO引脚前先查看板子原理图,LED配置在哪个IO口,本篇以正点原子、STM32F103RCT6为例。5 H) g! G) ^3 B% J+ k6 T$ o
+ B! |- T9 {* Q6 D8 e8 M+ H
LED灯我们主要用到的固件库文件是:
/ U9 j6 v: l" gstm32f10x_gpio.c /stm32f10x_gpio.h p9 X8 s5 H2 S
stm32f10x_rcc.c/stm32f10x_rcc.h
* F0 _/ Z; Y4 P" ~6 L2 m! W% g# \misc.c/ misc.h; b5 P& L) T$ k5 i
stm32f10x_usart /stm32f10x_usart.h3 `. [7 X5 k; |" C, t
也可把外设固件库全部加入到工程,方便延伸。
% G: }, E* ?5 C" D6 y
9 }- n/ _) C& `* G一、创建/ `7 b. A9 m, s9 w# e# a* n
5 V8 t9 N" c4 _4 j9 }% y
" Q6 H; a# P' V) ]7 o: c$ R1 N9 }+ }
, k4 z3 Y9 U, ~9 [
5 t. b1 x# y N; O J/ }二、代码部分
$ K c! u$ L3 L- x! @0 d1.main.c
5 g, N2 f3 O' O' e% [" q- int main(void)
- j& d! a3 h) S9 h( L, e - { 7 T4 I* R" {7 t5 n" e
- delay_init(); //延时函数初始化 5 r [5 K/ b* ~! G% m; O5 f
- LED_Init(); //初始化与LED连接的硬件接口) x2 G/ x. P4 W
- while(1) L) p& W/ S/ n( B
- {
2 v6 Y$ U, R* w1 s r - GPIO_ResetBits(GPIOA,GPIO_Pin_8); //LED0输出低
+ p+ G0 Y( z% d* H - GPIO_SetBits(GPIOD,GPIO_Pin_2);//LED1输出高
7 a) p9 f+ s( w$ I4 R4 |5 r$ R - delay_ms(1000); //延时1000ms闪一次6 Q2 B5 u. a6 u
- GPIO_SetBits(GPIOA,GPIO_Pin_8);//LED0输出高, p; P5 H# F" d, v8 w8 J
- GPIO_ResetBits(GPIOD,GPIO_Pin_2);//LED1输出低
- x( ?% {$ A, S: Z - delay_ms(1000);" ?: B0 L/ L! A& F+ M$ `
- }
2 w) n$ x! Z; `( b6 b4 |& w% G - }
复制代码
) N9 z% |1 o, y/ G7 g+ c* L2.led.c
8 m7 d T) S c8 I! x, D- void LED_Init(void)4 K6 n4 `; X; g* S4 u+ r9 d6 d6 q( e3 T3 G
- {
( ~( \8 T+ u, @/ C4 `8 i
v" M' [7 ^8 e/ F# r) T) v- GPIO_InitTypeDef GPIO_InitStructure;- W) @; S @8 t3 d) F; b5 D$ d. B8 m
- 9 s9 W+ T* T8 K! [0 n4 T! j1 O: j& U1 r
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE); //使能PB,PE端口时钟
6 _ k" F3 C" ?$ _' F( I -
% j1 x" R! m7 s - GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //LED0-->PB.5 端口配置) Z" L6 u/ ~/ a; X; b9 c/ C7 c3 [
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
1 l. ]$ S$ Z! \4 [( b) |' ^ - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
% X( R3 N7 I) e( S+ x% w% j; r3 i0 G - GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5& T3 b4 h( p9 E$ D( x2 B
- GPIO_SetBits(GPIOA,GPIO_Pin_8); //PB.5 输出高
6 C& p. D7 p2 m' g' y! Q - 6 O3 H/ L" F; c! x2 X: f
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //LED1-->PE.5 端口配置, 推挽输出% g; K* e. i/ e4 i
- GPIO_Init(GPIOD, &GPIO_InitStructure); //推挽输出 ,IO口速度为50MHz
3 M/ w1 h G, f0 h# t" Q. l - GPIO_SetBits(GPIOD,GPIO_Pin_2); //PE.5 输出高 7 n- ]; M8 W# m( s% ~
- }
复制代码 5 @* `0 |* N9 c/ |9 B
3.led.h0 P X& z" s K3 n/ a! T
- #ifndef __LED_H" p& S, i) c6 B7 [- K8 Y: o2 E
- #define __LED_H
+ b4 D2 Y% w6 K2 G" I - #include "gpio.h"
; r$ ~5 G0 A& C
& \ `: m# @4 A; d6 L8 x
0 z; s" M' r+ K( I2 g- #define LED0 PAout(8) // PA8 7 K+ b& c# d4 z8 L I+ z D4 u y& [0 @! b
- #define LED1 PDout(2) // PD2
' v1 a# e/ W4 U1 i9 B4 b/ Y x8 u
" ^. N7 j3 Y3 P. w1 _8 D7 J- void LED_Init(void);//初始化
1 u( \) n# D7 L - : p- ^5 h% Q! A2 S/ X9 M
- , g* O1 Y; m" p5 G6 I
- #endif
复制代码
7 [1 j! ^: |5 P2 [6 m
, f6 H: W, E1 p8 d# V2 O1 K9 f1 {9 x6 h2 I% c- x
$ f2 A. V4 C, o( ^- e$ ]* {
|