stm8 外部中断

第一步:外部中断说明

stm8 外部中断_第1张图片

我们可以看见stm8不是每个引脚都有外部中断功能,但是还是很多脚都可以设置为外部中断,这个使用起来还是很方便的,就像stm32那样,果然是一个厂家的东西。

再看stm8数据手册里面的引脚说明,也可以看出引脚的功能。

stm8 外部中断_第2张图片

stm8 外部中断_第3张图片

所以在使用时还是要注意。以后遇见了不要说我没说(o)哦。

关于PD7(TLI)引脚也要注意:

● TLI最高等级的硬件中断
当在特定的 I/O边沿检测到在相应的TLI输入时将产生硬件中断。
注意: 在TLI中断服务子程序中禁止使用TRAP指令。

stm8 外部中断_第4张图片

stm8 外部中断_第5张图片

这些是用来设置哪组端口具有外部中断功能。

下面我们在回到GPIO部分。

stm8 外部中断_第6张图片

我设置的是,中断上拉输入。


第二步:具体实现

void Key_Init(void)
{
  /*PD0设置为上拉输入*/
  PD_DDR|=0x00;   //输入
  PD_CR1|=0x01;   //上拉输入
  PD_CR2|=0x01;        //使能外部中断
  asm("sim");           // 关全局中断
  EXTI_CR1 |= 0x80;    //开启PD口,下降沿触发
  asm("rim");           // 开全局中断
}
int main( void )
{
  System_Init();
  Gpio_Init();
  Key_Init();
  while (1);
}<p style="font-family: 宋体;">#pragma vector=0x08</p><p style="font-family: 宋体;">__interrupt void EXTI_PD0(void)</p><p style="font-family: 宋体;">{</p><p style="font-family: 宋体;">  PE_ODR^=0x20;</p><p style="font-family: 宋体;">}</p>

关于函数Gpio_Init(),请看这一讲:《stm8 点亮第一个LED》

编译后下载调试,按下PD0口的按键后,看见PE5口的LED灯熄灭或是点亮。

好了,至此外部中断介绍完了。




你可能感兴趣的:(单片机,寄存器,IAR,外部中断,stm8)