铁头电子player 发表于 2025-6-21 11:25

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

花了挺长时间来解决这个问题,使用的是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()重置
页: [1]
查看完整版本: STM32F1xx_ll_gpio驱动程序中与上下拉电阻设置有关的BUG