【STM8L】STM8L之按键中断
来源:互联网 发布:网络斑马斑马什么意思 编辑:程序博客网 时间:2024/05/17 21:50
本篇博文最后修改时间: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);
- }
//****************************************************************************** //name: GUA_Key.c //introduce: 按键驱动 //author: 甜甜的大香瓜 //email: 897503845@qq.com //QQ group 香瓜单片机之STM8/STM32(164311667) //changetime: 2017.02.26 //******************************************************************************
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
//****************************************************************************** //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)添加驱动的路径
PROJDIR \..\USER
$PROJ_DIR$\..\USER
2、添加库的驱动
1)添加库的驱动文件
3、写中断服务函数(stm8l10x_it.c中)
1)添加头文件
- #include “GUA_Key.h”
#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);
- }
//****************************************************************************** //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”
#include "GUA_Key.h"
2)初始化(main.c的main函数中)
- //按键初始化
- GUA_Key_Init();
//按键初始化 GUA_Key_Init();
七、注意事项
暂无。
八、实验结果
设置断点在外部中断2的中断服务函数中,仿真并全速运行,按下按键后会进入中断。
注:但一直按着按键会一直进入中断,暂时不明白为何如此。
1 0
- 【STM8L】STM8L之按键中断
- 【STM8L】STM8L之按键中断
- 【STM8L】STM8L之自定义长短按键
- 【STM8L】STM8L之timer2定时中断
- STM8L
- STM8L外部中断
- 【STM8L】STM8L之红外发射(定时器中断产生38K信号)
- 【STM8L】STM8L之红外发射(定时器中断产生38K信号)
- 【STM8L】STM8L之timer2产生PWM
- 【STM8L】STM8L之内部16M晶振
- 【STM8L】STM8L之低功耗模式
- 【STM8L】STM8L之定时器3的精确延时
- STM8L中断线和中断端口使用方法
- STM8L参考手册
- STM8L学习
- STM8L固件库外部中断的使用及注意事项
- STM8L探索套件学习笔记-EXTI外部中断
- STM8S和STM8L调试串口中断的注意点
- 深度学习经典网络--学习笔记
- 在ubuntu下使用fiddler
- openstack镜像格式转换
- CCFCSP201312-3最大的矩形
- 美化文件按钮
- 【STM8L】STM8L之按键中断
- C++——NOIP模拟题——装果子
- python3.6安装numpy scipy matplotlib的正确打开方式(win64)
- 大数据统计:发布近期网络辟谣TOP10,看看你信过几条?
- MII_GMII_RGMII_RMII_SMII_SSMII_TBI_RTBI
- 有关FFT频率与实际物理频率的分析
- 手推SVM
- OKhttp 拦截器Intercept token失效验证
- Java设计模式《二十》责任链模式