EFM32之GPIO


配置時鍾:

void CMU_ClockEnable(CMU_Clock_TypeDef clock, bool enable)

CMU_ClockEnable(cmuClock_HFPER, true);

/* Enable GPIO in CMU */
CMU_ClockEnable(cmuClock_GPIO, true);

 

配置引腳為輸入:

void GPIO_PinModeSet(GPIO_Port_TypeDef port,
                     unsigned int pin,
                     GPIO_Mode_TypeDef mode,
                     unsigned int out)

/* Configure PB9 and PB10 as input */
GPIO_PinModeSet(gpioPortB, 9, gpioModeInput, 0);
GPIO_PinModeSet(gpioPortB, 10, gpioModeInput, 0);

 

配置引腳為輸出:

void GPIO_PinModeSet(GPIO_Port_TypeDef port,
                     unsigned int pin,
                     GPIO_Mode_TypeDef mode,
                     unsigned int out)

GPIO_PinModeSet(ledArray[ledNo].port, ledArray[ledNo].pin, gpioModePushPull, 0);

 

配置引腳為中斷輸入:

中斷初始化:

void GPIOINT_Init(void)
{
  NVIC_ClearPendingIRQ(GPIO_ODD_IRQn);      //清除奇數引腳中斷標志
  NVIC_EnableIRQ(GPIO_ODD_IRQn);             //使能奇數引腳中斷
  NVIC_ClearPendingIRQ(GPIO_EVEN_IRQn);     //清除偶數引腳中斷標志
  NVIC_EnableIRQ(GPIO_EVEN_IRQn);            //使能偶數引腳中斷
}

 

先配置為輸入,再配置中斷

__STATIC_INLINE void GPIO_IntConfig(GPIO_Port_TypeDef port,
                                    unsigned int pin,
                                    bool risingEdge,
                                    bool fallingEdge,
                                    bool enable)

/* Set falling edge interrupt for both ports */
GPIO_IntConfig(gpioPortB, 9, false, true, true);
GPIO_IntConfig(gpioPortB, 10, false, true, true);

 

 引腳輸出高電平:

__STATIC_INLINE void GPIO_PinOutSet(GPIO_Port_TypeDef port, unsigned int pin)

GPIO_PinOutSet(ledArray[ledNo].port, ledArray[ledNo].pin);

 

引腳輸出低電平:

__STATIC_INLINE void GPIO_PinOutClear(GPIO_Port_TypeDef port, unsigned int pin)

GPIO_PinOutClear(ledArray[ledNo].port, ledArray[ledNo].pin);

 

引腳翻轉輸出電平:

__STATIC_INLINE void GPIO_PinOutToggle(GPIO_Port_TypeDef port, unsigned int pin)

GPIO_PinOutToggle(ledArray[ledNo].port, ledArray[ledNo].pin);

 

讀取輸出引腳電平:

__STATIC_INLINE unsigned int GPIO_PinOutGet(GPIO_Port_TypeDef port,
                                            unsigned int pin)

retVal = (int)GPIO_PinOutGet(ledArray[ledNo].port, ledArray[ledNo].pin);

 

讀取輸入引腳電平:

__STATIC_INLINE unsigned int GPIO_PinInGet(GPIO_Port_TypeDef port,
                                           unsigned int pin)

 

讀取輸入端口:

__STATIC_INLINE uint32_t GPIO_PortInGet(GPIO_Port_TypeDef port)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM