将 GPIO_TypeDef 从 STM32L1xx 转换为 STM32F10x

Convert GPIO_TypeDef from STM32L1xx to STM32F10x

我有以下代码,其中包括 STM32L1xx.h:

 GPIO_TypeDef* gpioport ... // Declaration.

 gpioport->MODER   = (gpioport->MODER   & ~(3 << pin2)) | (((gpiocfg >> GPIOCFG_MODE_SHIFT  ) & 3) << pin2);
 gpioport->OSPEEDR = (gpioport->OSPEEDR & ~(3 << pin2)) | (((gpiocfg >> GPIOCFG_OSPEED_SHIFT) & 3) << pin2);
 gpioport->OTYPER  = (gpioport->OTYPER  & ~(1 << pin )) | (((gpiocfg >> GPIOCFG_OTYPE_SHIFT ) & 1) << pin );
 gpioport->PUPDR   = (gpioport->PUPDR   & ~(3 << pin2)) | (((gpiocfg >> GPIOCFG_PUPD_SHIFT  ) & 3) << pin2);

我想用 STM32F10x.h 替换 STM32L1xx.h,但是 MODEROSPEEDROTYPERPUPDR 中没有定义STM32F10x.h 中的 GPIO_TypeDef 结构。我没有在 STM32F10x.h 中找到类似的结构,也没有。

上面的代码可以转换吗?如果是这样,我应该使用 STM32F10x.h 中的哪个结构?

看看stm32f10x_gpio.h。它有一个结构 GPIO_InitTypeDef 和用于设置它的相关定义。将您当前拥有的转换为 STM32F1 所需的应该很简单。

我没有下载当前的 STM32F1 Cube 内容,所以我认为该文件现在可能被称为 stm32f1xx_hal_gpio.h(或类似名称),但我认为 typedef 仍将被称为 GPIO_InitTypeDef.

STM 库有点臃肿,但如果你只需要你需要的,我发现它们非常有用。特别是处理器 headers 和 #defines.