您的位置 首页 模拟

stm8s开发(六) EXIT的运用:做一个外部中止的按钮!

在前几篇文章,GPIO的使用:点亮LED!中只讲述了IO口的输出,并没有输入,因为IO作为输入我建议采用中断方式,可以大大减轻CPU的运行时间。最常用的就是按钮的功能了,当然还有和其他芯片通信的功

  在前几篇文章,GPIO的运用:点亮LED!中只叙述了IO口的输出,并没有输入,因为IO作为输入我主张选用中止方法,能够大大减轻CPU的运转时刻。最常用的便是按钮的功用了,当然还有和其他芯片通讯的功用。

  前篇文章讲过GPIO能够经过寄存器设置为中止输入。

  装备形式DDRCR1CR2装备形式上拉电阻

  输入000悬浮输入 OFF

  010上拉输入ON

  001中止悬浮输入 OFF

  011中止上拉输入ON

  输出100开漏输出 OFF

  110推挽输出

  1×1输出(最快速度10MHZ)

  xxx真实的开漏输出未选用

  这儿咱们选用PC3作为外部中止

  void EXIT_GPIO_Init(void)

  {

  PC_DDR &= 0xf7;

  PC_CR1 |= 0x08; // 将PC3设置成中止上拉输入

  PC_CR2 |= 0x08;

  EXTI_CR1 = 0x20; //PC设置为下降沿触发

  }

  这儿需求留意的是,中止向量指定的是PC,也便是说假如有几个PC口都设置为中止的话,只需其间一个中止呼应,就会进入同一个函数。

  假如你有好几个按键在同一个port口的话,能够在进入中止函数之后做一个IO口状况的获取,断定哪个IO进行了中止,再对应相应的操作。

  #pragma vector = EXIT_PORTC_vector //0x07

  __interrupt void EXIT_PORTC_RQHandler(void) //中止服务函数

  {

  if((PC_IDR & 0x08)==0)

  {

  delay_nms(50); //延时50ms,消抖

  if((PC_IDR & 0x08)==0) //再判别是否按下

  {

  while(!(PC_IDR & 0x08)); //松手检测

  //TODO

  }

  }

  }

  因为运用了机械按钮,一般都会有一个机械颤动的进程,所以进入了中止函数之后,咱们先做一个消抖处理,这样就能够判别按钮的状况,一起也避免颤动造成了屡次中止函数的重复进入。最终参加松手检测,断定按钮动作完结。(TODO这儿就能够参加你需求的操作了)

  附上stm8s在IAR环境下的项目工程,包含了SPI、IIC、PWM、AWU、USART、EEPROM等片上硬件的初始化代码。

  http://download.csdn.net/detail/devintt/9454188

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/moni/184076.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部