硬體連線
設計思路:
要點亮LED0和LED1就要把PB5和PE5S設定爲低電平;
要熄滅LED0和LED1就要把PB5和PE5S設定爲高電平;
知識儲備:STM32有四種輸出模式和四種輸入模式
輸出模式 | 輸入模式 |
---|---|
推輓輸出 | 浮空輸入 |
開漏輸出 | 上拉輸入 |
複用推輓輸出 | 下拉輸入 |
複用開漏輸出 | 模擬輸入 |
#define LED0 PBout(5)// 宏定義LED0爲GPIOB.5輸出
#define LED1 PEout(5)// 宏定義LED1爲GPIOE.5輸出
void LED_Init(void);//初始化
//LED.C
//LED IO初始化
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB|RCC_APB2Periph_GPIOE, ENABLE); //使能PB,PE埠時鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED0-->PB.5 埠設定
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推輓輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度爲50MHz
GPIO_Init(GPIOB, &GPIO_InitStructure); //根據設定參數初始化GPIOB.5
GPIO_SetBits(GPIOB,GPIO_Pin_5); //PB.5 輸出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 埠設定
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推輓輸出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度爲50MHz
GPIO_Init(GPIOE, &GPIO_InitStructure); //根據設定參數初始化GPIOE.5
GPIO_SetBits(GPIOE,GPIO_Pin_5); //PE.5 輸出高
}
//主函數
int main(void)
{
delay_init(); //延時函數初始化
LED_Init(); //初始化與LED連線的硬體介面
while(1)
{
LED0=0;//點亮LED0
LED1=1;//熄滅LED1
delay_ms(300); //延時300ms
LED0=1;//熄滅LED0
LED1=0;//點亮LED1
delay_ms(300); //延時300ms
}
}
所以從上面的函數就可以讓LED0,LED1持續的閃爍,在while(1)裏面回圈下去。