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
	}
}
原文地址:https://www.cnblogs.com/YuQiao0303/p/10011127.html