STM32F103ZET6------03點亮LED

2020-08-12 22:40:30

硬體連線
在这里插入图片描述
設計思路:
要點亮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)裏面回圈下去。