STM32简单项目2
2026/7/23 5:09:32 网站建设 项目流程

STM32指示灯

STLINK插在电脑上,STM32的PWR指示灯是电源灯,会一直亮,另一个连接在PC13口的灯默认是闪烁状态,这是芯片里的一个测试程序。

Kile5配置调试器

1.点击main上面的魔术棒按钮

2.点击Debug,找到Debug下面的Use,默认调试是ULINK改为ST-Link Debugger,然后再点击右边的Settings设置按钮

3.点击上面的Flash Download,选中下面的Reset and Run ,选中之后我们下载程序后会立马复位并执行。

下载程序的按钮

点击LOAD下载程序

下载之后,PC13口的指示灯就不会闪烁了,因为目前没有程序,所以不会闪烁。

配置寄存器

配置3个寄存器

1.RCC寄存器

RCC->APB2ENR = 0x00000010;

作用:打开GPIOC端口的时钟。

  • RCC:Reset and Clock Control(复位和时钟控制)模块的寄存器基地址。

  • APB2ENR:APB2外设时钟使能寄存器

IOPCENIO端口C时钟使能(I/O port C clock enable)

由软件置’1’或清’0’

0:IO端口C时钟关闭;

1:IO端口C时钟开启。

2.配置PC13口的模式

GPIOC->CRH = 0x00300000;

作用:配置GPIOC的某个引脚为推挽输出模式,速度为50MHz。

  • GPIOC:GPIOC端口的寄存器基地址。

  • CRH:端口配置高寄存器(Configuration Register High),负责配置引脚8~15的模式和速度。

  • 0x00300000:二进制是0000 0000 0011 0000 0000 0000 0000 0000,它的有效位在bit20~bit23

0x00300000对应到bit20~23就是0011

  • 在CRH寄存器中,每4个bit控制一个引脚

  • bit20~bit23 控制的是GPIOC的引脚13(PC13)

  • 4个bit被分成两部分:

    • 低2位(bit20~21)配置输出模式00表示输入,01表示输出(10/50MHz),1011也表示输出但速度不同。

    • 高2位(bit22~23)配置输出类型00表示推挽输出,01表示开漏输出,10表示复用功能推挽,11表示复用功能开漏。

  • 低2位是 11 →50MHz输出模式

  • 高2位是00通用推挽输出

端口输出数据寄存器

//0x00000000为低电平0V //PC13口是低电平点亮,全为0就是亮的,否则不亮 GPIOC->ODR = 0x00002000; //让 GPIOC 的第 13 号引脚(PC13)输出高电平(3.3V)

在 ODR(输出数据寄存器)中,每一位控制对应引脚的输出电平

  • 1→ 该引脚输出高电平(3.3V)

  • 0→ 该引脚输出低电平(0V)

库函数

GPIOC外设

RCC_APB2PeriphClocKCmd(RCC_APB2Periph_GPIOC, ENABLE); //GPIOC的外设配置

端口模式

配置模式和频率

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; GPIO_Init(GPIOC, &GPIO_InitStructure); //配置模式和频率

高低电平

GPIO_SetBits(GPIOC, GPIO_Pin_13); //PC13高电平(3.3V) //GPIO_ResetBits(GPIOC, GPIO_Pin_13); //PC13低电平0V

启动文件的分类

GPIO简介

可配置为8种输入输出模式

引脚电平:0V~3.3V,部分引脚可容忍5V

输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等

输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等

GPIO基本结构

内核通过APB2总线对寄存器进行读写,这样就可以完成输出电平和读取电平的功能。

寄存器写1对应的引脚输出高电平,0就是低电平。

驱动器负责增大驱动能力。

GPIO模式

通过配置GPIO的端口配置寄存器,端口可以配置成以下8种模式

模式名称

性质

特征

浮空输入

数字输入

可读取引脚电平,若引脚悬空,则电平不确定

上拉输入

数字输入

可读取引脚电平,内部连接上拉电阻,悬空时默认高电平

下拉输入

数字输入

可读取引脚电平,内部连接下拉电阻,悬空时默认低电平

模拟输入

模拟输入

GPIO无效,引脚直接接入内部ADC

开漏输出

数字输出

可输出引脚电平,高电平为高阻态,低电平接VSS

推挽输出

数字输出

可输出引脚电平,高电平接VDD,低电平接VSS

复用开漏输出

数字输出

由片上外设控制,高电平为高阻态,低电平接VSS

复用推挽输出

数字输出

由片上外设控制,高电平接VDD,低电平接VSS

GPIO_Mode_AIN //模拟输入
GPIO_Mode_IN_FLOATING //浮空输入
GPIO_Mode_IPD //下拉输入
GPIO_Mode_IPU //上拉输入
GPIO_Mode_Out_OD //开漏输出
GPIO_Mode_Out_PP //推挽输出
GPIO_Mode_AF_OD //复用开漏输出
GPIO_Mode_AF_PP //复用推挽输出

点灯是推挽输出

GPIO四个输出函数

1.GPIO_SetBits(GPIOx, GPIO_Pin):可以把指定的端口设置为高电平。

2.GPIO_ResetBits(GPIOx, GPIO_Pin):可以把指定的端口设置为低电平。

3.GPIO_WriteBit(GPIOx, GPIO_Pin, Bit_RESET/Bit_SET):根据第三个参数来设置指定的端口,

Bit_RESET是清除端口值置低电平,Bit_SET是设置端口值置高电平。

4.GPIO_Write(GPIOx, PortVal):可以对16个端口进行写入操作。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询