點亮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);
}
在功能函數中加入延時,就是流水燈了;
如果一直亮的話,去掉延時,刪除給予高電平的語句即可;