欢迎光临散文网 会员登陆 & 注册

STM32 | 基础知识总结

2022-05-15 11:48 作者:信盈达  | 我要投稿

【认识STM32】

 F1 代表了基础型,基于 Cortex-M3 内核,主频为72MHZ,F4 代表了高性能,基于 Cortex-M4 内核,主频 180M。


【GPIO外设】

一、GPIO的八种工作模式

1、上拉输入:IO口在无输入的情况下,保持高电平。


2、下拉输入:IO口在无输入的情况下,保持低电平。


3、浮空输入:浮空输入状态下,IO的电平状态是不确定的,完全由外部输入决定,如果在该引脚悬空的情况下,读取该端口的电平是不确定的。


4、模拟输入:输入信号不经施密特触发器直接接入,输入信号为模拟量而非数字量,其余输入方式输入数字量。


5、推挽输出:可以输出高、低电平,连接数字器件;推挽结构一般是指两个三极管分别受两个互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源决定。导通损耗小、效率高。输出既可以向负载灌电流,也可以从负载抽取电流。推拉式输出级既提高电路的负载能力,又提高开关速度。


6、开漏输出:输出端相当于三极管的集电极,要得到高电平状态需要上拉电阻才行。适合于做电流型的驱动,其吸收电流的能力相对强(一般20mA以内)。开漏形式的电路有以下几个特点:


(1)利用外部电路的驱动能力,减少IC内部的驱动。当IC内部MOSFET导通时,驱动电流是从外部的VCC流经上拉电阻、MOSFET到GND。IC内部仅需很小的栅极驱动电流。


(2)一般来说,开漏是用来连接不同电平的器件,匹配电平用的,因为开漏引脚不连接外部的上拉电阻时,只能输出低电平,如果需要同时具备输出高电平的功能,则需要接上拉电阻,很好的一个优点是通过改变上拉电源的电压,便可以改变传输电平。

比如加上上拉电阻就可以提供TTL/CMOS电平输出等。(上拉电阻的阻值决定了逻辑电平转换的速度。阻值越大,速度越低功耗越小,所以负载电阻的选择要兼顾功耗和速度。)


(3)开漏输出提供了灵活的输出方式,但是也有其弱点,就是带来上升沿的延时。因为上升沿是通过外接上拉无源电阻对负载充电,所以当电阻选择小时延时就小,但功耗大;反之延时大功耗小。所以如果对延时有要求,则建议用下降沿输出。


(4)可以将多个开漏输出连接到一条线上。通过一只上拉电阻,在不增加任何器件的情况下,形成“与逻辑”关系,即“线与”。可以简单的理解为:在所有引脚连在一起时,外接一上拉电阻,如果有一个引脚输出为逻辑0,相当于接地,与之并联的回路“相当于被一根导线短路”,所以外电路逻辑电平便为0,只有都为高电平时,与的结果才为逻辑1。


7、复用推挽输出:此时IO受内部外设控制,比如定时器的PWM,比如SPI的MOSI,MISO等。 而普通的推挽输出,则IO受ODR控制。


8、复用开漏输出:参考复用推挽。


二、总结在STM32中选用IO模式

1、浮空输入GPIO_IN_FLOATING ——浮空输入,可以做KEY识别,RX1。


2、带上拉输入GPIO_IPU——IO内部上拉电阻输入。


3、带下拉输入GPIO_IPD—— IO内部下拉电阻输入。


4、模拟输入GPIO_AIN ——应用ADC模拟输入,或者低功耗下省电。


5、开漏输出GPIO_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能。


6、推挽输出GPIO_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的。


7、复用功能的推挽输出GPIO_AF_PP ——片内外设功能(I2C的SCL,SDA)。


8、复用功能的开漏输出GPIO_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)。


【RCC时钟】

RCC时钟的主要作用:设置系统时钟 SYSCLK 、设置 AHB 分频因子(决定 HCLK 等于多少)、设置 APB2 分频因子(决定 PCLK2 等于多少)、设置 APB1 分频因子(决定 PCLK1 等于多少)、设置各个外设的分频因子;控制 AHB 、 APB2 和 APB1 这三条总线时钟的开启、控制每个外设的时钟的开启。 


对于 SYSCLK、HCLK、PCLK2、PCLK1 这四个时钟的配置一般是:PCLK2 = HCLK = SYSCLK=PLLCLK = 72M, PCLK1=HCLK/2 = 36M。(以stm32f103vet6为例)

使用HSE时,设置系统时钟的步骤

 1、开启HSE ,并等待 HSE 稳定

 2、设置 AHB、APB2、APB1的预分频因子

 3、设置PLL的时钟来源,和PLL的倍频因子,设置各种频率主要就是在这里设置

 4、开启PLL,并等待PLL稳定

 5、把PLLCK切换为系统时钟SYSCLK

 6、读取时钟切换状态位,确保PLLCLK被选为系统时钟


版权声明:本文为CSDN博主「Hello_96_world」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。如有侵权,请联系删除。

原文链接:https://blog.csdn.net/qq_29031103/article/details/121495699

STM32 | 基础知识总结的评论 (共 条)

分享到微博请遵守国家法律