打印
[方案相关]

【分享】HC32F072 四通道双边沿中断(一)

[复制链接]
950|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
caizhiwei|  楼主 | 2020-4-23 11:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在官网domo上修改加工的。

1. 配置中断IO:
#include "bsp_decode.h"

/* 4个IO口设置为边沿中断检测,再读取电平状态,从而解析格雷码*/
void BSP_IOInput_Init(void)
{
    stc_gpio_cfg_t stcGpioCfg;
   
    ///< 打开GPIO外设时钟门控
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
   
    ///< 端口方向配置->输入
    stcGpioCfg.enDir = GpioDirIn;
       
    ///< 端口驱动能力配置->高驱动能力
    ///stcGpioCfg.enDrv = GpioDrvL;
       
    ///< 端口上下拉配置->无
    stcGpioCfg.enPu = GpioPuDisable;
    stcGpioCfg.enPd = GpioPdDisable;
    ///< 端口开漏输出配置->开漏输出关闭
    stcGpioCfg.enOD = GpioOdDisable;
    ///< 端口输入/输出值寄存器总线控制模式配置->AHB
    stcGpioCfg.enCtrlMode = GpioAHB;
    ///< GPIO IO USER KEY初始化
   
        Gpio_Init(GpioPortA, GpioPin0, &stcGpioCfg);

        Gpio_Init(GpioPortA, GpioPin1, &stcGpioCfg);
       
        Gpio_Init(GpioPortA, GpioPin2, &stcGpioCfg);
       
        Gpio_Init(GpioPortA, GpioPin3, &stcGpioCfg);
       
        /* 双边沿触发中断*/
        Gpio_EnableIrq(GpioPortA, GpioPin0, GpioIrqFalling);       
        Gpio_EnableIrq(GpioPortA, GpioPin0, GpioIrqRising);
       
        /* 双边沿触发中断*/
        Gpio_EnableIrq(GpioPortA, GpioPin1, GpioIrqFalling);       
        Gpio_EnableIrq(GpioPortA, GpioPin1, GpioIrqRising);
       
        /* 双边沿触发中断*/
        Gpio_EnableIrq(GpioPortA, GpioPin2, GpioIrqFalling);       
        Gpio_EnableIrq(GpioPortA, GpioPin2, GpioIrqRising);
       
        /* 双边沿触发中断*/
        Gpio_EnableIrq(GpioPortA, GpioPin3, GpioIrqFalling);       
        Gpio_EnableIrq(GpioPortA, GpioPin3, GpioIrqRising);
       
           ///< 使能端口PORTA系统中断
    EnableNvic(PORTA_IRQn, IrqLevel3, TRUE);
}


///< PortA中断服务函数
void PortA_IRQHandler(void)
{
        if(TRUE == Gpio_GetIrqStatus(GpioPortA, GpioPin0))
    {            

                if (FALSE == Gpio_GetInputIO(GpioPortA, GpioPin0))
                {
                         ///< LED点亮
                        Gpio_SetIO(EVB_LEDR_PORT, EVB_LEDR_PIN);
                }
                else
                {       
                           ///< LED关闭
                        Gpio_ClrIO(EVB_LEDR_PORT, EVB_LEDR_PIN);
                }

        Gpio_ClearIrq(GpioPortA, GpioPin0);   
    }

        if(TRUE == Gpio_GetIrqStatus(GpioPortA, GpioPin1))
    {            

                if (FALSE == Gpio_GetInputIO(GpioPortA, GpioPin1))
                {
                         ///< LED点亮
                        Gpio_SetIO(EVB_LEDY_PORT, EVB_LEDY_PIN);
                }
                else
                {       
                           ///< LED关闭
                        Gpio_ClrIO(EVB_LEDY_PORT, EVB_LEDY_PIN);
                }
        Gpio_ClearIrq(GpioPortA, GpioPin1);   
    }

        if(TRUE == Gpio_GetIrqStatus(GpioPortA, GpioPin2))
    {            

                if (FALSE == Gpio_GetInputIO(GpioPortA, GpioPin2))
                {
                         ///< LED点亮
                        Gpio_SetIO(EVB_LEDG_PORT, EVB_LEDG_PIN);
                }
                else
                {       
                           ///< LED关闭
                        Gpio_ClrIO(EVB_LEDG_PORT, EVB_LEDG_PIN);
                }
        Gpio_ClearIrq(GpioPortA, GpioPin2);   
    }

        if(TRUE == Gpio_GetIrqStatus(GpioPortA, GpioPin3))
    {            

                if (FALSE == Gpio_GetInputIO(GpioPortA, GpioPin3))
                {
                         ///< LED点亮
                        Gpio_SetIO(EVB_LEDB_PORT, EVB_LEDB_PIN);
                }
                else
                {       
                           ///< LED关闭
                        Gpio_ClrIO(EVB_LEDB_PORT, EVB_LEDB_PIN);
                }
        Gpio_ClearIrq(GpioPortA, GpioPin3);   
    }
}  






使用特权

评论回复
沙发
coshi| | 2020-5-5 15:24 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
板凳
aoyi| | 2020-5-5 15:25 | 只看该作者
真的很详细

使用特权

评论回复
地板
drer| | 2020-5-5 15:25 | 只看该作者
感谢分享 正需要

使用特权

评论回复
5
gwsan| | 2020-5-5 15:25 | 只看该作者
期待楼主的更新

使用特权

评论回复
6
kxsi| | 2020-5-5 15:25 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

857

帖子

13

粉丝