STM32-第一节-新建工程,GPIO输出(LED,蜂鸣器)

发布于:2025-07-01 ⋅ 阅读:(22) ⋅ 点赞:(0)

一、新建工程:

1.Keil中新建工程,选择开发板型号。

2.工程文件夹建立Start,Library等分类,复制模版工程中的文件到工程文件夹中。

3.在Keil中添加分组,添加文件。

4.工程选项设置:

c/c++中:Include Paths内声明所有包含头文件的分类文件夹(Start,Library等)
                Define内定义USE_STDPERIPH_DRIVER

Debug中:下拉列表选择对应调试器
                  Settings - Flash Download里选择Reset and Run。

5.在main.c文件中编程即可。

#include "stm32f10x.h"                  // Device header

int main
{

  return 0;
}

二、GPIO:

1.GPIO介绍:

通用输入输出口。可配置为8种模式。引脚电平 0 - 3.3V。

2.系统结构:

在stm32中,挂载在APB2总线上。

名称按照GPIOA,GPIOB等命名。

每个GPIO有16个引脚,编号0-15,GPIOA_0一般称作PA0。

3.几种模式介绍:

(1)上拉/下拉输入:不接输入时默认输入为高/低电平。

(2)模拟输入:GPIO无效,引脚直接接入ADC模块(即输入为模拟信号)

(3)开漏输出:输出时高电平为高阻态,低电平为VSS。

(4)推挽输出:输出时高电平为VDD,低电平为VSS。

 4.函数介绍:

(1)将GPIO使能:

//介绍:APB2总线时钟使能函数
//参数1:需要时钟信号的外设,具体名称可右键函数找到定义查看
//(此次为RCC_APB2Periph_GPIOA,因为要点亮PA0口的LED)
//参数2:ENABLE or DISABLE

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
 (2)GPIO设置参数结构体:

    //介绍:GPIO设置参数结构体
    //结构体成员:Mode设置模式,Pin目标引脚,Speed设置输出速度
    //Mode值:GPIO_Mode_AIN模拟输入,GPIO_Mode_IPD下拉输入,GPIO_Mode_IPU上拉输入,
    //                GPIO_Mode_Out_OD开漏输出,GPIO_Mode_Out_PP推挽输出
    //Pin值:GPIO_Pin_0到GPIO_Pin_15,GPIO_Pin_All(激活多个端口,用按位或
    //Speed值:GPIO_Speed_50MHz(选这个就行)

GPIO_InitTypeDef GPIO_InitStructure;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
(3)告诉GPIO参数:

//介绍:GPIO初始化函数
//参数1:要设置的GPIO
//参数2:一个结构体,包含GPIO的设置参数

GPIO_Init(GPIOA, &GPIO_InitStructure);
(4)GPIO写入函数:    

//介绍:设置GPIO引脚的值,set为置1,reset为置0
//参数:GPIOx,目标引脚

GPIO_SetBits(GPIOA,GPIO_Pin_13);
GPIO_ResetBits(GPIOA,GPIO_Pin_13);

 //参数:GPIOx,目标引脚,Bit_RESET或Bit_SET
 //参数:GPIOx,对应值,低位为PA0,高位为PA15

GPIO_WriteBit(GPIOA,GPIO_Pin_13,Bit_SET);
GPIO_Write(GPIOA,0x0001);

三、LED灯闪烁:

1.连线图:

2.组合代码:

#include "stm32f10x.h"                  // Device header
#include "Delay.h"

int main(void)
{
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
	
	GPIO_InitTypeDef GPIO_InitStructure;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_Init(GPIOA, &GPIO_InitStructure);
	
	while (1)
	{
		GPIO_ResetBits(GPIOA, GPIO_Pin_0);
		Delay_ms(500);
		GPIO_SetBits(GPIOA, GPIO_Pin_0);
		Delay_ms(500);
	}
}

四、蜂鸣器:

注意:A15,B3,B4为调试端口,不要使用。

1.蜂鸣器介绍:

低电平响,高电平不响。代码原理同上。

2.接线图:

 


网站公告

今日签到

点亮在社区的每一天
去签到