打印
[STM32F1]

STM32F1xx_ll_gpio驱动程序中与上下拉电阻设置有关的BUG

[复制链接]
58|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
花了挺长时间来解决这个问题,使用的是STMCUBE IDE V1.5和LL库V1.8.3,STM32F103VB。
当初始化GPIO引脚的PUSHPHOTO输出,确保引脚初始化与正确的输出电平。
在调用LL_GPIO_INIT(GPIO,&GPIO_InitStruct)之前,调用LL_GPIO_SetOutputPin(GPIO,_ERROR_Pin);
然而,在初始化后,引脚是低,即使我设置为高。
我的认为LL_GPIO_Init()函数中出现错误
此函数调用:
LL_GPIO_SetPinPull(GPIOx,currentpin,GPIO_InitStruct->Pull);配置上拉或下拉电阻,此函数不写入(输入)推挽设置(在CRL / CNFx寄存器中),它写入ODR寄存器(设置或重置输出状态):
__STATIC_INLINE void LL_GPIO_SetPinPull(GPIO_TypeDef *GPIOx, uint32_t Pin, uint32_t Pull){  MODIFY_REG(GPIOx->ODR, (Pin >> GPIO_PIN_MASK_POS), Pull << (POSITION_VAL(Pin >> GPIO_PIN_MASK_POS)));}
在查看GPIOD ODR SFR的同时仿真运行,可以清楚地显示输出引脚通过LL_GPIO_SetOutputPin()函数被设置,接下来通过LL_GPIO_SetPinPull()重置

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

19

帖子

0

粉丝