赞
踩
当我们学过51单片机之后就知道在51单片机中点亮一个LED很简单一句代码就可以实现。只需要将LED所连接的IO口拉低就可以点亮LED。
但是在STM32中,点亮LED确实比51要麻烦很多。
一样,在STM32中点亮LED也是属于基本的IO口的使用,所以每当我们需要点亮LED时就需要正确配置IO口。STM32的IO口相比51单片机而言要复杂很多,所以用起来也很困难。
下面就是点亮LED的代码,并且使用延时实现LED闪烁。
main.c
- #include "stm32f10x.h"
- #include "led.h"
- #include "delay.h"
- #include "sys.h"
-
- int main(void)
- {
- LED_Init();
- delay_init();
- while(1)
- {
- // GPIO_SetBits(GPIOB,GPIO_Pin_5); //点亮LED0
- // GPIO_ResetBits(GPIOE,GPIO_Pin_5); //关闭LED1
- // delay_ms(500); //软件延时500ms
- // GPIO_SetBits(GPIOE,GPIO_Pin_5); //点亮LED1
- // GPIO_ResetBits(GPIOB,GPIO_Pin_5); //关闭LED0
- // delay_ms(500); //软件延时500ms
- LED0 = 1; //关闭LED0
- LED1 = 0; //点亮LED1
- delay_ms(500); //软件延时500ms
- LED0 = 0; //点亮LED0
- LED1 = 1; //关闭LED1
- delay_ms(500); //软件延时500ms
- }
- }
led.c
- #include "led.h"
-
- void LED_Init(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE);//设能PB和PE口
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0->PB5 端口配置
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHz
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
- GPIO_Init(GPIOB, &GPIO_InitStructure); //根据参数设定参数配置GPIO
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1->PE5 端口配置
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHz
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
- GPIO_Init(GPIOE, &GPIO_InitStructure); //根据参数设定参数配置GPIO
- }
led.h
- #ifndef __LED_H__
- #define __LED_H__
-
- #include "sys.h"
-
- #define LED0 PBout(5)
- #define LED1 PEout(5)
-
- void LED_Init(void);
-
-
- #endif
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。