我正在开发STM32F103C8T6的程序,但找不到GPIOA_OTYPER常量。我想将PA0至PA7设置为8位并行输出的推挽。 当我用谷歌搜索常量时,我发现几个网站以不同的方式做这件事:
#define RCC_AHB1ENR (*((volatile unsigned int*)0x40023830))
#define GPIOA_MODER (*((volatile unsigned int*)0x40020000))
#define GPIOA_BSRR (*((volatile unsigned int*)0x40020018))
#define RCC_AHB1ENR RCC_BASE + 0x30
#define GPIOA_MODER GPIOA_BASE + 0x00
#define GPIOA_BSRR GPIOA_BASE + 0x18
我们是否在每个项目中都在重新发明轮子?
难道不应该有一个头文件来一次性设置它们吗?
我没找到,如果有的话哪里可以找到?
如果你自己定义这样的事情,你肯定是在重新发明轮子。您正在寻找的是CMSIS。
这为所有 ARM Cortex-M CPU 提供了标准定义。供应商还为其产品添加自己的定义,例如ST Micro 有自己的定义,涵盖其 STM32 MCU 系列中包含的外设。
如果您使用 STM32CubeIDE 创建了项目,那么所有这些内容都将位于项目的
Drivers/CMSIS
目录中。