stm32 PB3 PB4 PA15引腳作為普通IO口使用指南
stm32的PB3 PB4 PA15引腳可以在使用SWD模擬和燒錄的情況下釋放出來,作為普通IO口使用。
初始化程式碼如下:
-
GPIO_InitTypeDef GPIO_InitStructure;
-
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
-
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);
-
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
-
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
-
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
-
GPIO_Init(GPIOB, &GPIO_InitStructure);
-
GPIO_SetBits(GPIOB,GPIO_Pin_4);
-
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
-
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
-
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
-
GPIO_Init(GPIOB, &GPIO_InitStructure);
-
GPIO_SetBits(GPIOB,GPIO_Pin_3);
-
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;
-
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
-
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
-
GPIO_Init(GPIOA, &GPIO_InitStructure);
-
GPIO_ResetBits(GPIOA,GPIO_Pin_15);
在實際測試的時候,發現工程內PB3 PB15無法當做普通IO使用,最後發現解決辦法為:
上面這段初始化程式碼放在所有IO初始化最後就好了。
通過現象除錯找到問題原因:
當把PB3 PB4 PA15初始化好之後,如果再次呼叫GPIOA GPIOB介面的時鐘程式碼的話,會使得PB3 PA15引腳變回JTAG的引腳
即初始化完之後不能再執行如下程式碼,否則PB3 PA15引腳會變回JTAG的引腳,而無法作為普通IO使用
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO, ENABLE);
--------------------- 本文來自 物致-皈依 的CSDN 部落格 ,全文地址請點選:https://blog.csdn.net/a18156289516/article/details/60332934?utm_source=copy