ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 2025/11/13 16:03:34ÐÇÆÚÒ» ÏÂÃæÊÇÎÄÕµÄÈ«²¿ÄÚÈÝÇëÈÏÕæÔĶÁ¡£
STM32 GPIOʹÓÃ
²Ù×÷²½Ö裺
1. ʹÄÜGPIO¶ÔÓ¦µÄÍâÉèʱÖÓ
ÀýÈ磺//ʹÄÜGPIOA¡¢GPIOB¡¢GPIOC¶ÔÓ¦µÄÍâÉèʱÖÓ
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB| RCC_APB2Periph_GPIOC , ENABLE);
2. ÉùÃ÷Ò»¸öGPIO_InitStructure½á¹¹Ìå ÀýÈ磺
GPIO_InitTypeDef GPIO_InitStructure;
3. Ñ¡Ôñ´ýÉèÖõÄGPIO¹Ü½Å
ÀýÈ磺/* Ñ¡Ôñ´ýÉèÖõÄGPIOµÚ7¡¢8¡¢9¹Ü½Åλ £¬Öмä¼Ó¡°|¡±·ûºÅ */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
4. ÉèÖÃÑ¡ÖÐGPIO¹Ü½ÅµÄËÙÂÊ
ÀýÈ磺/* ÉèÖÃÑ¡ÖÐGPIO¹Ü½ÅµÄËÙÂÊΪ×î¸ßËÙÂÊ2MHz */
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz; //×î¸ßËÙÂÊ2MHz
5. ÉèÖÃÑ¡ÖÐGPIO¹Ü½ÅµÄģʽ
ÀýÈ磺/* ÉèÖÃÑ¡ÖÐGPIO¹Ü½ÅµÄģʽΪ¿ªÂ©Êä³öģʽ*/
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; //¿ªÂ©Êä³öģʽ
6. ¸ù¾ÝGPIO_InitStructureÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèGPIOX
ÀýÈ磺/* ¸ù¾ÝGPIO_InitStructureÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèGPIOC */ GPIO_Init(GPIOC, &GPIO_InitStructure);
7.ÆäËûÓ¦ÓÃ
Àý£º ½«¶Ë¿ÚGPIOAµÄµÚ10¡¢15½ÅÖÃ1£¨¸ßµçƽ£© GPIO_SetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);
Àý£º½«¶Ë¿ÚGPIOAµÄµÚ10¡¢15½ÅÖÃ0£¨µÍµçƽ£© GPIO_ResetBits(GPIOA, GPIO_Pin_10 | GPIO_Pin_15);
GPIO¼Ä´æÆ÷£º
¼Ä´æÆ÷ CRL CRH IDR ODR BSRR BRR LCKR EVCR MAPR I/O EXTICR
ÃèÊö
¶Ë¿ÚÅäÖõͼĴæÆ÷ ¶Ë¿ÚÅäÖø߼ĴæÆ÷ ¶Ë¿ÚÊäÈëÊý¾Ý¼Ä´æÆ÷ ¶Ë¿ÚÊä³öÊý¾Ý¼Ä´æÆ÷ ¶Ë¿ÚλÉèÖÃ/¸´Î»¼Ä´æÆ÷ ¶Ë¿Úλ¸´Î»¼Ä´æÆ÷ ¶Ë¿ÚÅäÖÃËø¶¨¼Ä´æÆ÷ ʼþ¿ØÖƼĴæÆ÷ ¸´ÓÃÖØÓ³ÉäºÍµ÷ÊÔ ÅäÖüĴæÆ÷
ÍⲿÖжÏÏß·0-15ÅäÖüĴæÆ÷
GPIO¿âº¯Êý£º
º¯ÊýÃû ÃèÊö GPIO_DeInit ½«ÍâÉèGPIOx¼Ä´æÆ÷ÖØÉèΪȱʡֵ
GPIO_AFIODeInit ½«¸´Óù¦ÄÜ£¨ÖØÓ³Éäʼþ¿ØÖƺÍEXTIÉèÖã©ÖØÉèΪȱʡֵ GPIO_Init ¸ù¾ÝGPIO_InitStructÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèGPIOx¼Ä´æÆ÷ GPIO_StructInit °ÑGPIO_InitStructÖеÄÿһ¸ö²ÎÊý°´È±Ê¡ÖµÌîÈë GPIO_ReadInputDataBit ¶Áȡָ¶¨¶Ë¿Ú¹Ü½ÅµÄÊäÈë GPIO_ReadInputData ¶Áȡָ¶¨µÄGPIO¶Ë¿ÚÊäÈë GPIO_ReadOutputDataBit ¶Áȡָ¶¨¶Ë¿Ú¹Ü½ÅµÄÊä³ö GPIO_ReadOutputData ¶Áȡָ¶¨µÄGPIO¶Ë¿ÚÊä³ö GPIO_SetBits ÉèÖÃÖ¸¶¨µÄÊý¾Ý¶Ë¿Úλ GPIO_ResetBits Çå³ýÖ¸¶¨µÄÊý¾Ý¶Ë¿Úλ GPIO_WriteBit ÉèÖûòÕßÇå³ýÖ¸¶¨µÄÊý¾Ý¶Ë¿Úλ GPIO_Write ÏòÖ¸¶¨GPIOÊý¾Ý¶Ë¿ÚдÈëÊý¾Ý GPIO_PinLockConfig Ëø¶¨GPIO¹Ü½ÅÉèÖüĴæÆ÷ GPIO_EventOutputConfig Ñ¡ÔñGPIO¹Ü½ÅÓÃ×÷ʼþÊä³ö GPIO_EventOutputCmd ʹÄÜ»òÕßʧÄÜʼþÊä³ö GPIO_PinRemapConfig ¸Ä±äÖ¸¶¨¹Ü½ÅµÄÓ³Éä GPIO_EXTILineConfig Ñ¡ÔñGPIO¹Ü½ÅÓÃ×÷ÍⲿÖжÏÏß·
¿âº¯Êý£º º¯ÊýGPIO_DeInit
¹¦ÄÜÃèÊö£º½«ÍâÉèGPIOx¼Ä´æÆ÷ÖØÉèΪȱʡֵ Àý£º
GPIO_DeInit(GPIOA);
º¯ÊýGPIO_AFIODeInit
¹¦ÄÜÃèÊö£º½«¸´Óù¦ÄÜ£¨ÖØÓ³Éäʼþ¿ØÖƺÍEXTIÉèÖã©ÖØÉèΪȱʡֵ Àý£º
GPIO_AFIODeInit();
º¯ÊýGPIO_Init
¹¦ÄÜÃèÊö£º¸ù¾ÝGPIO_InitStructÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèGPIOx¼Ä´æÆ÷ Àý£º
GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_All; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure);
GPIO_InitTypeDef structure
GPIO_InitTypeDef¶¨ÒåÓÚÎļþ¡°stm32f10x_gpio.h¡±£º typedef struct {