STM8L EXITB一个端口两个中断的实现

2019-11-14来源: 51hei关键字:STM8L  EXITB  中断

void EXTI_Config(void)

    EXTI_DeInit();   

    EXTI_SetPinSensitivity(EXTI_Pin_5,EXTI_Trigger_Falling); 

    ITC_SetSoftwarePriority(EXTI5_IRQn, ITC_PriorityLevel_1);

    GPIO_Init(KEY_PORT, KEY_RT_PIN, GPIO_Mode_In_PU_IT);



    EXTI_SetPinSensitivity(EXTI_Pin_3,EXTI_Trigger_Falling);  

    ITC_SetSoftwarePriority(EXTI3_IRQn,ITC_PriorityLevel_1);

    GPIO_Init(GPIOB,GPIO_Pin_3,GPIO_Mode_In_FL_IT );

     

    disableInterrupts();           //关闭中断                                                                  //处理事件 

    EXTI_ClearITPendingBit(EXTI_IT_PortB );     //清除标志位

    enableInterrupts();                         //使能全局中断 

}


中断部分:


extern bool UserButton2;

   

INTERRUPT_HANDLER(EXTI3_IRQHandler, 11)

{

  while(GPIO_ReadInputDataBit(GPIOB,GPIO_PIN_3)==0)

  {

        //UserButton2 = TRUE;

        break;

  }

  EXTI_ClearITPendingBit(EXTI_IT_PortB);

  EXTI_ClearITPendingBit(EXTI_IT_Pin3);

}


INTERRUPT_HANDLER(EXTI5_IRQHandler, 13)

{

  u16 x =0;

  while(GPIO_ReadInputDataBit(GPIOB,GPIO_PIN_5)==0)

  {

    x++;

    Delay_(5);

    if(x==300)

    {

        x =0;       UserButton2 = TRUE;

        break;

    }

  }

  EXTI_ClearITPendingBit(EXTI_IT_PortB);

  EXTI_ClearITPendingBit(EXTI_IT_Pin5);

 

}

关键字:STM8L  EXITB  中断 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic479980.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:STM8L 151G6U6 驱动RW1820温度传感器
下一篇:stm8l 低功耗 halt_active模式

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

stm8l051 halt之后外部中断唤醒问题
最近用到stm8l051 halt,在halt之后开启了外部中断,有时灵,有时不灵,设置下降沿触发,但是按键(低有效)放开了才会从HALT退出,最后发现在进去外部中断的时候一直在外部中断里面不退出。在外部中断程序里面把端口的外部中断和端口使能的外部中断功能关闭,问题解决,可以在下降沿从halt退出。1、开启halt,其他代码省略,只贴halt部分:    /* 禁止TIM3 */    TIM3->SR1 = (uint8_t)(~(uint8_t)TIM3_IT_Update);    CLK_PeripheralClockConfig
发表于 2019-12-05
STM8L052低功耗模式
Stm8L系列单片机的低功耗有五种模式:§ wait模式§ Lowpower run模式§ Lowpower wait模式§ Active-haltwith full RTC模式§ Halt模式最低功耗的就是就是halt模式。这里也主要总结一下如何进入halt模式,进入以后可以通过什么方式唤醒,以及有很多客户会关心的如何自动唤醒。Halt模式进入很简单,执行一条halt指令,调用库函数也就是halt()就行了。但是进入前要注意把所有的中断挂起标志给清除掉。要是不清零又恰巧有中断标志的时候进入该模式也会被立马唤醒。进入这种模式,所有的外设全都关闭了,所有时钟关闭。这时候它自己是醒不过来的,只能靠掐人中(给个外部中断)或者重新复活
发表于 2019-12-05
STM8L读写EEPROM(24LC64)
使用24LC64(24XX64)是低功耗应用的EEPROM,存储容量 8K byte(64K bit),IIC 最大时钟频率400 KHz(24FC64达到1MHz),低功耗CMOS技术:工作电流 1 mA(典型)、 待机电流 1 μ A(典型),32字节的页写缓冲器,超过100万擦/写周期,数据保存>200年。24C02只有8字节的页写缓冲器,操作的地址只有8位,而24LC64操作的地址包含高8位和低8位。两者的数据手册去区别如下:1、AT24C02页写时序:2、24LC64页写时序:STM8L的程序设计如下:(1)数据的页写操作:(2)数据的连续读取:
发表于 2019-12-03
STM8L读写EEPROM(24LC64)
记一次stm8l程序跑飞
项目使用stm8l051f3做主控,CC2500做数据接收,不发送。跑飞的现象就是,刚开始能运行,经过一段未知长度的时间,有可能是3分钟,有可能是30分钟,指示灯不再闪烁,中断按键单片机无反应。接入调试器发现跑到了一个非常大的地址,已经超过了mcu的内部flash空间。可以确定是程序跑飞。经验是:程序跑飞,查条件语句是否都有做处理。程序跑飞,查内存溢出。查了好久,查出是内存溢出导致。因为发送端发送的数据固定是32字节,所以在接收端只开辟了一个32字节的buffer去读取收到的数据
发表于 2019-12-02
STM8L052C6T6液晶LCD驱动过程
; for (counter = 0; counter <= LCD_RAMRegister_13; counter++)    {        LCD->RAM[counter] = 0xff;    }}下面着重记录一下踩过的坑:LCD_Init();函数里面的最后一个参数是LCD_VoltageSource_Internal还是LCD_VoltageSource_External官方STM8L-DISCOVERY的原理图上[object Object]R25这个0R电阻没有焊接,所以代码里使用的是
发表于 2019-12-02
STM8L052C6T6液晶LCD驱动过程
stm8l151低功耗程序架构
最近帮医院做了一款体温记录仪,整个硬件方案资源是:stm8L151 + NTC*2 + EEPROM + 锂电池充电保护电路 + 18mAh纽扣电池;软件逻辑是,每隔一分钟,采样两路温度并保存在EEP里;通过USB转TTL,上位机能够读取,展示温度曲线,最大最小平均值等简单的运算;整个方案很简单,但也走了不少弯路......单片机程序框架之伪代码:void main(void){    CLK_Config();    GPIO_Config();    ADC_Config();    USART_Config();   
发表于 2019-12-02
小广播
何立民专栏 单片机及嵌入式宝典

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

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