STM8的线中断和端口中断

STM8L的中断,有两种模式,分别为Pin模式和Port模式,也就是所谓线中断和端口中断。
简而言之,
线中断是指所有寄存器组的同一管脚Pin的中断都使用同一中断号,如,

void KEY2Init()
{
  PB_DDR_bit.DDR2 = 0;      //GPB->PIN2 设置端口PB->2的输入输出方向寄存器为输入方向 
  PB_CR1_bit.C12 = 1;       //GPB->PIN2 带上拉电阻输入
  PB_CR2_bit.C22 = 1;       //GPB->PIN2  使能外部中断
                            // 使用的是第二个端口作为中断 所以选择P2Is 
  EXTI_CR1_bit.P2IS = 2;    //10 tx端口bit2 外部中断线2为下降沿触发中断
  EXTI_CONF_bit.PBLIS = 0;  //设置PB[3:0]作为外部通用中断 PB端口 低4位
}

端口中断是指同一个或多个寄存器组的所有Pin的中断使用同一中断号。

void KEY3Init()
{
  PD_DDR_bit.DDR3 = 0;      //GPD->PIN3 设置端口PD->3输入方向
  PD_CR1_bit.C13 = 1;       //GPD->PIN3 带上拉电阻输入
  PD_CR2_bit.C23 = 1;       //GPD->PIN3  使能外部中断
  
  EXTI_CR3_bit.PDIS = 2;    //PortD端口 外部中断线2为下降沿触发中断
  EXTI_CONF_bit.PDLIS = 1;  //设置PD作为外部通用中断
}

举例而言,
所有Port A/B/C/D/E的Pin1的中断都是EXTI1,
Port B 和Port G的所有Pin的中断都是EXTIB/G
可以理解为线中断具体到那个引脚上,而端口中断具体到那个端口上。
一类端口(port)可以包含很多的引脚(pin)。
使用寄存器模式进行编写时,两者很像,其中区别在于(请仔细观察下面两行代码):

 1. EXTI_CR1_bit.P2IS = 2;    //10 tx端口bit2 外部中断线2为下降沿触发中断
 2. EXTI_CR3_bit.PDIS = 2;    //PortD端口 外部中断线2为下降沿触发中断
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值