头文件
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闪烁频率与蜂鸣器响声频率。
注意:最后 } 后面一定要回车键,从起一行,不然会报错。
最后
本人还未理解,求大神补充!!!!
(〒▽〒)由于本人能力有限以及是个小迷糊,如有错误或是不妥的地方,麻烦各位及时指出,以免我误导他人,多谢🥳