• 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)
  • 相关阅读:
    MinGW GCC下sleep()函数问题
    memcached内存分配及回收初探
    fastcgi重启
    window wamp下xhprof的安装使用,Graphviz配置
    Bootstrap研究3-基础html元素
    sql之left join、right join、inner join的区别
    【Asp.net入门03】第一个ASP.NET 应用程序-创建ASP.NET项目
    【Asp.net入门02】搭建Asp.net开发环境
    【Asp.net入门01】动态网站基础知识
    Android Studio 安装在Windows10中的陷阱
  • 原文地址:https://www.cnblogs.com/jxndsfss/p/10127897.html
Copyright © 2020-2023  润新知