STM32F4xx外设
led灯相关
单片机stm32f407ZGTx 共有两个LED灯,由两个引脚控制:GPIOF.9-->D1,GPIOF.10-->D2,对应引脚的电平置低,其对应的led灯点亮,反之熄灭。
GPIOF.9高电平 - LD1亮,GPIOF.9低电平 - LD1灭
GPIOF.10高电平 - LD2亮,GPIO.F10低电平 - LD2灭
led相关代码
- LED初始化
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF,
ENABLE);//使能GPIOF时钟
//GPIOF.9,GPIOF.10初始化设置
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9
| GPIO_Pin_10;
GPIO_InitStructure.GPIO_Mode= GPIO_Mode_OUT;
//普通输出模式
GPIO_InitStructure.GPIO_OType=GPIO_OType_PP;
//推挽输出
GPIO_InitStructure.GPIO_Speed=GPIO_Speed_100MHz;
//100MHz(GPIO传输速度)
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
//上拉
GPIO_Init(GPIOF, &GPIO_InitStructure);
//初始化
GPIO_SetBits(GPIOF,GPIO_Pin_9|GPIO_Pin_10);
//GPIOF.9,GPIOF.10设置高,灯灭
}
2.LED灯闪烁代码
void LED_Flare(void)
{
GPIO_ResetBits(GPIOF,GPIO_Pin_9);
//LED0对应引脚GPIOF.9拉低,亮 等同D1=0;
GPIO_SetBits(GPIOF,GPIO_Pin_10);
//LED1对应引脚GPIOF.10拉高,灭 等同D2=1;
delay_ms(500); //延时500ms
GPIO_SetBits(GPIOF,GPIO_Pin_9);
//LED0对应引脚GPIOF.9拉高,灭 等同D1=1;
GPIO_ResetBits(GPIOF,GPIO_Pin_10);
//LED1对应引脚GPIOF.10拉低,亮 等同D2=0;
delay_ms(500); //延时500ms
}
3.LED 灯闪烁的其他实现方式
(1)方式1
//通过 位带 操作实现IO口控制
LED0=0; //LED0亮
LED1=1; //LED1灭
delay_ms(500);
LED0=1; //LED0灭
LED1=0; //LED1亮
delay_ms(500);
(2)方式2
//通过 直接操作寄存器 方式实现IO口控制
GPIOF->BSRRH=GPIO_Pin_9; //LED0亮
GPIOF->BSRRL=GPIO_Pin_10; //LED1灭
delay_ms(500);
GPIOF->BSRRL=GPIO_Pin_9; //LED0灭
GPIOF->BSRRH=GPIO_Pin_10; //LED1亮
delay_ms(500);
4 主函数处理
int main(void)
{
delay_init(168); //初始化延时函数
LED_Init(); //初始化LED灯
while(1)
{
LED_Flare(); //LED灯闪烁
}
}