stm32管脚初始化时请给所有可操作状态赋值

本文介绍了在初始化STM32单片机的GPIO管脚时,必须为所有可操作状态赋值的重要性。通过对比正确与错误的初始化代码示例,强调了忽略赋值可能导致初始化失败和复位操作无法执行的问题。建议遵循官方示例,避免使用未完全赋值的GPIO_InitTypeDef全局变量,以防止出现未知错误。

单片机初始化时,需要注意将初始化中各项明确赋值,不能忽略,如以如下代码对gpio进行初始化,

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置成推挽输出
GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_ResetBits(GPIOB,GPIO_Pin_4);

初始化是失败的,复位操作也无法执行,查阅stm32f103的固件库手册,可见GPIO初始化函数的使用方法,

官方的GPIO初始化示例为

则以如下代码对gpio进行初始化,

GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //设置成推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_ResetBits(GPIOB,GPIO_Pin_4);

该初始化是成功的,能够复位管脚电平,与之前的初始化差别仅是多了一行设置管脚输出速率的代码,

GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;

可见,进行管脚初始化时,对管脚的每个可操作状态进行赋值是非常有必要的,这样可以避免许多莫名其妙的错误。

一般不建议以GPIO_InitTypeDef定义全局变量,可能会因为少赋值而引起不必要的错误。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值