对于stm32GPIO口的一些补充

2018/4/10

stm32

1.对于stm32的简单认识

1.stm32表示cortex-m内核的32位微处理器(MCU)

2.对于stm32的两种操作方法:操作寄存器和操作库函数

2-1:寄存器(register)

寄存器是信息储存的容器,在stm32中每一个寄存器是32位二进制组成,可以通过改变寄存器中的值来改变对stm32单片机的控制

3.stm32编程实际上就是对32位寄存器数据的修改;

2-2:库函数

ST公司的良心之作,可以缩短开发周期,实际上,也是对寄存器的操作,但是把一些方法进行了封装;

3.谈谈自己的看法吧:操作寄存器就像是对开手动挡汽车,操作库函数就像是开自动挡的汽车

2.关于推挽和开漏的简单认识

1.推挽(在一个三极管进行导通时,另外一个处于截止状态)

P-MOS和C-MOS同时进行开启,同时,如果输入1,则激活P-MOS,在上拉电阻的带动下输出1,输、入0,则激活C-MOS,在下拉电阻的带动下,输出0。


2.开漏

开启N-MOS,关闭C-MOS,所以当输入1时,无作用,在输入0的时候,进行下拉,输出0、

为什么有推挽还要开漏呢,因为开漏模式可以吸收电流(20ms),用于电流控制的电路

3.注:

上拉电阻:用于VCC之后,稳定电平,钳制高电平

下拉电阻:用于GND之前,稳定电平,钳制低电平

注:一开始对于寄存器的操作不太清晰,对于stm32的一个32位寄存器而言

例:0xFFFFFFFF,一位数据代表着一个16进制的数,相当于,实际上一位操作了四位,这里的意思就是将寄存器所有的位置变成了1





### STM32 GPIO 默认输出高电平原因及配置方法 STM32 微控制器的 GPIO 引脚在复位后会进入默认状态,这种状态通常是由内部寄存器初始化决定的。对于某些特定的应用场景,可能需要引脚保持高电平以满足外部设备的需求。 #### 1. 默认状态下 GPIO 的行为 当 STM32 复位时,所有的 GPIO 引脚会被自动设置为浮空输入模式 (Analog Input Mode),这意味着它们既不会驱动高电平也不会驱动低电平[^1]。然而,在实际应用中,如果希望某个引脚默认输出高电平,则可以通过软件配置来实现这一需求。 #### 2. 配置 GPIO 输出高电平的方法 为了使某一个 GPIO 引脚默认输出高电平,可以按照以下方式完成: - **启用时钟** 使用 `RCC_APB2PeriphClockCmd` 函数开启对应端的时钟供应。这是操作任何外设的第一步,因为只有启用了时钟才能访问该外设的功能[^2]。 - **配置模式和初始状态** 设置目标引脚的工作模式为推挽输出 (`GPIO_Mode_Out_PP`) 或开漏输出 (`GPIO_Mode_Out_OD`) 并指定其初始值为高电平。这一步通过调用标准库中的 `GPIO_Init` 函数完成。 - **写入具体数值到引脚** 如果需要动态改变某一引脚的状态,可利用函数 `GPIO_WriteBit` 来单独修改单个引脚的状态;或者使用 `GPIO_SetBits` 和 `GPIO_ResetBits` 分别用于拉高或拉低一组引脚[^3]。 以下是具体的代码示例展示如何将 PA0 配置成默认输出高电平: ```c #include "stm32f1xx.h" int main(void){ // 启动系统时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitTypeDef GPIO_InitStruct; // 初始化结构体成员变量 GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0; // 只针对PA0 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;// 定义速度等级 GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽输出模式 GPIO_InitStruct.GPIO_OType = GPIO_OType_PP; // 推挽类型 GPIO_InitStruct.GPIO_PuPd = GPIO_PuPd_UP; // 上拉电阻 // 应用上述参数至GPIOA GPIO_Init(GPIOA, &GPIO_InitStruct); // 手动设定初始状态为 HIGH GPIO_SetBits(GPIOA, GPIO_Pin_0); while(1){}; } ``` #### 3. 硬件设计上的补充措施 尽管可以通过固件调整引脚的行为特性,但在一些特殊情况下仍需考虑硬件层面的设计优化。例如提到的情况——防止蓝牙模块被意外重置,除了采用纯软件手段之外还可以引入额外电路元件如三极管构成逻辑反相器来隔离两者之间的电气连接关系[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值