【STM32F030探索套件】实验三:按键中断.zip

  • 浏览量:3806
  • 下载量:4
  • 资料大小:230.94 KB
  • 日期:2014-01-05
  • 上传者:冰山一角
  • 分享
  • 评论
  • 举报
  • 收藏

资料描述

    一、硬件和软件平台
    硬件平台:stm32f030探索套件
    编译环境:mdk
    硬件工具:mini usb   


    主要文件:key.h、key.c、exti.c和exti.h 


    二、按键控制有两种基本的方式


    1.按键扫描控制


    2.按键中断控制


    按键扫描效率相对要低,因为他一直需要mcu不停的扫描,这就会导致资源的浪费。而按键中断就很巧妙的弥补了这个缺点,只要系统io口出现上升沿或下降沿电平就会触发执行中断内的程序。这样就不会限制mcu的工作。


    三、外部中断简单讲解


    在f030英文手册88页的3.9节就讲述了中断和事件,具体可以参考stm32f10x系列的,原理基本一样。


    下面主要是对按键中断控制进行讲解:


    1.配置gpio与中断线的映射关系的函数syscfg_extilineconfig(),该函数将 gpio端口与中断线映射起来;


    2.io口的中断触发方式:设置该中断线上中断的初始化参数,中断线上中断的初始化是通过函数exti_init()实现的;


    3. 在编写中断服务函数的时候会经常使用到两个函数,第一个函数是判断某个中断线上的中断是否发生(标志位是否置位) :itstatus exti_getitstatus(uint32_t exti_line)这个函数一般使用在中断服务函数的开头判断中断是否发生。


    4.另一个函数是清除某个中断线上的中断标志位:这个函数一般应用在中断服务函数结束之前,清除中断标志位。void exti_clearitpendingbit(uint32_t exti_line)


    这两个函数均在stm32f0xx_exti.c里面,大家可以查看。


    5.中断服务函数,一般有固定的格式:


    void extix_x_irqhandler(void)


    {


    if(exti_getitstatus(exti_linex)!=reset)//判断某个线上的中断是否发生 


    {


    中断逻辑…


    exti_clearitpendingbit(exti_linex);   //清除 linex 上的中断标志位


    }     


    }


    四、用io口外部中断的一般步骤:


    1.初始化io口为输入;
评论(0)

登录后可评论,请 登录注册

   
相关资料
换一换