STM32例子-------流水灯(标准库函数)
工程在这里分为三个程序。main.c ;LED.h ;LED.c
- 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 */
- 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);
}
- 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);
}
}
- 仿真图