2021-06-16

HC32F460的中断有多种类型,针对Io口输入中断,是有几个步骤可以归纳的。
1、按照管脚配好外部中断通道.
2、设置时钟和滤波。
3、设置边沿触发方式。
4、管脚初始化。
5、管脚中断启用。
6、配置中断向量。
7、配置中断处理子程序入口。
8、注册中断。
9、设置中断优先级。
10、中断使能启用。
例程如下,配置PORTB 05脚外中断的初始化函数:
stc_exint_config_t stcExtiConfig;
stc_irq_regi_conf_t stcIrqRegiConf;
stc_port_init_t stcPortInit;

/* configuration structure initialization */
MEM_ZERO_STRUCT(stcExtiConfig);
MEM_ZERO_STRUCT(stcIrqRegiConf);
MEM_ZERO_STRUCT(stcPortInit);

/**************************************************************************/
/* External Int Ch.5                                                  */
/**************************************************************************/
stcExtiConfig.enExitCh = ExtiCh05;

/* Filter setting */
stcExtiConfig.enFilterEn = Enable;
stcExtiConfig.enFltClk = Pclk3Div8;
stcExtiConfig.enExtiLvl =  ExIntFallingEdge;
EXINT_Init(&stcExtiConfig);

/* Set External Int */
MEM_ZERO_STRUCT(stcPortInit);
stcPortInit.enExInt = Enable;
PORT_Init(KEY15_PORT, KEY15_PIN, &stcPortInit);

/* Select External Int Ch.5 */
stcIrqRegiConf.enIntSrc = INT_PORT_EIRQ5;

/* Register External Int to Vect.No.000 */
stcIrqRegiConf.enIRQn = Int005_IRQn;

/* Callback function */
stcIrqRegiConf.pfnCallback = &ExtInt05_Callback;

/* Registration IRQ */
enIrqRegistration(&stcIrqRegiConf);

/* Clear pending */
NVIC_ClearPendingIRQ(stcIrqRegiConf.enIRQn);

/* Set priority */
NVIC_SetPriority(stcIrqRegiConf.enIRQn, DDL_IRQ_PRIORITY_DEFAULT);

/* Enable NVIC */
NVIC_EnableIRQ(stcIrqRegiConf.enIRQn);

中断处理函数如下:
void ExtInt05_Callback(void)
{
if (Set == EXINT_IrqFlgGet(ExtiCh05))
{
u32ExtInt05Count++;

    /* clear int request flag */
    EXINT_IrqFlgClr(ExtiCh05);
}

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值