STM32_GPIO推挽模式

头文件

GPIO.H //GPIO头文件   LED.H  //LED头文件  //BEEP.H  //LED头文件
#ifndef __GPIO_H  //#ifndef __LED_H   #ifndef __BEEP_H 
#define __GPIO_H  //#define __LED_H   #define __BEEP_H
 
#define GPIO PAout(8)  //PA8  #define LED0 PAout(8)     #define BEEP0 PAout(8)
#define GPIO PDout(2)  //PD2  #define LED1 PDout(2)     

void GPIO_Init(void);  //初始化  void LED_Init(void);   void BEEP_Init(void);
    
#endif

define GPIO PAout(1),define GPIO PAout(2).....

define LED PAout(1),define LED PAout(2)......

修改GPIO管脚要与源文件中GPIOA-B管脚对应

注意:#endif后面一定要回车键,从起一行,不然会报错。

源文件

GPIO.c  //LED.h  //BEEP.h
#include "GPIO.h" //#include "LED.h"  #include "BEEP.h"
#include "stm32f10x.h"
void GPIO_Init(void) //void LED_Init(void)  void BEEP_Init(void) 
{
    GPIO_InitTypeDef  GPIO_InitStructure;  //宏定义
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); //使能GPIOA端口时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);  //使能GPIOD端口时钟
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8;                //定义GPIOA输出的管脚号,Pin8
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;          //定义GPIOA输出模式,推挽输出
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;        //IO口速度为50MHz
    GPIO_Init(GPIOA,&GPIO_InitStructure);                  //初始化GPIOA
    GPIO_SetBits(GPIOA,GPIO_Pin_8);                        //  PE.8 输出为高   
    //GPIO_ResetBits(GPIOA,GPIO_Pin_8);输出0,关闭蜂鸣器输出 

    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;           //定义GPIOD输出的管脚号,Pin8
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;          //定义GPIOD输出模式,推挽输出
    GPIO_Init(GPIOD,&GPIO_InitStructure);             //初始化GPIOD
    GPIO_SetBits(GPIOD,GPIO_Pin_2);                   //  PE.2 输出为高   
    //GPIO_SetBits(GPIOD,GPIO_Pin_2);输出1,开启蜂鸣器输出 
}

可以修改GPIO管脚,例子:

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE)

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE)

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE)

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE)

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1; 

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_2;....

GPIO_SetBits(GPIOA,GPIO_Pin_8)//GPIO_SetBits(GPIOB,GPIO_Pin_1)...

注意:最后 } 后面一定要回车键,从起一行,不然会报错。

main.c

main.c
#include "stm32f10x.h"
#include "GPIO.h"  //引用GPIO,后面才能调用  #include "LED.h"  #include "BEEP.h"
#include "delay.h" 

 int main(void)
{
delay_init();		 //延时函数初始化
GPIO_Init();	     //初始化与LED连接的硬件接口 LED_Init();初始化LED接口  BEEP_Init();初始化蜂鸣器接口
while(1)
{
	LED0=0;  //GPIOA_PA8输出低
	LED1=1;    //GPIOD_D2输出高
	BEEP0=0;  //输出0,关闭蜂鸣器输出
	delay_ms(300);  //延时300毫秒
	LED0=1; //GPIOA_PA8输出高  
	LED1=0;   //GPIOD_D2输出低
	BEEP0=1;  //输出1,开启蜂鸣器输出
	delay_ms(300); //延时300毫秒
}
}

可以自己尝试下修改延时观察下LED闪烁频率与蜂鸣器响声频率。

注意:最后 } 后面一定要回车键,从起一行,不然会报错。

最后
本人还未理解,求大神补充!!!!
(〒▽〒)由于本人能力有限以及是个小迷糊,如有错误或是不妥的地方,麻烦各位及时指出,以免我误导他人,多谢🥳

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值