点亮LED分以下几步:
1:开时钟
2:配置模式(关于GPIO口的8种模式,我主页找)
3:使能
4:功能函数
以下用寄存器和库函数两种方法实现
电路图中,LED引脚为PB1
代码如下:
寄存器版
void led_config(void) //配置
{
//开B端口时钟
RCC->APB2ENR |=(0x01<<3);//RCC->APB2ENR 外设时钟使能寄存器 GPIOB属于APB2时钟
//配置模式 推挽输出 (0011 )
//GPIOB->CRL 是端口配置地寄存器 配置I/O口
//第一步,先把寄存器相应位清零,然后根据(推挽输出)把相应位置1
GPIOB->CRL &=~(0x0f<<4);
GPIOB->CRL |=(0x03<<4);
}
void led1_ing(void)//功能函数
{
//低电平 点亮
GPIOB->ODR &=~(0X01<<1);//GPIOB->ODR 是端口输出寄存器,给LED引脚一个低电平 则灯亮
//延时
Delay_ms(1000);
//高电平熄灭
GPIOB->ODR |=(0x01<<1);//相应的给予高电平则灯灭
//加延时
Delay_ms(1000);
库函数版
void led_config(void)
{
//这里是结构体,内部包含所有的所需要设置的
GPIO_InitTypeDef PB1;
//开时钟函数 给GPIOB时钟使能
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
//选择引脚 因为电路图是PB1 所以选择GPIO_Pin_1
PB1.GPIO_Pin=GPIO_Pin_1;
//选择输出速度
PB1.GPIO_Speed=GPIO_Speed_50MHz;
//模式 推挽输出
PB1.GPIO_Mode=GPIO_Mode_Out_PP;
//根据配置的结构体初始化外设
GPIO_Init(GPIOB,&PB1);
}
void led_ing(void)//功能函数
{
//对引脚PB1设置低电平
GPIO_ResetBits(GPIOB,GPIO_Pin_1);
delay_nms(1000);
//对引脚PB1设置高电平
GPIO_SetBits(GPIOB,GPIO_Pin_1);
delay_nms(1000);
}
在功能函数中加入延时,就是流水灯了;
如果一直亮的话,去掉延时,删除给予高电平的语句即可;