STM32_管腳 部分映射和全映射

在管腳映射的時候一定要記得開啓映射的時鐘RCC_APB2Periph_AFIO

如下

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
GPIO_PinRemapConfig(GPIO_Remap_PD01, ENABLE);    
GPIO_PinRemapConfig(GPIO_Remap_SWJ_Disable, ENABLE);//全部釋放
GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE);
GPIO_PinRemapConfig(GPIO_FullRemap_TIM2, ENABLE);

映射了PD0,PD1(外部時鐘管腳,默認爲時鐘輸入)。

STM32中關於PD0和PD1的映射有如下說明:

The pins number 2 and 3 in the VFQFPN36 package, and 5 and 6 in the LQFP48 and LQFP64 packages are configured as
OSC_IN/OSC_OUT after reset, however the functionality of PD0 and PD1 can be remapped by software on these pins. For the LQFP100 package, PD0 and PD1 are available by default, so there is no need for remapping. For more details, refer to the Alternate function I/O and debug configuration section in the STM32F10xxx reference manual.
The use of PD0 and PD1 in output mode is limited as they can only be used at 50 MHz in output mode.

切記:PD0和PD1使用輸出模式的時候被限制在只能用50MHz使用,否則無法輸出高低電平。實測驗證過,,,,

 

GPIO_Remap_SWJ_Disable是將JTAG所有的管腳全映射爲GPIO了。

至於部分映射TIM3和全映射TIM2,等其他的映射可查看寄存器AFIO_MAPR的說明。如下圖

我的程序使用的是PB4輸出定時器3 通道1的PWM,故此處爲GPIO_PartialRemap_TIM3部分重映射。

又如下圖,

#define GPIO_Remap_SWJ_NoJTRST      ((uint32_t)0x00300100) 
#define GPIO_Remap_SWJ_JTAGDisable  ((uint32_t)0x00300200)
#define GPIO_Remap_SWJ_Disable      ((uint32_t)0x00300400) 

可以通過選擇GPIO_Remap_SWJ_NoJTRST     ,將PB4的IO功能使用,就是釋放了NJTRST的功能。

當選擇GPIO_Remap_SWJ_Disable,所有相關的調試口均釋放成了IO口。此時通過Jlink的SW方式下載時,無法下載程序

解決方法:

1.需要復位下載(可將復位管腳對地短路,在點擊下載後,釋放復位管腳即可下載程序,復位時,管腳爲默認功能)

2.將BOOT0拉高使用串口下載。

 

注意:

(1)TIM2_CH1 和 TIM2_ETR 共用一個引腳,但不能同時使用(因此在此使用這樣的標記: TIM2_CH1_ETR)

(2)當不使用主振盪器HSE時(系統運行於內部的8MHz阻容振盪器), PD0和PD1可以映像到OSC_IN和OSC_OUT引腳。此功能只能適用於36、 48和64引腳的封裝(PD0和PD1出現在100腳和144腳的封裝上,不必重映像)。



 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章