STM32学习记录之GPIO篇

发布者:EtherealMelody最新更新时间:2018-09-06 来源: eefocus关键字:STM32  GPIO 手机看文章 扫描二维码
随时随地手机看文章

本篇学习目的: 
一、学会对STM32芯片GPIO的基本操作 
二、对GPIO的相关函数进行二次封装,以便于后期开发

开发板GPIO原理图如下 
这里写图片描述

由图可知LED接在GPIOC的PC0-PC7

STM的GPIO有如下8中模式 
这里写图片描述

GPIO相关库函数 
GPIO模式配置函数:GPIO_Init(GPIO_TypeDef *GPIOx,GPIO_InitTypeDef *GPIO_InitStruct); 
第一个参数用来指定GPIO口,取值范围GPIOA—GPIOG 
第二个参数用来初始化参数结构体指针,参数结构体定义如下:

typedef struct{

    uint16_t GPIO_Pin; //选择要设置的Pin口

    GPIOSpeed_TypeDef GPIO_Speed;//设置IO的速率

    GPIOMode_TypeDef GPIO_Mode;//设置IO的工作模式

}GPIO_InitTypeDef;


GPIO实验例程:


#define LED  GPIO_Pin_All

void Led_Init(){

    GPIO_InitTypeDef GPIO_InitStruct;   //声明一个参数结构体变量


    SystemInit();//初始化系统时钟

    RCC_APB2PerichClockCmd(RCC_APB2Perich_GPIOC,ENABLE);


    //具体参数配置

    GPIO_InitStruct.GPIO_Pin = LED;

    GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;

    GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;

    //初始化GPIO

    GPIO_Init(GPIOC,&GPIO_InitStruct);

}


GPIO输出函数 

GPIO_Write(GPIO_TypeDef* GPIOx,u16 PortVal); 

该函数一次操作一组GPIO。


GPIO_SetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin); 

该函数将相应的位置为1


GPIO_ResetBits(GPIO_TypeDef* GPIOx, u16 GPIO_Pin); 

该函数将相应的位置为0


实验例程:


void Led_DisPlay(){

    GPIO_SetBits(GPIOC,LED); // close

    delay(6000000);//自定义延迟函数,约1s

    GPIO_ResetBits(GPIOC,LED);// open

    delay(6000000);

}


关键字:STM32  GPIO 引用地址:STM32学习记录之GPIO篇

上一篇:STM32之GPIO按键实验
下一篇:使用stm32f103 PA11不能正常使用IO问题

推荐阅读最新更新时间:2024-03-16 16:13

stm32之TIM-高级定时器应用实例一(详细)
硬件:stm32f103c8t6 开发工具:Keil uVision4 下载调试工具:ARM仿真器 如果第一次接触定时器,可以先看基本定时器。本篇内容较多,如果想直接动手操作,可以跳到后面的实验代码。 stm32标准库对定时器外设建立了4个初始化结构体,定时器分为基本定时器、通用定时器、高级定时器,针对不用的定时器要使用不同初始化结构体。下面是4个初始化结构体的适用分类: TIM_TimeBaseInitTypeDef (基本定时器、通用定时器、高级定时器) TIM_OCInitTypeDef (通用定时器、高级定时器) TIM_ICInitTypeDef (通用定时器、高级定时器
[单片机]
<font color='red'>stm32</font>之TIM-高级定时器应用实例一(详细)
IAR FOR STM8 学习笔记 固件库 GPIO
经过一番挣扎,还是决定使用官方的固件库了。。 从网上下一个STM8S的固件库,记得是FOR IAR的。 找到里面的IAR模板就可以开始用了。 这些都是直接写好的库函数,可以直接调用,但首先得先读懂,先了解些必备知识。 STM8的寄存器的地址 在STM8中,与某个外围设备有关的寄存器在地址上都是顺序排列的;比如与GPIO有关的寄存器有ODR、IDR、DDR、CR1、CR2,与PA口有关的这五个寄存器就被安排在了0x00 5000~0x00 5004这5个地址空间中,它们有一个0x005000的基地址,分别偏移0,1,2,3,4。 ”stm8s.h 中与GPIO有关的定义,以及固件库中访问外围设备寄存器的方法
[单片机]
IAR FOR STM8 学习笔记 固件库 <font color='red'>GPIO</font>
基于STM32的MDK程序启动
;//HeapSize(inBytes) 0x0-0xFFFFFFFF:8 ;// Heap_SizeEQU0x00000020;//定义堆空间大小 AREAHEAP,NOINIT,READWRITE,ALIGN=3;//定义一个数据段,8字节对齐 __heap_base Heap_MemSPACEHeap_Size;//保留Heap_Size的堆空间 __heap_limit;//标号,代表堆末尾地址,后面有用 PRESERVE8;//指示编译器8字节对齐 THUMB;//指示编译器为THUMB指令 ;VectorTableMappedtoAddress0atReset AREARESET,DATA,READONLY;//
[单片机]
STM32初学笔记3之外部中断
学习的第三部分,我选择了外部中断,因为个人觉得除了时序问题,我们应用的最多的就要数中断了,当然还有一个定时器还没学,呵呵,只能往后放一下了。当然,我不打算花太多时间去搞GPIO,所以就自己看了一下手册,能用就行了。 反正学习这些东西还是根据个人的习惯吧,我学习主要也就是参考ST给的示例程序,反正还是很有用的。今天花了差不多两个小时的时间根据EXTI的示例程序自己编写了一个程序,最后在ALIENTEK上面运行成功,下面将示例代码展示如下: 笔者将跟硬件平台有关的配置放在一个板级支持包的源文件里面,具体请查看: 板级支持包的应用 一文。 一、GPIO的配置 二、嵌入向量中断控制器配置 三、中断服务程序 说
[单片机]
<font color='red'>STM32</font>初学笔记3之外部中断
STM32输出比较模式输出不动频率的脉冲
//以下为TIM配置程序 void TIM1_PWM_INIT(void) //TIM1配置PWM输出参数 { u32 temp_fre,temp_duty; TempC = 60; //设置频率初始值 TempD = 4; //设置初始占空比1 / 2 temp_fre = (1000000 / TempC) - 1; temp_duty = ((temp_fre + 1) / TempD); TIM_TimeBaseStructure.TIM_Prescaler = 72; TIM_TimeBaseStructure.TIM_CounterMode
[单片机]
stm32跑马灯——寄存器和位操作
寄存器版: GPIO基础: 每组io口有7个寄存器。也就是7个寄存器,一共可以控制一组GPIO的16个IO口。 硬件连接: 例如: 由上图1可知:要使用到LED0和LED1,他们的IO口分别为PB5和PE5 由上图2可知:要使用到LED0和LED1,他们的IO口分别为PA8和PD2 GPIO的输出模式为推挽输出。 代码: 使能IO口时钟:配置寄存器RCC APB2ENR. 初始化IO口模式:配置寄存器GPIOx CRH/CRL 操作IO口,输出高低电平:配置寄存器GPIOX_ODR或者BSRR/BRR. 这里采用上图1的的原理图: led.h: #ifndef __LED_H //避免重复引用 #d
[单片机]
<font color='red'>stm32</font>跑马灯——寄存器和位操作
聊聊一个STM32中断处理问题
先看一段代码: while(1) { if(EXTI_Sign==1) { HAL_Delay(Period); HAL_NVIC_EnableIRQ(EXTI2_3_IRQn); HAL_NVIC_EnableIRQ(EXTI2_3_IRQn); EXTI_Sign=0; 。。。。。。 } } 有人使用STM32G0系列的芯片开发产品,有段功能测试验证代码如上所示,相同的函数必须调用2次才能正常运行,调用2次倒也罢了,关键是必须!颇为纳闷。 这里开启了PA3的外部中断功能,上下沿均可触发。PA3接收外来报警信号,类似于烟感报警器。报警信号是一串脉冲信号,报警信号过来时存在多次
[单片机]
聊聊一个<font color='red'>STM32</font>中断处理问题
SPI接口说明及原理
1简介 SPI:Serial Peripheral Interface,是串行外设接口。 SPI是由摩托罗拉于 1985 年前后开发,是一种适用于短距离、设备到设备通信的同步串行接口。 从那时起,这种接口就已成为许多半导体制造商,特别是微控制器(MCU)和微处理器(MPU)采用的事实标准。 2SPI接口 SPI总线是一种4线总线,通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以。 MOSI:Master Output Slave Input,主设备数据输出,从设备数据输入; MISO:Master Input Slave Output,主设备数据输入,从设备数据输出; SCLK:Serial Clock,时
[单片机]
SPI接口说明及原理
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved