LED流水灯程序初始化流程
[cpp] view plain copy
- //1.定义结构体变量
- GPIO_InitTypeDef GPIO_InitStructure;
- //2.开启GPIOC的外部时钟,不同的外设开启不同的时钟,IO口复用时两个时钟都要开启。stmf10x_rcc.h
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);
- //3.设置要控制的GPIO管脚
- GPIO_InitStructure.GPIO_Pin=GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;
- //4.设置管脚模式,推挽输出
- GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
- //5.设置GPIOC的引脚速度为50MHz
- GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
- //6.调用库函数初始化GPIOC,初始化IO口
- GPIO_Init(GPIOC,&GPIO_InitStructure);
- //7.关闭所有LED等灯,GPIO_ResetBits(,);GPIO_SetBits(,);置位和清0函数
- GPIO_SetBits(GPIOC,GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5);
寄存器方式
[cpp] view plain copy
- GPIO_TypeDef * GPIOx;
- GPI0x=GPIOA;
- //开启GPIOA外设时钟
- GPIOx->APB2ENR|=1<<2;
- //配置GPIOA.3 4 5为推挽输出50MHZ
- GPIOx->CRL|=0X03<<12|0X03<<16|0X03<<20;
- //GPIOA.3 4 5输出0xff。
- GPIOx->ODR=0XFF;
LED.H
[cpp] view plain copy
- #ifndef __LED_H
- #define __LED_H
- #include "stm32f10x.h"
- #define LED1(a) if(a) \
- GPIO_SetBits(GPIOC,GPIO_Pin_3);\
- else \
- GPIO_ResetBits(GPIOC,GPIO_Pin_3);
- #define LED2(a) if(a) \
- GPIO_SetBits(GPIOC,GPIO_Pin_4);\
- else \
- GPIO_ResetBits(GPIOC,GPIO_Pin_4);
- #define LED3(a) if(a) \
- GPIO_SetBits(GPIOC,GPIO_Pin_5);\
- else \
- GPIO_ResetBits(GPIOC,GPIO_Pin_5);
- void GPIO_Config(void);
- #endif
"\"为行连接符,表示本行与上一行属于同一代码行.
端口设置可以使用“sys.h“下的PXout(n)=0/1;PXin(n);来进行设置