STM32F407 GPIO 庫函數編程套路(led與beep總結) 個人筆記


本文由正點原子STM32F407探索者開發板的led和beep實驗,總結了gpio編程的套路。
下文中以hardware 來稱呼可能的硬件外設,如led或beep等。
新建項目后主要用到三個文件:hardware.c ,hardware.h, main.c

hardware.h

#ifndef __HARDWARE_H
#define __HARDWARE_H
#include "sys.h"
void HARDWARE_Init(void);
#endif

hardware.c

#include "hardware.h" 

//初始化該硬件外設與mcu相連的引腳為輸出口		    

void HARDWARE_Init(void)
{   
  //0.定義結構體
  GPIO_InitTypeDef  GPIO_InitStructure;
  //1.使能與外設連接的端口的時鍾(看原理圖,可以知道哪些端口與所需外設相連,多個端口可以用或”|“)
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);//使能GPIOF時鍾(以gpiof為例,實際要看那個端口與外設相連)
  
  //2.初始化外設對應引腳(以GPIOF8為例)

/*(Pin, 幾號引腳,看原理圖
  Mode輸入還是輸出 ,
  OType推挽還是別的,
  Speed ,
  PuPd上拉還是下拉,即默認為高電平還是低電平 共五個)*/
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通輸出模式
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽輸出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN;//下拉
  GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化GPIO
  //3.輸出高低電平:	GPIO_ResetBits  or   GPIO_SetBits
  GPIO_ResetBits(GPIOF,GPIO_Pin_8);  //蜂鳴器對應引腳GPIOF8拉低, 
}

main.c

調用HARDWARE_Init可以接着用GPIO_ResetBits和GPIO_SetBits 函數來輸出高低電平。可以配合delay函數進行一些操作。例如:

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "beep.h"


int main(void)
{ 
 
	delay_init(168);		   //初始化延時函數
	LED_Init();				    //初始化LED端口
	BEEP_Init();         	//初始化蜂鳴器端口
	
	while(1)
	{ 
		GPIO_ResetBits(GPIOF,GPIO_Pin_9); // DS0拉低,亮   等同LED0=0;
		GPIO_ResetBits(GPIOF,GPIO_Pin_8); //BEEP引腳拉低, 等同BEEP=0;
		delay_ms(300);                    //延時300ms
		GPIO_SetBits(GPIOF,GPIO_Pin_9);   // DS0拉高,滅   等同LED0=1;
		GPIO_SetBits(GPIOF,GPIO_Pin_8);   //BEEP引腳拉高, 等同BEEP=1;
		delay_ms(300); 										//延時300ms
	}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM