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。。爲了統一格式,一概先開時鐘再配置