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

在功能函數中加入延時,就是流水燈了;
如果一直亮的話,去掉延時,刪除給予高電平的語句即可;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章