历史上的今天

今天是:2024年09月02日(星期一)

正在发生

2020年09月02日 | stm8s开发(六) EXIT的使用:做一个外部中断的按钮

发布者:快乐舞蹈 来源: eefocus关键字:stm8s  EXIT  外部中断 手机看文章 扫描二维码
随时随地手机看文章

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


  前篇文章讲过GPIO可以通过寄存器设置为中断输入。

  配置模式DDRCR1CR2配置模式上拉电阻

  输入000悬浮输入 OFF

  010上拉输入ON

  001中断悬浮输入 OFF

  011中断上拉输入ON

  输出100开漏输出 OFF

  110推挽输出

  1x1输出(最快速度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

关键字:stm8s  EXIT  外部中断 引用地址:stm8s开发(六) EXIT的使用:做一个外部中断的按钮

上一篇:stm8s开发(八) IIC的使用:IIC主机通信!
下一篇:STM8S 外部中断一直进解决方法

推荐阅读

据中国工业报报道,近日,中联重科与知名人工智能公司Landing.AI签署战略合作协议,双方将携手在农业领域展开“人工智能(AI)+农业”合作,共同研发基于人工智能(AI)技术的新产品,打造一支顶尖的人工智能技术团队,助力中联重科成为以人工智能驱动的装备制造企业。 作为一家全球高端装备制造企业,2014年8月,中联重科进军农业机械领域,其位于芜湖的...
近日,国内第三代半导体行业领军企业——深圳基本半导体宣布了一则重磅消息:一辆搭载了基本半导体碳化硅MOSFET和碳化硅肖特基二极管的新能源汽车,至今已累计无故障行驶120天、运行里程超过1万公里!基本半导体正不断提速车规级碳化硅功率器件的研发和测试,在国内第三代半导体企业中脱颖而出,将引领碳化硅器件技术创新,推动功率器件国产替代进程。百亿...
写程序存储器#define tmpBuffer[64] //是要写入的数据 #define ProgrammingBuffer[64] //临时缓存//写FlashBlock(一个块为64字节)void WriteFlashBlock(void) { uint8_t i; //将64字节读入RAM。 TBLPTRU = 0x00; TBLPTRH = HIGH_BYTE(ProgrammedPointer); TBLPTRL = LOW_BYTE(ProgrammedPointer); for (...
  防爆电机冷却系统的类型  1、空气冷却系统  空气冷却是防爆电机最常用的冷却方法,有自冷、自扇冷、他扇冷、管道通风冷、自由循环通风、封闭循环通风、热管冷却等多种方式。按照防爆电机内冷却空气流通的角度,空气冷却系统可以分为径向、轴向和混合式三种。  轴向通风系统有利于安装直径比较大的风扇,以加大通风量和获取足够大的风压。主要弱...

史海拾趣

问答坊 | AI 解惑

影响印刷电路板(PCB)的特性阻抗因素及对策

影响印刷电路板(PCB)的特性阻抗因素及对策 …

查看全部问答∨

英飞凌32位微处理器集成1M嵌入式闪存,成本削减40%

面向高性能、低成本型工业控制应用,英飞凌科技(Infineon Technologies)宣布推出基于TriCore架构的全新TC116x系列32位微处理器的两款样品。TC1161和TC1162微处理器集成了高性能66MHz CPU以及1M的嵌入式闪存和完整外设集,并采取了低成本的封装形式 ...…

查看全部问答∨

菜鸟问题!显示的计数不走是什么问题?

请教:计数不走,是哪的问题?单板有这些片子:74373(02 08 10 21 07 32 175 154 138 245 573),8155,12887,cy7c136,W78E516B,oks1235等。没用74193。液晶也正常。请高手指教一下。…

查看全部问答∨

招聘 arm嵌入式程师

我公司(北京英泰赛福软件技术有限公司www.qhitsf.com)欲招聘研发人员,要求熟练掌握51系列嵌入式软件,使用C、汇编语言进行编程,对ARM芯片有深入了解并应用ARM芯片进行过产品研发,薪金面议,有意请将简历发送到我公司邮箱(itsf@vip.sina.com)。…

查看全部问答∨

给把nk.nb0烧录到s3c2410板子上重启以后出现的情况,一直花屏

板子应该是没有问题的,因为用那个公司提供的nk.nb0文件的时候,是可以的 自己按照他公司提供的smdk2410 照说明 弄了个nk。nb0文件烧到板子里,重启就出现下面的情况 VIVI bootloader 0.1.4 (chris@yangchu.com) (gcc version 2.95.3 20010315 (r ...…

查看全部问答∨

passthru问题

小子又迷茫了,还是描述下问题,首先在MPSENDPACKETS对发往某一地址的所有TCP包进行加密,也修改过校验和。然后在PTRECEIVE中进行反向解密,最终调用NdisMIndicateReceivePacket(pAdapt->MiniportHandle, &MyPacket, 1)将包含解密后数据的新建 ...…

查看全部问答∨

求助LwIP操作系统移植编译、链接的问题!

编译没有问题,但是链接有好几个如下的问题: .\\Object\\ucos_lwip.axf: Error: L6406E: No space in execution regions with .ANY selector matching rit128x96x4.o(.data). .\\Object\\ucos_lwip.axf: Error: L6406E: No space in execution r ...…

查看全部问答∨

安装RHEL5出现错误

   我在vmware上安装RHEL5时,出现如下错误提示。我的操作系统是win7的,这是什么原因啊??谢谢 [ 本帖最后由 江汉大学南瓜 于 2012-4-13 18:01 编辑 ]…

查看全部问答∨

LED驱动精准控制方式(附图)

提到LED驱动精准度通常会想到恒流误差,其实驱动精度并不仅仅限于电流精度一项。LED是一款典型的电流驱动型器件,精准控制LED驱动电流,可决定包括光效率、电源效率、散热和产品亮度等在内的许多参数。驱动LED主要在于控制它的电流。无论是直接增、 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved