将 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
,但是 MODER
、OSPEEDR
、OTYPER
和 PUPDR
中没有定义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.
我有以下代码,其中包括 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
,但是 MODER
、OSPEEDR
、OTYPER
和 PUPDR
中没有定义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.