[CortexM0--stm32f0308]关于GPIO

发布者:平静宁静最新更新时间:2018-07-09 来源: eefocus关键字:CortexM0  stm32f0308  GPIO 手机看文章 扫描二维码
随时随地手机看文章

    问题描述:GPIO对于每颗MCU都需要了解,常见的如LED和Button的控制,GPIO就是用来供MCU输入和输出用。

    GPIO简述:STM32的ARM CortexM 系列IC的GPIO设计应当大体相同,其他家的GPIO做法会不一样,GPIO也是由电路构成,不同的IC厂商会有自己的hardware电路的具体实现,包括开出的register和peripheral map都会不同。STM的IC推广很好,对于其GPIO的了解,大体流程以及基本的概念和其他家的都会是相通的,会大有裨益。

    这款IC的GPIO对所有pin用port来归类,PortA,PortB等,每一组port有基本的register:

    4个配置寄存器:GPIOx_MODER(配置GPIO模式,输入输出等), GPIOx_OTYPER(输出模式,开漏推挽等), GPIOx_OSPEEDR(输出速度配置), GPIOx_PUPDR(上拉,下拉配置);

    2个数据寄存器:GPIOx_IDR, GPIOx_ODR(存放Port要输入/输出的数据,是以port为单位的,IDR只读,ODR可读可写);

    1个set/reset寄存器:GPIOx_BSRR(简单的将对应pin置1或清0,是ODR的位操作形式。BRR用来set,即置为1。BSRR用来reset,即置为0);

    另外:portA和portB有个locking register--GPIOx_LCKR,和2个可选功能寄存器--GPIOx_AFRH, GPIOx_AFRL。

    GPIO模式:GPIO是配置用来输入输出的,但是只能是输入或输出中的某一种模式,如果同时输入又输出,那就乱掉了。通过寄存器可以将GPIO模式配置为如下:

    Input floating 
 Input pull-up
 Input-pull-down
 Analog
 Output open-drain with pull-up or pull-down capability
 Output push-pull wit h pull-up or pull-down capability
 Alternate function push-pull with pull-up or pull-down capability
 Alternate function  open-drain with pull-up  or pull-down capability

    这其中关于push-pull, pull-up,pull-down等概念还是比较重要的,可以看下相关电路,在使用GPIO时许多时候都是需要清楚是用推挽,上拉,下拉,开漏等模式的,不然由于设置不对,可能会造成IO工作与预期不符:

    如下为GPIO的IO pin的电路结构图:


    所有Port都有外部中断的功能,中断部分内容这里不详述。

    GPIO输入配置:配置为输入模式时电路如下


    GPIO输出配置:配置为输出模式时电路如下


    GPIO复用模式配置:与基本的输入输出没有什么区别,只是在IC内部实际连接的是Alternate function output/input了,不再连接到IDR和ODR了。具体复用到何种periperal IO,得看对应的peripheral的功能。

    GPIO模拟方式配置:前面的方式都是数字的方式和外设进行通信,数字方式最终表现在IO pin的输入输出都是0和1,数据通过register来读取或写入,而模拟方式则是将IO pin连接到模拟电路,通过电压、电流的方式和外设进行通信了。其配置电路如下:


    对于模拟方式而言,Analog input/output在IC内部会连接上ADC/DAC设备的,GPIO的这种Analog模式大概也只有ADC/DAC主要会用到,因为目前的IC的core处理器都是数字模式工作,不可能直接操作Analog信号的。

    一点问题:GPIO的Speed配置,从code看分为2M, 10M和50M三种,一般选择50M,但GPIO部分的spec并没有对这里的说明。感觉这里和RCC配置应当是相关的,在discovery开发板,将HSI作为系统时钟源,配置PLL 12倍频HSI/2,得到48M的SYSCLK,AHB 1倍分频,因此HCLK==SYSCLK也为48M,APB 也1倍分频,PCLK==HCLK也为48M。某GPIO pin时钟源设置为RCC_AHBPeriph_GPIOC,即该GPIO是以HCLK做时钟源,因为每个AHB clock cycle从IO pin采数据到IDR/ODR寄存器,因此其速度应当实际为48M。可配置的GPIO速度2M, 10M, 50M中,50M最接近。不过还是得找下spec说明验证才行 。


关键字:CortexM0  stm32f0308  GPIO 引用地址:[CortexM0--stm32f0308]关于GPIO

上一篇:stm32f030-GPIO配置
下一篇:STM32入门学习之ADC(STM32F030F4P6基于CooCox IDE)

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

【STM32H7教程】第17章 STM32H7之GPIO的HAL库API
17.1 初学者重要提示 1、 如何阅读HAL库源码的问题 HAL库实现的函数有复杂的,也有简单的,简单的可以直接阅读代码。复杂的代码阅读起来比较耗时间,如果再配合参考手册抠每个寄存器的配置,那就更消耗时间了。所以对于这种函数,用户仅需了解每个部分实行的功能即可,而且HAL库都做了关键注释,以说明这部分实现的功能。所以用户没有必要去抠每个配置是如何实现的,仅需知道实现了什么功能。以后工程项目有需要了解具体配置时,再看即可。 2、 学习本章节前,务必保证已经学习了第15章。 17.2 GPIO涉及到的寄存器 GPIO外设涉及到的寄存器比较少,也容易理解,推荐大家阅读GPIO源码的时候将参考手册中对应的寄存器功能做一个了解
[单片机]
如何在PIC单片机的GPIO引脚上生成PWM信号
PWM信号生成是每个嵌入式工程师工具库中的重要工具,它们非常适用于控制伺服电机位置,在转换器/逆变器中切换少量电源电子集成电路等许多应用,甚至用于简单的LED亮度控制。在pic 微控制器中, pwm 信号可以通过设置所需的寄存器使用比较、捕获和 pwm (ccp) 模块生成。 如果我们使用CCP模块,PIC16F877A 只能在引脚RC1和RC2产生PWM信号,由此我们可能会遇到需要更多引脚来实现PWM功能的情况。例如,我想控制6个RC伺服电机,CCP模块是不行的。于是在这种情况下,我们可以使用定时器模块对GPIO引脚进行编程以产生PWM信号,这样我们就可以产生尽可能多的PWM信号。还可以考虑其他硬件技术,比如使用多路复用器
[单片机]
如何在PIC单片机的<font color='red'>GPIO</font>引脚上生成PWM信号
STM32GPIO八种工作模式区别
在Cortex-M3里,对于GPIO的配置种类有8种: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (4)GPIO_Mode_IPU 上拉输入 (5)GPIO_Mode_Out_OD 开漏输出 (6)GPIO_Mode_Out_PP 推挽输出 (7)GPIO_Mode_AF_OD 复用开漏输出 (8)GPIO_Mode_AF_PP 复用推挽输出 I/O端口位的基本结构 1、推挽输出 推挽 电路 是两个参数相同的三极管或MOSFET,以推挽方式存在于电路中,各负责正负半周的波形放大任务,电路工作时,两只对称的功率开关管每次只
[单片机]
STM32<font color='red'>GPIO</font>八种工作模式区别
jz2440裸板开发之GPIO:点亮一个led灯(1)
实验目的:点亮一个led灯。(使用arm汇编指令) 实验原理: 在这里点亮一个nLED_2,其对用的引脚是GPF5,在GPIO中,每个引脚对有配置寄存器和数据寄存器,对于本例其配置寄存器为GPFCON:0x56000050,和数据寄存器GPFDATA:0x56000054.要设置GPF5(GPF5为GPFCON的第十和十一引脚,【11,10】=01时为输出)为输出引脚,并根据电路原理图,可知是设为低电平,才能点亮LED2.所以 =0x00000400). =0x00000000 实验步骤: 在linux下编辑源程序,然后利用自己编写的Makefile来对源程序的编译和链接生成bin文件,最后通过文件传输到wi
[单片机]
STM32学习笔记之GPIO的基本使用
楼学习中主要使用的资料有 战舰V3资料盘——教学视频 《STM32F1开发指南-库函数版本_V3.1》 (PDF) 《零死角玩转STM32》 野火出版 使用的学习板为屹讯电子嵌入式平台v2(MCU为 STM32F103RCT6) **某些IO口带有FT标识,代表其最大工作电压达到5V CPU能直接读取外设电平 上拉电阻的作用????????????????? 下拉电阻 CPU能直接读取外部电压变化(模拟量) 0-3.3v 输出控制电路置1,输出由外部电路决定(上拉或下拉) 输出控制电路置0,输出为0 置1置0的写入由CPU执行 输出控制电路的写入由外设模块决定 输出控制电路置1,输出1;置0,输出0。
[单片机]
STM32学习笔记之<font color='red'>GPIO</font>的基本使用
关于STM32配置中断和GPIO针脚问题
 STM32是用的什么开发环境?   STM32系列单片机,这款单片机功能强大,而且很容易学习,官方示例代码很多,稍加修改就可以开发自己的东西了。   嵌入式软体搭配最新版的STM32CubeMX个人电 脑开发 工具使用, 设计人员 可在绘图介面向导内配置微控制器,只要按一下,即可生成初始化C代码,直接用於多款市面上流行的 第三方开发 工具。   STM32Nucleo 开发板可让开发人员连接微控制器的全部I/O介面,并整合了ST-Link侦错器(debugger)/程式设计(programmer),无需单独安装侦错器。最後, STM32Nucleo 开发板拥有mbedTM功能,这表示该开发板可与个人电脑直接连结,并直接在mbed
[单片机]
STM32的GPIO电路原理
GPIO是通用输入/输出端口的简称,是STM32可控制的引脚。GPIO的引脚与外部硬件设备连接,可实现与外部通讯、控制外部硬件或者采集外部硬件数据的功能。 STM32F103ZET6芯片为144脚芯片,包括7个通用目的的输入/输出口(GPIO)组,分别为GPIOA、GPIOB、GPIOC、GPIOD、GPIOE、GPIOF、GPIOG,同时每组GPIO口组有16个GPIO口。通常简略称为PAx、PBx、PCx、PDx、PEx、PFx、PGx,其中x为0-15。 STM32的大部分引脚除了当GPIO使用之外,还可以复用为外设功能引脚,比如串口。 GPIO基本结构 每个GPIO内部都有这样的一个电路结构,这个结构在本文下面会具体介
[单片机]
嵌入式系统中可配置式GPIO模拟SPI总线方法
在嵌入式系统处理器中有相当一部分处理器不带SPI接口,但基丁SPI接口的设备非常丰富,此外,SPI设备的不同以及处理器对GPIO口位寻址是否支持各处理器各有不同,因而不同处理器中软件模拟GPIO也各不相同。若能提供一种通用可配置可移植的GPIO模拟SPI总线的驱动则能很方便快捷的访问SPI设备,从而提高整个嵌入式系统的开发效率。本文针对GPIO口位寻址与否给出方面,给出了一种可配置GPIO模拟SPI总线的方法并详细介绍了其设计与实现过程,且具有代码小可移植性强使用方便等特点。 1 GPIO规范 SPI是一个全双工的串行接口。它设计成可以在一个给定总线上处理多个互联的主机和从机。在一定数据传输过程中,接口上只能有一个丰机和一个从
[应用]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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