搜档网
当前位置:搜档网 › STM32 ARM C语言编程之流水灯

STM32 ARM C语言编程之流水灯

#include "stm32f10x.h"//头文件包含 将stm32的函数库stm32f10x.h包进来

#define RCC_GPIO_LED RCC_APB2Periph_GPIOF//宏定义 LED使用的GPIO时钟
#define LEDn 4//宏定义 LED数量
#define GPIO_LED GPIOF//宏定义 LED灯所使用的gpio组

#define DS1_PIN GPIO_Pin_6//宏定义 LED1所使用的gpio管脚
#define DS2_PIN GPIO_Pin_7//宏定义 LED2所使用的gpio管脚
#define DS3_PIN GPIO_Pin_8//宏定义 LED3所使用的gpio管脚
#define DS4_PIN GPIO_Pin_9//宏定义 LED4所使用的gpio管脚

GPIO_InitTypeDef GPIO_InitStructure;//gpio口初始化结构体
ErrorStatus HSEStartUpStatus;// (等待时钟的稳定?)(使强制执行c规则)
u8 count=0;//定义8位无符号数据变量

void RCC_Configuration(void);//初始化stm32系统时钟
void NVIC_Configuration(void);//定义中断管理初始化函数
void Delay(vu32 nCount);//声明延时函数
void Turn_On_LED(u8 LED_NUM);//LED控制函数

int main(void)
{
//配置GPIO口管脚模式
RCC_APB2PeriphClockCmd(RCC_GPIO_LED, ENABLE);//使能LED灯所使用的时钟
GPIO_InitStructure.GPIO_Pin = DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN;//设定LED所使用的管脚,使之有效
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//设GPIO口的输出模式为推免模式
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置GPIO口的输出时钟为50MHz

GPIO_Init(GPIO_LED, &GPIO_InitStructure); //初始化LED灯所使用的管脚
GPIO_SetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN);//置所有控制LED的GPIO口管脚为高电平,关闭所有LED灯

while(1)
{
GPIO_SetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN);//置所有控制LED的GPIO口管脚为高电平,关闭所有LED灯
Turn_On_LED(count%4);//点亮一个LED灯
count++;
Delay(0x2FFFFF);
}
}

void Turn_On_LED(u8 LED_NUM)
{
switch(LED_NUM)
{
case 0:
GPIO_ResetBits(GPIO_LED,DS1_PIN); //点亮DS1灯
break;
case 1:
GPIO_ResetBits(GPIO_LED,DS2_PIN); //点亮DS2灯
break;
case 2:
GPIO_ResetBits(GPIO_LED,DS3_PIN); //点亮DS3灯
break;
case 3:
GPIO_ResetBits(GPIO_LED,DS4_PIN); //点亮DS4灯
break;
default:
GPIO_ResetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN); //点亮所有的灯
break;
}
}

void Delay(vu32 nCount)
{
while(nCount--);
}

相关主题