笔记:(三)INT外部中断驱动

Author:家有仙妻谢掌柜
Date:2021/2/26
本文已于2021/3/1更新完毕。

本文用到的数据手册连接在这里

这里只分析中断的外部引脚中断,至于其他的,如:定时器中断会在Timer篇章中详解,ADC中断会在ADC篇章中详解等等
关于合泰的中断服务函数写法,在IDE中一定是这样的,固定格式。
如:DEFINE_ISR(INT1ISR,INT1VECTOR)
1.函数名字DEFINE_ISR:    无论是INT0还是INT1又或者是定时器中断,他们的中断服务函数名字都是DEFINE_ISR,这是编译器识别的入口,其他的不行。
2.第一个参数INT1ISR:  针对不同的中断你可以命名独立的函数名字,如:INT1ISR,这就是INT1的标识,这个标识是你自己定义的可以随便写的。
3.第二个参数INT1VECTOR:   中断的向量这里在头文件中定义了,#define INT1VECTOR   0x08

中断向量表如下图:
图中红色方框标识的就是INT1的中断向量,其中箭头标识的寄存器INT1F是请求标志位,左上角的黑色三角,是文档说明,它说明了该请求标志位寄存器的值表示的是可以自动复位的,就是可以自动清零的,

//因此我们不能在中断服务子程序中写上
DEFINE_ISR(INT1ISR,INT1VECTOR)
{if(_int1f){//想要执行的事情}_int1f = 0;
}
//而是要这样写
DEFINE_ISR(INT1ISR,INT1VECTOR)
{//想要执行的事情_int1f = 0;
}

接下来,走一波完整的配置,实现的功能是对黑白条进行计数,中断程序中是不要写太多的东西的,一般都是写一些这样的东西,当中断发生,更新标位置,或者当中断发生 ,对某一个值进行计数,或者中断发生,改变某引脚电平等等,执行的任务越少越好。

#include "include.h"
/******************************************************************************** fuction   IRONInit    * brief * param 无                                                             * return  无*******************************************************************************/
void INT1PinInit(void)
{_pas17 = 0;_pas16 = 0;gpioInput(INT1Pin);            //PA7gpioPullUpEnable(INT1Pin); //PA7_integ = 0x08;            //0b00001000_int1e = 1;            //外部中断1中断使能_int1f = 0;             //清外部中断1标志位 _emi = 1;              //使能总中断
}
/******************************************************************************** fuction   INT1ISR * brief INT1中断函数* param * return    无*******************************************************************************/
DEFINE_ISR(INT1ISR,INT1VECTOR)
{//中断中尽量执行比较简单的任务,这里只对某一个值进行计数Cnt++;   _int1f = 0;
}

INT1PinInit函数中,使用到的寄存器分析

1、边沿触发寄存器选择


我在这里使用的是下降沿触发中断,

2、中断请求,开启中断配置


这里打开INT1控制位寄存器故而让_int1e = 1;
这里打开总中断控制位 故而让_emi = 1;
是否有事件请求,如果有的话是要_int1f = 1;但是置1之后,会进入到中断子程序内,因此我们要设置为0,当有中断来的时候,他会自动设置为1,故而_int1f = 0;

3、中断引脚复用配置


这里要注意的是引脚复用功能,PA7要作为中断,必须开启引脚复用功能,只需设置对应的寄存器即可。 _pas17 = 0; _pas16 = 0;这里选择是00。

#ifndef _IR_H
#define _IR_H#include "BH66F2652.h"#define INT1Pin        PA7 //计数 外部中断1
#define INT1VECTOR  0x08extern void INT1PinInit(void);#endif
/*--------------------------------END THE FILE-----------------------------------*/

笔记:合泰单片机BH66F2652开发(三)INT相关推荐

  1. 合泰单片机BH66F2652开发笔记链接

    Author:家有仙妻谢掌柜 Date:2021/2/26 预计2021/2/28前更新完毕 笔记:合泰单片机BH66F2652开发(一)HT IDE安装使用 笔记:合泰单片机BH66F2652开发( ...

  2. 笔记:合泰单片机BH66F2652开发(四)TIMER

    笔记:(四)TIMER定时器驱动 Author:家有仙妻谢掌柜 Date:2021/2/26 本文已于2021/3/1更新完毕. 本文用到的数据手册连接在这里 定时器中断,基础中断为5ms中断一次,在 ...

  3. HT32合泰单片机开发环境搭建和配置教程

    HT32合泰(Holtek)单片机开发环境搭建安装教程 前言 最近在准备合泰杯的比赛,在看合泰官方的PPT和数据手册学习,顺便做个合泰单片机的开发环境搭建教程. 合泰杯比赛发放的开发板是ESK32-3 ...

  4. 合泰杯 | 合泰单片机入门 环境搭建安装(一)

    最近参加福建省的合泰杯比赛,第一次接触合泰单片机,一开始学习的是51 和 32 ,虽然各类单片机的操作都万变不离其中,但是相对于51和32 的资料,合泰单片机的资料对于新手来说就不那么友好了.所以后面 ...

  5. 合泰杯——合泰单片机工程之点亮LED

    合泰杯--合泰单片机工程1之点亮LED 前言 一.安装HT-3000IDE 二.新建一个工程 二.编写代码 总结 前言 因为团队中很多成员参加了下个学期合泰杯的比赛,所以想利用寒假的时间来整理一套例程 ...

  6. 51单片机学习笔记1 简介及开发环境

    51单片机学习笔记1 简介及开发环境 一.51单片机 1. STC89C52单片机简介 2. 命名规则 3. 封装 (1)PDIP (2)LQFP (3)PLCC (4)PQFP 二.STC8051结 ...

  7. AD练习笔记 51单片机最小系统开发板

    个人练习笔记,如果存在某些漏洞,望大佬们指点. 这是一版51单片机的开发板,除去51的最小系统,还另外添加了蜂鸣器与流水灯电路,使得整体更适合于多种设计,下面是简单介绍       选用DC母座作为充 ...

  8. 合泰杯 | 合泰单片机入门 定时器详解(三)

    说在前面: 好久没有更新是因为一直在忙,想必关注这个系列博文的都是参加合泰公司比赛的小伙伴,后台有好些小伙伴给我私我什么时候更新,这里先道个歉,不好意思久等了.人啊,知道的越多就越迷茫,所以做一个&q ...

  9. 合泰单片机市场占有率_holtek单片机图文全面详解

    电子产品项目中对单片机的选型,可谓仁者见仁智者见智.合泰单片机价格适中,种类也比较齐全.下面就为大家全面介绍下holtek的单片机. holtek单片机是由盛群半导体设计开发,盛群半导体为国内专业微控 ...

最新文章

  1. 解决warning LNK1166: cannot adjust code之掩耳盗铃版
  2. svn服务器搭建经验总结
  3. Avalonia跨平台入门第二十篇之语音播放问题
  4. mybatis学习(37):动态sql-trim
  5. win7系统office向程序发送命令时出现错误
  6. java通信方式_java 认知底层的五种通信方式
  7. wsgiserver python 漏洞_python-简单测试wsgi
  8. hdu 5455 Fang Fang 坑题
  9. 魔兽世界修改服务器配置文件,魔兽世界怀旧服出生参数修改和技能学习
  10. 孩子被人欺负了,要不要打回去?非常赞同这位宝妈的做法
  11. Eclipse中各种查找快捷键
  12. mina自定义编解码
  13. c#调用windows虚拟键盘
  14. EXP4恶意代码分析 20154306 刘宇轩
  15. MySql基础篇——变量、流程控制与游标
  16. 全球首个冰冻环境下的海上风电场完工
  17. 用表格做出的阴影扇形图
  18. NLP相关知识点问答总结(三)
  19. Halcon例程分析8:投影变换矫正倾斜图像
  20. 为什么 APISIX Ingress 是比 Traefik 更好的选择?

热门文章

  1. minecraft_如何解决Minecraft LAN游戏问题
  2. 计算机网络连接设备不见了,计算机本地连接找不到了(不见了)如何修复
  3. linux cpu检测工具,CoreFreq:一款强大的监控 CPU 的专业工具
  4. 洛谷——SP1-TEST - Life, the Universe, and Everything +注册SPOJ的方法
  5. python+requests+pytest 接口自动化框架(四)
  6. U盘病毒病状及解决方法
  7. 【游戏开发日志】【Unity】day_one
  8. 云原生的未来应用发展趋势
  9. 如何计算STM32定时器、独立看门狗和窗口看门狗
  10. STC89C52RC 点亮LED