1.硬件连接
2.设计思路
要点亮LED0和LED1就要把PB5和PE5设置为低电平;
要熄灭LED0和LED1就要把PB5和PE5设置为高电平;
3.知识储备:STM32有四种输出模式和四种输入模式
4.编写代码
4.1方便阅读,宏定义
#define LED0 PBout(5)// 宏定义LED0为GPIOB.5输出
#define LED1 PEout(5)// 宏定义LED1为GPIOE.5输出
void LED_Init(void);//初始化
4.2IO初始化(时钟使能、配置输入、选择io口、配置速度、高低电平初始化等)
//LED.C
//LED IO初始化
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //使能PB,PE端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5
GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 输出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOE, &GPIO_InitStructure); //根据设定参数初始化GPIOE.5
GPIO_SetBits(GPIOE,GPIO_Pin_5); //PE.5 输出高
}
4.3编写主函数
//主函数
int main(void)
{
delay_init(); //延时函数初始化
LED_Init(); //初始化与LED连接的硬件接口
while(1)
{
LED0=0;//点亮LED0
LED1=1;//熄灭LED1
delay_ms(300); //延时300ms
LED0=1;//熄灭LED0
LED1=0;//点亮LED1
delay_ms(300); //延时300ms
}
}
上面的函数就可以让LED0,LED1持续的闪烁,在while(1)里面循环下去。
|