zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    【bzoj4372】烁烁的游戏 动态点分治+线段树
    【bzoj3730】震波 动态点分治+线段树
    【bzoj3125】CITY 插头dp
    【bzoj2310】ParkII 插头dp
    【bzoj1187】[HNOI2007]神奇游乐园 插头dp
    【bzoj1814】Ural 1519 Formula 1 插头dp
    【loj2325】「清华集训 2017」小Y和恐怖的奴隶主 概率dp+倍增+矩阵乘法
    【bzoj3518】点组计数 欧拉函数(欧拉反演)
    【bzoj5099】[POI2018]Pionek 双指针法
    【bzoj4311】向量 线段树对时间分治+STL-vector维护凸包
  • 原文地址:https://www.cnblogs.com/jxndsfss/p/10127897.html
Copyright © 2011-2022 走看看