STM32 ARM C语言编程之流水灯
#include "stm32f10x.h"//头文件包含 将stm32的函数库stm32f10x.h包进来fz|cnU
Bal$+S
#define RCC_GPIO_LED RCC_APB2Periph_GPIOF//宏定义 LED使用的GPIO时钟95ZyP!
#define LEDn 4//宏定义 LED数量^yW L,$
#define GPIO_LED GPIOF//宏定义 LED灯所使用的gpio组}JF13beU
%'bM){
#define DS1_PIN GPIO_Pin_6//宏定义 LED1所使用的gpio管脚{#ZlM
#define DS2_PIN GPIO_Pin_7//宏定义 LED2所使用的gpio管脚nEJq_
#define DS3_PIN GPIO_Pin_8//宏定义 LED3所使用的gpio管脚}q_<_lq>
#define DS4_PIN GPIO_Pin_9//宏定义 LED4所使用的gpio管脚1Ir21un
qraSRK5
GPIO_InitTypeDef GPIO_InitStructure;//gpio口初始化结构体nr95YSH
ErrorStatus HSEStartUpStatus;// (等待时钟的稳定?)(使强制执行c规则)p)`{Sos
u8 count=0;//定义8位无符号数据变量2
bWH&P/>
void RCC_Configuration(void);//初始化stm32系统时钟RiDJ>6S
void NVIC_Configuration(void);//定义中断管理初始化函数@@R7p
void Delay(vu32 nCount);//声明延时函数h{CL{>d
void Turn_On_LED(u8 LED_NUM);//LED控制函数HHA
o)h_H;
int main(void)-)w@f~Q
{CNih6R
//配置GPIO口管脚模式pV9IHs}
RCC_APB2PeriphClockCmd(RCC_GPIO_LED, ENABLE);//使能LED灯所使用的时钟(/z_Q{"N
GPIO_InitStructure.GPIO_Pin = DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN;//设定LED所使用的管脚,使之有效$|L
Sx
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;//设GPIO口的输出模式为推免模式2y//'3[
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//设置GPIO口的输出时钟为50MHzr/YMLQ
/z4$gb7Y
GPIO_Init(GPIO_LED, &GPIO_InitStructure); //初始化LED灯所使用的管脚vUN22;Z\
GPIO_SetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN);//置所有控制LED的GPIO口管脚为高电平,关闭所有LED灯@:j}Jmg
'H3^e}
while(1)L9r8BK;
{v_
GPIO_SetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN);//置所有控制LED的GPIO口管脚为高电平,关闭所有LED灯P2NQHX
Turn_On_LED(count%4);//点亮一个LED灯*T-
count++;02f~En}>6
Delay(0x2FFFFF);:G [|CPm-
}UxbjA-U[
}E-4b[xNj*+
"7
4-4
void Turn_On_LED(u8 LED_NUM)l}a)ZeR1
{V_R@o3kv;
switch(LED_NUM)rx'RSo#1O
{{ME2ImD
case 0:}{,^@xdyW
GPIO_ResetBits(GPIO_LED,DS1_PIN); //点亮DS1灯'
break;:nh_k4S@v
case 1::WjpzgPuN
GPIO_ResetBits(GPIO_LED,DS2_PIN); //点亮DS2灯wu7Lk3
break;Pnk5mK$
case 2:{}>0e:51
GPIO_ResetBits(GPIO_LED,DS3_PIN); //点亮DS3灯w;;BSJ]+[
break;Qk0R a_
case 3:rxVanDb=W
GPIO_ResetBits(GPIO_LED,DS4_PIN); //点亮DS4灯c-x,fS"&W
break;bbtGXfI+SB
default:%d1,a$*3}
GPIO_ResetBits(GPIO_LED,DS1_PIN|DS2_PIN|DS3_PIN|DS4_PIN); //点亮所有的灯|!1Y*|Q%s
break;qt"G[9;
}i)o2klIkB
}c%^7!FSg
h2)yq:87
void Delay(vu32 nCount)0QBiC]9
{T] R|qlZ
while(nCount--);XQrF4l
}QMA%$