无人问津也好,技不如人也罢,都应静下心来,去做该做的事。
最近在学STM32,所以也开贴记录一下主要内容,省的过目即忘。视频教程为江科大(改名江协科技),网站jiangxiekeji.com
本期介绍GPIO的输出,其中会穿插一些C语言的知识。
GPIO简介
GPIO:(General Purpose Input Output)通用输入输出口,俗称IO口。
根据使用场景可配置为8种输入输出模式。
引脚电平:0V-3.3V,部分引脚可容忍5V(指输入最大5V,第一期里引脚分配表中带FT的引脚)
输出模式下可控制端口输出高低电平,用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等。
输入模式下可读取端口的高低电平或电压,用于读取按键输入、外接模块电平信号输入、ADC电压采集、模拟通信协议接收数据等。
GPIO基本结构
GPIO都是挂在APB2总线上,总共7组,每组控制16个口。
GPIO的8种模式
开漏只能输出低电平,推挽高低电平都能输出
LED和蜂鸣器介绍
以下为 两种驱动电路,STM32常用低电平点亮LED,因为STM32一般都是低电平强驱动,高电平弱驱动。
面包板
LED实验
接线图如下
cpp
#include "stm32f10x.h" // Device header
#include "Delay.h"
int main(void)
{
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//配置时钟(选择外设,选择状态)
GPIO_InitTypeDef GPIO_Initstructure;//定义GPIO结构体
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);//配置端口模式(选择哪个GPIO,参数的结构体)
// GPIO_SetBits(GPIOA,GPIO_Pin_0);//将PA0设为高电平
GPIO_ResetBits(GPIOA,GPIO_Pin_0);//将PA0设为低电平
while(1)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_0);//将PA0设为低电平
Delay_ms(500);
GPIO_SetBits(GPIOA,GPIO_Pin_0);
Delay_ms(500);
}
}
操作STM32的GPIO的三个步骤:
1、实验RCC开启GPIO的时钟
2、使用GPIO_Init函数初始化GPIO
3、使用输出或输入函数控制GPIO口。
主要用到两个外设:RCC和GPIO
RCC外设三个常用函数:
void RCC_AHBPeriphClockCmd(uint32_t RCC_AHBPeriph, FunctionalState NewState);
void RCC_APB2PeriphClockCmd(uint32_t RCC_APB2Periph, FunctionalState NewState);
void RCC_APB1PeriphClockCmd(uint32_t RCC_APB1Periph, FunctionalState NewState);
GPIO常用函数: