(ÍêÕûword°æ)STM32ÖÐʹÓÃGPIOµÄ×ܽá(³¬Ç¿),ÍÆ¼öÎĵµ ÏÂÔØ±¾ÎÄ

ÄÚÈÝ·¢²¼¸üÐÂʱ¼ä : 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 {