stm32 gpio寄存器单片机gpio工作原理是怎样的呢

当前位置: >
单片机stm32的学习方法、GPIO的八种工作模式、与单片机avr的区别讲解
原标题:单片机stm32的学习方法、GPIO的八种工作模式、与单片机avr的区别讲解
单片机的发展相当的迅速,现在各个厂商们也在速度、内存、功能上此起彼伏,竞争激烈,同时涌现出一大批拥有代表性单片机的厂商:Atmel、TI、ST、MicroChip、ARM,国内的宏晶STC单片机也是可圈可点,单片机STM32很受欢迎,也有很多人想要去学,但是身为初学者你对于单片机STM32是否有相关的了解呢?接下来贤集网小编就为大家讲解一下它的相关知识,包括:单片机stm32的学习方法、GPIO八种工作模式、与avr单片机的区别。
单片机STM32的学习方法
一、学习的方式
开发板+配套的视频+开发板配套的教程+开发板配套源码+官方芯片手册,通过组合搭配的方式来学习单片机,只要初学者能够坚持下来,一定可以学会的。
二、如何选择一款开发板呢?
1、开发板硬件性能要稳定、布局要合理、美观(毕竟要陪你好久呢)、其他用户的反馈情况等等;
2、配套的视频;
3、配套的开发板教程(最好是库函数和寄存器版本的);
4、最好有论坛,可以跟志同道合的网友多交流;
5、如果喜欢看书的话,最好还带有书籍。
三、合理的利用网络资料,主要推荐几个网站
1、www.stmcu.org ST中国官方技术网站,ST官方文档发布网站;
2、www.openedv.com 开源电子网和http://firebbs.cn野火论坛,这两个网站目前开发板做的比较好些的;
3、http://jingyan.baidu.com百度网站,有什么问题可以搜索。
四、拿到开发板后,怎么开启学习之旅?
1、先看光盘目录,了解提供的资料情况;
2、 找到核心学习资料,大致了解开发板硬件资源;
3、查看资料,安装开发环境;
4、开启学习之旅,先学基础的,基础要多学多问;
5、 学习过程中不懂的,先找资料,然后提问;
6、高级的知识,可以慢慢来学。
五、学习开发板要参考哪些资料?
1、最底层(了解):CM3权威指南/CM4权威指南(ARM提供);
2、芯片参考手册(芯片功能寄存器描述特性等,详细)(了解):STM32F10x中文参考手册 /STM32F4xx中文参考手册(ST提供);
3、芯片数据手册(datasheet.ds)(了解):STM32F103xCDE_DS_CH_V5、pdf(芯片电气参数,引脚说明等);
4、官方其他资源和教程(了解):固件库包(含参考源码),官方培训PPT、ST官方资料下载地址:www.stmcu.org;
5、特定开发板学习教程(手册,视频,源码)(理解):针对开发板的源码、教程、视频等。
单片机STM32的GPIO八种工作模式详解
一、GPIO浮空输入_IN_FLOATING模式工作原理:
1、以上截图就是浮空输入模式的原理图,图中阴影的部分在浮空输入模式下是处于不工作状态的,尤其是下半部分的输出电路,实际上这时的输出电路与输入的端口处于隔离状态;
2、黄色的高亮部分显示了数据传输通道,外部的电平信号通过左边编号1的I/O 端口进入STM32内部经过编号2的施密特触发器整形以后送入编号为3的“输入数据寄存器”在“输入数据寄存器”的另一端(编号4),CPU通过内部的数据总线可以随时读出I/O 端口的电平变化的状态。
二、GPIO带上拉输入_IPU 模式工作原理:
1、上图是STM32的GPIO带上拉输入模式的原理图;
2、与前面介绍的浮空输入模式相比,仅仅是在数据通道上面,接入了一个上拉电阻,根据STM32的数据手册,这个上拉电阻阻值介于30K~50K 欧姆,同样,CPU可以随时在“输入数据寄存器”的另一端,通过内部的数据总线读出I/O 端口的电平变化的状态。
三、GPIO带下拉输入_IPD 模式工作原理:
对于输入下拉模式的输入,是在数据通道的下部,接入了一个下拉电阻;根据STM32的数据手册,这个下拉电阻阻值也是介于30K~50K 欧姆;对于要加上拉或下拉电阻:
1、当作单片机作为输入时,假设我们直接在IO端口接一个按键到地(或电源),因为按键按,于不按管脚都是悬空的,单片机就很难检测按键是否按下;所以人为的接一个上拉(或下拉),以确定未按下的时候IO输入电平的状态;
2、可以提高芯片的抗干扰能;
3、当单片机的IO口作输出时,如果不接上拉电阻只能提供灌电流,无法输出电流驱动外接设备,这时也需要考虑上拉电阻。这样才可以使IO输出高电平。
四、GPIO模拟输入_AIN 模式工作原理:
1、如果把STM32配置为模拟输入模式时,工作原理就比较简单了,信号从左边编号为1 的端口进从右边编号为2的一端直接进入STM32单片机的AD模块;
2、细心的朋友可以看到数据通道中上拉、下拉电阻和施密特触发器,这时均处于关断的状态,“输入数据寄存器”就不能反映IO端口上的电平变化的状态了,换句话说,也就是在模拟输入状态下,CPU不能通过“输入数据寄存器”读到IO端口变化的数据了。
五、GPIO开漏输出_OUT_OD 模式工作原理
上图是GPIO开漏输出模式的工作原理图
1、当CPU 在编号1 端通过“位设置/ 清除寄存器”或“输出数据寄存器”写入数据后,该数据位将通过编号2的输出控制电路传送到编号4 的I/O端口;
2、如果CPU 写入的是逻辑“1 ”,则编号3 的N-MOS管将处于关闭状态,此时I/O 端口的电平将由外部的上拉电阻决定;
3、如果CPU 写入的是逻辑“0 ”,则编号3的N-MOS管将处于开启状态,此时I/O端口的电平被编号3 的N-MOS管拉到了“地”的零电位;
4、在图中的上半部,施密特触发器处于开启状态,这意味着CPU 可以在“输入数据寄存器”的另一端,随时可以监控I/O端口的状态;
5、通过这个特性,还可以实现了虚拟的I/O端口双向通信:假如CPU 输出逻辑“1 ”;
6、由于编号3 的N-MOS管处于关闭状态,I/O 端口的电平将完全由外部电路决定,因此,CPU 可以在“输入数据寄存器”读到外部电路的信号,而不是它自己输出的逻辑“1 ”;
7、GPIO口的输出模式下,有3 种输出速度可选(2MHz 、10MHz和50MHz) ,这个速度是指GPIO口驱动电路的响应速度,而不是输出信号的速度。
六、GPIO推挽输出_OUT_PP模式工作原理
1、GPIO的推挽输出模式是在开漏输出模式的基础上,在“输出控制电路”之后,增加了一个P-MOS管;
2、当CPU输出逻辑“1 ”时,编号3 处的P-MOS管导通,而下方的N-MOS管截止,达到输出高电平的目的;
3、当CPU输出逻辑“0 ”时,编号3 处的P-MOS管截止,而下方的N-MOS管导通,达到输出低电平的目的;
4、在这个模式下,CPU 仍然可以从“输入数据寄存器”读到该IO端口电压变化的信号。
七、GPIO开漏复用输出_AF_OD模式工作原理
1、GPIO的开漏复用输出模式与开漏输出模式的工作原理基本相同;
2、不同的是编号为2 的输入的源不同,它是和复用功能的输出端相连,此时的“输出数据寄存器”被输出通道给断开了;
3、从上面的这个图,我们还可以看到CPU同样可以从“输入数据寄存器”读取到外部IO端口变化的电平信号。
八、GPIO推挽复用输出_AF_PP模式工作原理
1、编号2“输出控制电路” 输入是与复用功能的输出端相连,此时“输出数据寄存器”被从输出通道断开了,片上外设的输出信号直接与“输出控制电路”的输入端想连接;
2、我们将GPIO配置成复用输出功能后,假如相应的外设模块没有被激活,那么此时IO端口的输出将不确定。
单片机STM32与单片机avr的区别
一、单片机STM32
由ST厂商推出的STM32系列单片机,行业的朋友都知道,这是一款性价比超高的系列单片机,应该没有之一,功能及其强大。其基于专为要求高性能、低成 本、低功耗的嵌入式应用专门设计的ARMCortex-M内核,同时具有一流的外设:1μs的双12位ADC,4兆位/秒的UART,18兆位/秒的SPI等等,在功耗和集成度方面也有不俗的表现,当然和MSP430的功耗比起来是稍微逊色的一些,但这并不影响工程师们对它的热捧程度,由于其简单的结构和易用的工具再配合其强大的功能在行业中赫赫有名。
1、内核:ARM32位Cortex-M3CPU,最高工作频率72MHz,125DMIPS/MHz,单周期乘法和硬件除法;
2、存储器:片上集成32-512KB的Flash存储器,6-64KB的SRAM存储器;
3、时钟、复位和电源管理:2、0-3、6V的电源供电和I/O接口的驱动电压。POR、PDR和可编程的电压探测器(PVD),4-16MHz的晶振。内嵌出厂前调校的8MHz RC振荡电路,内部40 kHz的RC振荡电路,用于CPU时钟的PLL,带校准用于RTC的32kHz的晶振;
4、调试模式:串行调试(SWD)和JTAG接口,最多高达112个的快速I/O端口、最多多达11个定时器、最多多达13个通信接口,使用最多的器件:stm32F103系列、STM32 L1系列、stm32W系列
二、单片机avr
avr单片机是Atmel公司推出的较为新颖的单片机,其显著的特点为高性能、高速度、低功耗。它取消机器周期,以时钟周期为指令周期,实行流水作业,avr单片机指令以字为单位,且大部分指令都为单周期指令,而单周期既可执行本指令功能,同时完成下一条指令的读取,通常时钟频率用4~8MHz,故最短 指令执行时间为250~125ns,avr单片机能成为最近仍是比较火热的单片机。
1、avr系列没有类似累加器A的结构,它主要是通过R16~R31寄存器来实现A的功能,在avr中,没有像51系列的数据指针DPTR,而是由X(由 R26、R27组成)、Y(由R28、R29组成)、Z(由R30、R31组成)三个16位的寄存器来完成数据指针的功能(相当于有三组DPTR),而且 还能作后增量或先减量等的运行,而在51系列中,所有的逻辑运算都必须在A中进行;而avr却可以在任两个寄存器之间进行,省去了在A中的来回折腾,这些都比51系列出色些;
2、 avr的专用寄存器集中在00~3F地址区间,无需像pic那样得先进行选存储体的过程,使用起来比pic方便,avr的片内RAM的地址区间为 0~00DF(AT90S2313) 和F(AT90S8515、AT90S8535),它们占用的是数据空间的地址,这些片内RAM仅仅是用来存储数据的,通常不具备通用寄 存器的功能,当程序复杂时,通用寄存器R0~R31就显得不够用;而51系列的通用寄存器多达128个(为avr的4倍),编程时就不会有这种感觉;
3、 avr的I/O脚类似pic,它也有用来控制输入或输出的方向寄存器,在输出状态下,高电平输出的电流在10mA左右,低电平吸入电流20mA。这点虽不如pic,但比51系列还是要优秀的。
以上是贤集网小编为大家讲解的单片机stm32的学习方法、GPIO八种工作模式、与avr单片机的区别。学习单片机其实并不难,只要我们用心去写程序,调试后总会得到好结果的,不经一翻彻骨寒,怎得梅花扑鼻香呢?希望小编上述讲解的内容,能够为有需要了解这方面只是的小伙伴们提供帮助哟!
本文地址:http://www.xianjichina.com/news/details_57706.html贤集网,转载须经版权人书面授权并注明来源
我来说几句
还没有人评论哦,抢沙发吧~
我们提供的不仅仅是资讯。免费注册成为贤集网会员,您可以——
机械工业相关文章
机械工业项目推荐
已有 7 人对接
已有 1 人对接
已有 0 人对接
已有 15 人对接
已有 4 人对接
意见被贤集网采纳后,贤集网赠送一张限量版的U盘会员卡!
联系方式(必填)
您的意见(必填)
Copyright (C)2014说出来你可能不信,王二正在被信息怪追杀,没错,就是那……
OLED在显示行业的热度还没达到顶峰,Micro LED就出来&ld……
要说最近半导体行业的巨人战争,当属博通费尽心机收购高……
有人说LoRa是NB-IoT的竞争技术,其实我们认为它们是一种……
试想这样的一个情景,你将一枚鸡蛋、一个土豆、一块火腿……
演讲人:郝晓贝时间: 10:00:00
演讲人:王海莉时间: 10:00:00
演讲人:卢柱强时间: 10:00:00
预算:¥10000预算:小于¥10000
浙江省湖北省
STM32f10xxx 之 GPIO口配置
[导读]配置stm32f103使其完成PWM输出的过程中,在配置GPIO口的时候,按照习惯配置GPIO口的speed为50MHZ,突然就意识到,为什么大部分例程习惯配置为50MHZ,而不是其它值,即有了此文章。
&背景本文引用地址:
配置stm32f103使其完成PWM输出的过程中,在配置GPIO口的时候,按照习惯配置GPIO口的speed为50MHZ,突然就意识到,为什么大部分例程习惯配置为50MHZ,而不是其它值,即有了此文章。
先说说GPIO口speed的问题,这个一般是用来定义GPIO口上升沿或者下降沿的时间,频率越高,上升沿下降沿时间越短,但是其噪音也就越大,因此,如果没有特别的需求,该值应该不要配置太高。在技术手册里,其给了3个速度选择,库函数的相应表现形式如下:
* @brief Output Maximum frequency selection
*/typedef enum{
GPIO_Speed_10MHz = 1,
GPIO_Speed_2MHz,
GPIO_Speed_50MHz
}GPIOSpeed_TypeD
50MHZ,意味着GPIO口理论上1s可以翻转50兆次,即1微妙翻转50次,PWM应该不需要如此高的频率,所以,本次PWM的GPIO口速度配置为10MHZ。
再来说说GPIO口其他配置,库函数GPIO口配置的函数为:
* @brief Initializes the GPIOx peripheral according to the specified
* parameters in the GPIO_InitStruct.
* @param GPIOx: where x can be (A..G) to select the GPIO peripheral.
* @param GPIO_InitStruct: pointer to a GPIO_InitTypeDef structure that
* contains the configuration information for the specified GPIO
peripheral.
* @retval None
*/void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct){ //
... 详细内容省略}
首先传入的第一个参数,勿用多说,即是配置哪一组GPIO口。
详细说说第二个参数,其主要形式表现为:
typedef struct{ uint16_t GPIO_P
GPIOSpeed_TypeDef GPIO_S
GPIOMode_TypeDef GPIO_M
}GPIO_InitTypeD
&GPIO_Pin&很好理解,配置该组IO口的具体哪一个GPIO,该值可用或的形式,例如:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 |
GPIO_Pin_3;
该配置代表配置该GPIO口的pin0/1/2/3脚。
&GPIO_Speed&前文已述。
&GPIO_Mode&则是代表该GPIO口工作在哪种工作模式下,配置的值如下:
* @brief Configuration Mode enumeration
*/typedef enum{ GPIO_Mode_AIN = 0x0, // 模拟输入
GPIO_Mode_IN_FLOATING = 0x04, // 输入浮空
GPIO_Mode_IPD = 0x28, // 输入下拉
GPIO_Mode_IPU = 0x48, // 输入上拉
GPIO_Mode_Out_OD = 0x14, // 开漏输出
GPIO_Mode_Out_PP = 0x10, // 推挽输出
GPIO_Mode_AF_OD = 0x1C, // 第二功能开漏输出
GPIO_Mode_AF_PP = 0x18 // 第二功能推挽输出}GPIOMode_TypeD
首先说说数字输入,其有三种状态:输入浮空/输入下拉/输入上拉,IO口配置为输入时,port口工作原理图如下:
如上图所示,当GPIO口配置为数字输入时,输出功能被禁能了。
&输入上拉&:GPIO口透过内部的上拉电阻连接到VDD,此时,GPIO口的状态为高电平,当GPIO口连接到button时,button另一端接地。button闭合时,GPIO口被拉至低电平,CPU即可判别button按下。在实际使用的情况来看,内部弱上拉,信号总是没有外部上拉来的稳定,特别在上电即需要检测IO状态的情况,并且基本上内部弱上拉只适合检测button这种不严格的电平状况,所以如果有条件外接上拉电阻的话,还是不要配置为弱上拉。
&输入下拉&:很好解释了,GPIO口透过下拉电阻直接接地,此时GPIO口状态为低电平,若用来检测button,button的另一端不再接地,而是接到VCC,此处得十分注意灌电流,以免烧坏MCU。
&输入浮空&:则是即不配置为输入上拉,也不配置为输入下拉。即IO口处于电平不稳定状态,若是GPIO口闲置未使用,推荐将其配置为输入上拉或者输入下拉,以免干扰正常程序的进行。输入浮空状态通常配合外接上拉或者外接下拉使用。
接着说数字输出,其也有两种状态:开漏输出/推挽输出,IO口配置为输出时,port口工作原理图如下:
&开漏输出&:P-MOS管是被禁止的,当向OUTPut寄存器写入&0&的时候,N-MOS管直接导通,将IO口接地,当写入&1&的时候,IO口处于高阻态状态。这种情况一般用于外部自带驱动的情况。
&推挽输出&:当向OUTPut寄存器写入&0&时,N-MOS管直接导通,将IO口接地,当写入&1&时,P-MOS管,导通,GPIO口直接接入VDD,此时向外输出高电平,但驱动能力一般都很弱,还得考虑灌电流的大小,若是需要驱动大功率器件,外部一般还会增加外放驱动电路。
第二功能输出状态:什么是第二功能,即有些IO口存在复用的情况,复用的功能即被称作第二功能,输出配置如上所示,当IO口被配置为输出时,其输入被默认配置为输入浮空状态,以I2C为例,I2C从机,不仅仅要检测SDA的状态收取数据,还要可以输出状态发送数据,所以第二功能基本上配置为输出,使其即可输入检测,也可输出,输出方式如何配置视具体情况而言,勿用多言。
最后,模拟输入,其port口工作原理图如下:
被配置为模拟输入后,输入检测的施密特触发器和输出部分全部关闭了。输入的值直接接入对应的模拟检测外设,譬如ADC。
说了这么多,接下来以配置TIM2输出PWM的GPIO口配置为例:
TIM2_CH1在&PA0&口,首先使能GPIO A的时钟,
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE );
接着配置IO为复用推挽输出,输出速率选择10MHZ,
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ; //
PA0:A口的第0个引脚GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; //
复用推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; //
翻转频率10MHzGPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO如此配置,然后配置定时器(不再详述),最后在PA0即可输出PWM波形了。
至此,记录完毕。
Electrical ENGINEERING 论坛的一篇文章 & Understanding GPIO Settings&。
完整的控制器和智能功率级解决方案可向任何处理器、ASIC或FPGA提供最大450A负载电流,使物联网和云基础架构更“绿色”......关键字:
ARM公司2007年首推出Cortex内核,ST凭借基于ARM CORTEX-M3内核的STM32F1,无疑成为了最大的赢家之一。特别是STM32F103系列,更是成为市场上最通用的MCU系列之一。......关键字:
飞行汽车一直是人们梦寐以求的一种交通工具。越来越多的人受不了越来越堵的路面。但要飞行汽车似乎一直只存在于人们的梦想当中,或者酷炫的概念视频里。现在,终于有人要让梦想照进现实了&&当然,这也是......关键字:
我 要 评 论
热门关键词STM32的GPIO的总结_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
STM32的GPIO的总结
&&STM32的GPIO的总结
阅读已结束,下载本文需要
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩12页未读,
定制HR最喜欢的简历
你可能喜欢STM32打卡001-STM32 GPIO的工作原理STM32打卡001-STM32 GPIO的工作原理昌黎乐活百家号>一、初始SMT32的GPIO口STM32芯片有较多的GPIO,每一个GPIO可复用多种功能,比如UART、I2C、I2S等等,同时一个GPIO又有多种可配置的工作模式。比如STM32F103RCT6,有4组GPIO,每组最多有16个GPIO,总共有51个GPIO。stm32f103rct6二、GPIO的基本结构要想熟悉GPIO的工作模式,首先要了解芯片内部的GPIO的基本结构,分别有保护二极管(或者说钳位二极管)、输入驱动电路、输出驱动电路、输入数据寄存器、输出数据寄存器、位设置/清除寄存器。1、保护二极管:主要用来防护ESD2、输入数据寄存器:主要有上拉电阻和下拉电阻,以及TTL肖特基触发器组成。上拉电阻和下拉电阻主要用来配置输入时的上拉输入和下拉输入,TTL肖特基触发器相当于一个用于TTL电平的开关触发。3、输出数据寄存器:主要有P-MOS、N-MOS、输出控制组成。通过输出控制P-MOS/N-MOS来达到是推挽输出,还是开漏输出。4、寄存器:输入/输出数据寄存器、位设置/清除寄存器是软件控制,根据自己的设定,来控制GPIO处于哪种模式。GPIO的基本结构三、GPIO的工作模式GPIO总共有8种工作模式,分别为浮空输入、上拉输入、下拉输入、模拟输入、开漏输出、开漏复用输出、推挽输出、推挽复用输出,这8种工作模式。1、浮空输入此时输入驱动器,既不选择上拉,也不选择下拉,TTL触发器处于打开状态。浮空输入2、上拉输入此时输入驱动器,选择上拉,不选择下拉,TTL触发器处于打开状态。上拉输入3、下拉输入此时输入驱动器,不选择上拉,选择下拉,TTL触发器处于打开状态。下拉输入4、模拟输入此时输入驱动器,不选择上拉,也不选择下拉,TTL触发器处于关闭状态。模拟输入5、开漏输出此时输出驱动器,P-MOS不工作、N-MOS工作。同时可通过输入模式,读取GPIO的输出状态。开漏输出6、开漏复用输出此时输出驱动器,P-MOS不工作、N-MOS工作,但此时通过复用功能输出。同时可通过输入模式,读取GPIO的输出状态。开漏复用输出7、推挽输出此时输出驱动器,P-MOS和N-MOS都处于工作模式。同时可通过输入模式,读取GPIO的输出状态。推挽输出6、推挽复用输出此时输出驱动器,P-MOS工作、N-MOS工作,但此时通过复用功能输出。同时可通过输入模式,读取GPIO的输出状态。推挽复用输出本文仅代表作者观点,不代表百度立场。系作者授权百家号发表,未经许可不得转载。昌黎乐活百家号最近更新:简介:健康积极的生活,来自不断地分享与学习作者最新文章相关文章博主最新文章
博主热门文章
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 stm32 gpio中断 的文章

 

随机推荐