STM32点亮LED

点亮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);
}

在功能函数中加入延时,就是流水灯了;
如果一直亮的话,去掉延时,删除给予高电平的语句即可;

发布了4 篇原创文章 · 获赞 3 · 访问量 52

猜你喜欢

转载自blog.csdn.net/include1_/article/details/105422099