1.使能GPIO的AHB時鐘,使用函數: RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOx, ENABLE);
2.配置GPIO工作模式用GPIO_Init()函數
數據類型說明
typedef struct
{
uint32_t GPIO_Pin; //引腳配置
GPIOMode_TypeDef GPIO_Mode; //GPIO_Mode_IN(輸入),GPIO_Mode_OUT(輸出),GPIO_Mode_AF(備用),GPIO_Mode_AN(模擬)
GPIOSpeed_TypeDef GPIO_Speed;// GPIO_Speed_2MHz,GPIO_Speed_25MHz,GPIO_Speed_50MHz,GPIO_Speed_100MHz
GPIOOType_TypeDef GPIO_OType; // GPIO_OType_PP(推挽),GPIO_OType_OD(開漏)
GPIOPuPd_TypeDef GPIO_PuPd; GPIO_PuPd_NOPULL(無),GPIO_PuPd_UP(上拉),GPIO_PuPd_DOWN(下拉)
}GPIO_InitTypeDef;
3.備用功能配置(除ADC和DAC外的所有非GPIO功能),使用函數
void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)
* This GPIO_AF can be one of the following values:
* @arg GPIO_AF_RTC_50Hz: Connect RTC_50Hz pin to AF0 (default after reset)
* @arg GPIO_AF_MCO: Connect MCO pin (MCO1 and MCO2) to AF0 (default after reset)
* @arg GPIO_AF_TAMPER: Connect TAMPER pins (TAMPER_1 and TAMPER_2) to AF0 (default after reset)
* @arg GPIO_AF_SWJ: Connect SWJ pins (SWD and JTAG)to AF0 (default after reset)
* @arg GPIO_AF_TRACE: Connect TRACE pins to AF0 (default after reset)
* @arg GPIO_AF_TIM1: Connect TIM1 pins to AF1
* @arg GPIO_AF_TIM2: Connect TIM2 pins to AF1
* @arg GPIO_AF_TIM3: Connect TIM3 pins to AF2
* @arg GPIO_AF_TIM4: Connect TIM4 pins to AF2
* @arg GPIO_AF_TIM5: Connect TIM5 pins to AF2
* @arg GPIO_AF_TIM8: Connect TIM8 pins to AF3
* @arg GPIO_AF_TIM9: Connect TIM9 pins to AF3
* @arg GPIO_AF_TIM10: Connect TIM10 pins to AF3
* @arg GPIO_AF_TIM11: Connect TIM11 pins to AF3
* @arg GPIO_AF_I2C1: Connect I2C1 pins to AF4
* @arg GPIO_AF_I2C2: Connect I2C2 pins to AF4
* @arg GPIO_AF_I2C3: Connect I2C3 pins to AF4
* @arg GPIO_AF_SPI1: Connect SPI1 pins to AF5
* @arg GPIO_AF_SPI2: Connect SPI2/I2S2 pins to AF5
* @arg GPIO_AF_SPI3: Connect SPI3/I2S3 pins to AF6
* @arg GPIO_AF_I2S3ext: Connect I2S3ext pins to AF7
* @arg GPIO_AF_USART1: Connect USART1 pins to AF7
* @arg GPIO_AF_USART2: Connect USART2 pins to AF7
* @arg GPIO_AF_USART3: Connect USART3 pins to AF7
* @arg GPIO_AF_UART4: Connect UART4 pins to AF8
* @arg GPIO_AF_UART5: Connect UART5 pins to AF8
* @arg GPIO_AF_USART6: Connect USART6 pins to AF8
* @arg GPIO_AF_CAN1: Connect CAN1 pins to AF9
* @arg GPIO_AF_CAN2: Connect CAN2 pins to AF9
* @arg GPIO_AF_TIM12: Connect TIM12 pins to AF9
* @arg GPIO_AF_TIM13: Connect TIM13 pins to AF9
* @arg GPIO_AF_TIM14: Connect TIM14 pins to AF9
* @arg GPIO_AF_OTG_FS: Connect OTG_FS pins to AF10
* @arg GPIO_AF_OTG_HS: Connect OTG_HS pins to AF10
* @arg GPIO_AF_ETH: Connect ETHERNET pins to AF11
* @arg GPIO_AF_FSMC: Connect FSMC pins to AF12
* @arg GPIO_AF_OTG_HS_FS: Connect OTG HS (configured in FS) pins to AF12
* @arg GPIO_AF_SDIO: Connect SDIO pins to AF12
* @arg GPIO_AF_DCMI: Connect DCMI pins to AF13
* @arg GPIO_AF_EVENTOUT: Connect EVENTOUT pins to AF15
4.使用GPIO_ReadInputData(GPIO_TypeDef* GPIOx)和GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)讀輸入信號
5.使用GPIO_SetBits()/GPIO_ResetBits()設置輸出引腳
6.上電或復位后,引腳備用功能都沒啟用(JTAG引腳除外),為懸浮輸入狀態
7.LSE引腳OSC32_IN 和OSC32_OUT(PC14 and PC15)的優先級高于GPIO
8.HSE引腳OSC_IN/OSC_OUT (PH0 / PH1)的優先級高于GPIO
例程:
int main(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* GPIOG Periph clock enable */
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA,&GPIO_InitStructure);
GPIO_SetBits(GPIOD, GPIO_Pin_12);
GPIO_ResetBits(GPIOD, GPIO_Pin_13);
while (1)
{
if(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_0)==0)
{
GPIO_SetBits(GPIOD, GPIO_Pin_13);
GPIO_ResetBits(GPIOD, GPIO_Pin_12);
}
else
{
GPIO_SetBits(GPIOD, GPIO_Pin_12);
GPIO_ResetBits(GPIOD, GPIO_Pin_13);
}
}
}
上一篇:STM32基于固件庫學習筆記(6)使用DMA實現USART1發送數據
下一篇:STM32基于固件庫學習筆記(11)RTC實時時鐘
推薦閱讀
史海拾趣
Calmos Systems Inc公司創立之初,面臨著資金短缺、市場競爭激烈的挑戰。公司創始人憑借對電子技術的深厚理解和對市場需求的敏銳洞察,帶領團隊研發出了一款具有創新性的電子產品。然而,由于品牌知名度低,市場推廣困難,產品銷量一度不佳。為了打開市場,創始人親自拜訪潛在客戶,了解他們的需求,不斷優化產品功能。經過不懈的努力,產品逐漸贏得了客戶的認可,為公司的發展奠定了基礎。
Aerotronics Marketing Inc公司注重與高校和研究機構的合作,通過產學研合作的方式推動技術創新。公司與多所知名高校建立了緊密的合作關系,共同開展無人機技術的研發和應用研究。這種合作模式不僅為公司提供了源源不斷的技術支持和人才儲備,還推動了整個電子行業的技術進步。
Aerotronics Marketing Inc公司注重與高校和研究機構的合作,通過產學研合作的方式推動技術創新。公司與多所知名高校建立了緊密的合作關系,共同開展無人機技術的研發和應用研究。這種合作模式不僅為公司提供了源源不斷的技術支持和人才儲備,還推動了整個電子行業的技術進步。
隨著市場競爭的加劇,Cristek Interconnects Inc公司意識到質量管理的重要性。于是,公司投入大量資源,建立了一套完善的質量管理體系,從原材料采購到生產流程控制,再到產品出廠檢驗,每一個環節都嚴格把關。這種嚴謹的質量管理態度,使得Cristek的產品在行業中享有良好的聲譽,贏得了客戶的信賴。
電子信息產品污染控制管理辦法 【來源:SMTe網】【作者:信息產業部】【時間: 2006-7-6 9:49:51】【點擊: 5】 第一章 總 則 第一條 為控制和減少電子信息產品廢棄后對環境造成的污染,促進生產和銷售低污染電子信息產品,保護環境 ...… 查看全部問答∨ |
一. 電壓源模塊一個實際的電源可用一個理想電壓源us和一個電阻Rs的串聯組合來作為其電路模型,稱為電壓源模型。及其伏安特性 電路圖如圖2-1-1(a)所示,其中us為電壓源的電壓,Rs為它的內電阻(也稱電壓源的輸出電阻),u和i分別 ...… 查看全部問答∨ |
在建立控制系統時, 系統集成商毫無例外地總是希望能使用比較少的設備來實現更多的功能。他們需要控制系統不僅能處理數字I/O和運動,而且還可以集成用于自動化監控和測試的視覺功能和模塊化儀器。此外,控制系統還必須能實時地處理控制算法和分析任 ...… 查看全部問答∨ |
|
Table of Contents 1. 串口通信 ....................................................41.1 串口的常識 ..............................................41.2 串口通信原理 ............. ...… 查看全部問答∨ |
|
香港天苑圖像有限公司簡介 一、公司地址和經營范圍: 香港天苑圖像有限公司(HONG KONG Acamar Co., Ltd.)成立于2010年,總部在香港,現已在上海市普陀區光復西路2899弄贏華國際廣場設立上海代表處。我司專業研發和 ...… 查看全部問答∨ |
一個51單片機的程序,對外部AD寄存器讀寫 void AD_Write_Reg( char tx_buff) { U0DBUF=tx_buff; // Write byte to USART0 buffer (transmit data) ...… 查看全部問答∨ |