STM32重映射,内容和细节稍后补充,这里只说几个注意点,花了我一夜的时间调试终于找到问题所在了。。。函数
芯片: STM32f107vct6ui
晶振: 25Mspa
经过分频器与锁相环,使系统时钟为72M调试
背景: SPI3的重映射使用code
1、blog
重映射函数原型:ip
void GPIO_PinRemapConfig(uint32_t GPIO_Remap, FunctionalState NewState)
STM32f107vct6不是FPGA,重映射是固定的,没法自行指定,要查表,看看映射到了哪rem
好比SPI3,查询datasheet(好好利用ctrl+f)后可知原型
Alternate function | SPI3_REMAP = 0 | SPI3_REMAP = 1 |
SPI3_NSS | PA15 | PA4 |
SPI3_SCK | PB3 | PC10 |
SPI3_MISO | PB4 | PC11 |
SPI3_MOSI | PB5 | PC12 |
2、io
很是重要!remap必定要在时钟使能以后配置,不然无效
神奇了真是
重映射步骤:
· (1)使能被从新映射到的I/O端口时钟
RCC_APB1PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
· (2)使能被从新映射的外设时钟
RCC_APB2PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE);
· (3)使能AFIO功能的时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
· (4)进行重映射
GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);
注:· (1)(2)(3)顺序可换,
· 或者,在APB2总线上的设备,用 或( | ) 一块儿进行时钟使能,
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_AFIO, ENABLE);
但必定要在(4)以前。不然remap没法配置成功
· GPIO的配置虽然能够先GPIO再RCC。。为了统一格式,一概先开时钟再配置