【STM8L】STM8L之按键中断

来源:互联网 发布:手机淘宝上怎么退货 编辑:程序博客网 时间:2024/06/07 16:36

本篇博文最后修改时间:2017年02月26日,03:17。


一、简介

本文介绍STM8L系列如何使用按键中断,对PB2采用中断下降沿的方式进入中断


二、实验平台

编译软件:IAR for STM8 1.42.2

硬件平台:stm8l101f3p6开发板

仿真器:ST-LINK

库函数版本:STM8L_STMTouch_Lib_V1.1.0


版权声明

博主:甜甜的大香瓜

声明:喝水不忘挖井人,转载请注明出处。

原文地址:http://blog.csdn.NET/feilusia

联系方式:897503845@qq.com

香瓜BLE之CC2541群:127442605

香瓜BLE之CC2640群:557278427

香瓜BLE之Android群:541462902

香瓜单片机之STM8/STM32群:164311667
甜甜的大香瓜的小店(淘宝店):https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i


四、实验前提
1、在进行本文步骤前,请先阅读以下博文:
暂无

2、在进行本文步骤前,请先实现以下博文:

暂无


五、基础知识

暂无


六、实验步骤

1、工程中添加自己写的按键驱动

1)写一个驱动GUA_Key.c (存放在工程的USER文件夹中)

//******************************************************************************                          //name:             GUA_Key.c             //introduce:        按键驱动      //author:           甜甜的大香瓜                   //email:            897503845@qq.com       //QQ group          香瓜单片机之STM8/STM32(164311667)                    //changetime:       2017.02.26     //******************************************************************************  #include "stm8l10x.h"#include "GUA_Key.h"//******************************************************************************              //name:             GUA_Key_Init             //introduce:        按键初始化          //parameter:        none    //return:           none           //author:           甜甜的大香瓜                   //email:            897503845@qq.com       //QQ group          香瓜单片机之STM8/STM32(164311667)                    //changetime:       2017.02.26                      //******************************************************************************  void GUA_Key_Init(void){  //按键IO初始化  GPIO_Init(GUA_KEY_PORT, GUA_KEY_PIN, GUA_KEY_MODE);              //触发方式  EXTI_SetPortSensitivity(GUA_KEY_EXTI_PORT, GUA_KEY_EXTI_SENSITIVITYT);        }

2)写一个驱动头文件GUA_Key.h(存放在工程的USER文件夹中)

//******************************************************************************                          //name:             GUA_Key.h             //introduce:        按键驱动的头文件      //author:           甜甜的大香瓜                   //email:            897503845@qq.com       //QQ group          香瓜单片机之STM8/STM32(164311667)                    //changetime:       2017.02.26     //******************************************************************************  #ifndef _GUA_KEY_H_#define _GUA_KEY_H_/*********************宏定义************************///类型宏  #ifndef GUA_U8          typedef unsigned char GUA_U8;          #endif        #ifndef GUA_8          typedef signed char GUA_8;          #endif                #ifndef GUA_U16          typedef unsigned short GUA_U16;          #endif     #ifndef GUA_16          typedef signed short GUA_16;          #endif                   #ifndef GUA_U32          typedef unsigned long GUA_U32;          #endif     #ifndef GUA_32          typedef signed long GUA_32;         #endif    #ifndef GUA_U64      typedef unsigned long long GUA_U64;    #endif    #ifndef GUA_64      typedef signed long long GUA_64;    #endif  //按键引脚宏#define GUA_KEY_PORT                    GPIOB#define GUA_KEY_PIN                     GPIO_Pin_2#define GUA_KEY_MODE                    GPIO_Mode_In_PU_IT//触发方式#define GUA_KEY_EXTI_PORT               EXTI_Port_B#define GUA_KEY_EXTI_SENSITIVITYT       EXTI_Trigger_Falling/*********************外部函数声明************************/   void GUA_Key_Init(void);#endif

3)工程中添加GUA_Key.c



4)添加驱动的路径

$PROJ_DIR$\..\USER 

2、添加库的驱动

1)添加库的驱动文件



3、写中断服务函数(stm8l10x_it.c中)
1)添加头文件
#include "GUA_Key.h"

2)修改中断服务函数

//******************************************************************************              //name:             EXTI2_IRQHandler             //introduce:        外部中断2的中断服务函数          //parameter:        none    //return:           none           //author:           甜甜的大香瓜                   //email:            897503845@qq.com       //QQ group          香瓜单片机之STM8/STM32(164311667)                    //changetime:       2016.11.28                     //******************************************************************************  INTERRUPT_HANDLER(EXTI2_IRQHandler, 10){  //判断是否被拉低  if(GPIO_ReadInputDataBit(GUA_KEY_PORT, GUA_KEY_PIN) == RESET)  {    //置位功能码    //gGUA_Function = FUNC_GUA_KEY_SHORT_EVENT;    }      //清除中断标志位  EXTI_ClearITPendingBit(EXTI_IT_Pin2);}

4、应用层中调用

1)添加头文件(main.c中)

#include "GUA_Key.h"

2)初始化(main.c的main函数中)

  //按键初始化  GUA_Key_Init();

七、注意事项
暂无。

八、实验结果

设置断点在外部中断2的中断服务函数中,仿真并全速运行,按下按键后会进入中断

注:但一直按着按键会一直进入中断,暂时不明白为何如此。







0 0
原创粉丝点击