STM32系列文章目录
前言
配置GPIO引脚前先查看板子原理图,LED配置在哪个IO口,本篇以正点原子、STM32F103RCT6为例。
LED灯我们主要用到的固件库文件是:
stm32f10x_gpio.c /stm32f10x_gpio.h
stm32f10x_rcc.c/stm32f10x_rcc.h
misc.c/ misc.h
stm32f10x_usart /stm32f10x_usart.h
也可把外设固件库全部加入到工程,方便延伸。
一、创建
二、代码部分
1.main.c
int main(void)
{
delay_init(); //延时函数初始化
LED_Init(); //初始化与LED连接的硬件接口
while(1)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_8); //LED0输出低
GPIO_SetBits(GPIOD,GPIO_Pin_2);//LED1输出高
delay_ms(1000); //延时1000ms闪一次
GPIO_SetBits(GPIOA,GPIO_Pin_8);//LED0输出高
GPIO_ResetBits(GPIOD,GPIO_Pin_2);//LED1输出低
delay_ms(1000);
}
}
2.led.c
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE); //使能PB,PE端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5
GPIO_SetBits(GPIOA,GPIO_Pin_8); //PB.5 输出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; //LED1-->PE.5 端口配置, 推挽输出
GPIO_Init(GPIOD, &GPIO_InitStructure); //推挽输出 ,IO口速度为50MHz
GPIO_SetBits(GPIOD,GPIO_Pin_2); //PE.5 输出高
}
3.led.h
#ifndef __LED_H
#define __LED_H
#include "gpio.h"
#define LED0 PAout(8) // PA8
#define LED1 PDout(2) // PD2
void LED_Init(void);//初始化
#endif
三、扩展什么是GPIO
GPIO(General-Purpose Input/Output,通用输入/输出)是一种在电子设备和计算机中常见的接口类型。GPIO 可以用于与外部设备或电路进行交互。这些接口可以同时作为输入和输出使用,根据具体的配置和需求进行设定。
GPIO 的功能特点
-
基本定义:
- GPIO 接口是专为通用目的设计的,可以用于与外部设备或电路进行交互。这些接口可以同时作为输入和输出使用。
- 作为输入,GPIO 可以接收来自传感器、开关或其他外部设备的信号。
- 作为输出,GPIO 可以向外部设备发送数字信号,例如控制 LED 的亮灭、驱动电机运转等。
-
功能特点:
- GPIO 接口具有多个引脚,每个引脚都可以配置为输入或输出。
- GPIO 接口通常包括控制寄存器,如 GPxCON、GPxDAT 等,用于控制 GPIO 引脚的功能和状态。
- GPIO 可以支持简单的开/关状态,适用于控制 LED、继电器等。
- GPIO 接口可以用于读取外部传感器的状态,例如按钮、温度传感器等。
-
扩展功能:
- GPIO 接口还可以用于扩展 I/O 口,当微控制器或芯片组没有足够的 I/O 端口时,或者当系统需要采用远端串行通信或控制时,GPIO 产品能够提供额外的控制和监视功能。
-
实现细节:
- GPIO 的实现细节可能会因设备的不同而有所差异,但其基本思想是允许用户通过 GPIO 接口接收或发送电信号至几乎任何外部设备。
- GPIO 接口上的引脚可以根据需要配置为发送或接收电信号。
- GPIO 接口还可以包括特殊用途的引脚,这些引脚的具体功能取决于具体的 GPIO 设计。
-
应用领域:
- GPIO 接口广泛应用于嵌入式系统中,用于控制简单的外部设备或电路。
- GPIO 接口可用于构建自定义电子设备,例如 DIY 机器人、气象站等。