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)里面循环下去。
|