STM32重映射(PinRemap)的使用,注意!

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

相關文章
相關標籤/搜索