STM32例子-------流水灯(标准库函数)

STM32例子-------流水灯(标准库函数)

工程在这里分为三个程序。main.c ;LED.h ;LED.c

  1. LED.h
#ifndef __LED_H//此处是表示当我们没有定义LED这个名字时,一下这个程序才被使用
#define __LED_H
#include "stm32f10x.h"//头文件
#define LED_G_GPIO_PIN          GPIO_Pin_0//定义LED灯G的管脚
#define LED_B_GPIO_PIN          GPIO_Pin_1//定义LED灯B的管脚
#define LED_R_GPIO_PIN          GPIO_Pin_5//定义LED灯R的管脚
#define LED_GPIO_PORT           GPIOB
#define LED_GPIO_CLK            RCC_APB2Periph_GPIOB
#define    ON        1
#define    OFF       0
//    \表示换行符
//ResetBits可用于让LED灯打开
//SetBits可用于让LED灯关闭
#define   LED_G(a)   if(a) \
                        GPIO_ResetBits(LED_GPIO_PORT, LED_G_GPIO_PIN); \
                     else  GPIO_SetBits(LED_GPIO_PORT, LED_G_GPIO_PIN);
#define   LED_B(a)   if(a) \
                        GPIO_ResetBits(LED_GPIO_PORT, LED_B_GPIO_PIN); \
                     else  GPIO_SetBits(LED_GPIO_PORT, LED_B_GPIO_PIN);
#define   LED_R(a)   if(a)\
                       GPIO_ResetBits(LED_GPIO_PORT, LED_R_GPIO_PIN); \
                     else  GPIO_SetBits(LED_GPIO_PORT, LED_R_GPIO_PIN);
void LED_GPIO_Config(void);
#endif /* __LED_H */
  1. LED.c
#include "LED.h"
void LED_GPIO_Config(void)
{
/*定义3个GPIO_InitTypeDef 类型的结构体*/
 GPIO_InitTypeDef  GPIO_InitStruct1;
 GPIO_InitTypeDef  GPIO_InitStruct2;
 GPIO_InitTypeDef  GPIO_InitStruct3;
 /*开启 LED 相关的 GPIO 外设时钟*/
 RCC_APB2PeriphClockCmd(LED_GPIO_CLK, ENABLE);
 GPIO_InitStruct1.GPIO_Pin = LED_G_GPIO_PIN;
 GPIO_InitStruct2.GPIO_Pin = LED_B_GPIO_PIN;
 GPIO_InitStruct3.GPIO_Pin = LED_R_GPIO_PIN;
 GPIO_InitStruct1.GPIO_Mode = GPIO_Mode_Out_PP;
 GPIO_InitStruct1.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_InitStruct2.GPIO_Mode = GPIO_Mode_Out_PP;
 GPIO_InitStruct2.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_InitStruct3.GPIO_Mode = GPIO_Mode_Out_PP;
 GPIO_InitStruct3.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct1); 
 GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct2); 
 GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct3); 
}
 
  1. main.c
#include "stm32f10x.h"   // 相当于51单片机中的  #include <reg51.h>
#include "LED.h"
void Delay( uint32_t count )
{
 for(; count!=0; count--);
}
int main(void)
{
  LED_GPIO_Config();
 while(1)
 {
  LED_G(OFF);
  LED_B(OFF);
  LED_R(OFF); 
  Delay(0xFFFFF); 
  LED_G(ON);
  Delay(0xFFFFF);
  LED_G(OFF);
  Delay(0xFFFFF); 
  LED_B(ON);
  Delay(0xFFFFF);
  LED_B(OFF);
  Delay(0xFFFFF); 
  LED_R(ON);
  Delay(0xFFFFF);
  LED_R(OFF);  
 }
}
  1. 仿真图
    在这里插入图片描述
发布了30 篇原创文章 · 获赞 29 · 访问量 9299

猜你喜欢

转载自blog.csdn.net/qq_44629109/article/details/105235304