外部中断

关于单片机中断

给你一囗甜甜゛ 提交于 2020-02-02 03:57:43
中断 :CPU停止当前任务,去处理中断内容,处理完后自动恢复以前任务。   单片机有5个中断源,2个中断优先级,中断受两级控制:     1、CPU开总中断;     2、中断源开中断。 中断源 :引起中断事件的类型。    5个中断源:     1、外部中断请求0,由INT0(P3.2)输入;     2、外部中断请求1,由INT1(P3.3)输入;     3、片内定时器/计数器0溢出中断请求;     4、片内定时器/计数器1溢出中断请求;     5、片内串行口发送/接收中断请求。//很重要,单片机应用中用了很多        定时器/计数器控制寄存器(Timer/counter Control Register ): 用来查看是否产生了外部中断             IT0,IT1(Interrupt Type):外部中断0、1触发方式选择位,由软件设置。         0-->下降沿触发方式,INT0/INT1引脚上从高到低的复跳变可引起中断;         1-->电平触发方式,INT0/INT1引脚上低电平可引起中断。       IE0,IE1(Interrupt Edge):外部中断0、1请求标志位。         当外部中断0、1依据触发方式满足条件产生中断请求时,由硬件置位(IE0/IE1=1);         当CPU响应中断时,由硬件清楚

nRF 外部中断(GPIOTE)

 ̄綄美尐妖づ 提交于 2020-01-22 09:09:35
// GPIOTE 驱动初始化: err_code = nrf_drv_gpiote_init(); APP_ERROR_CHECK(err_code); // 配置设置GPIOTE输出参数,从低电平到高电平 nrf_drv_gpiote_out_config_t out_config = GPIOTE_CONFIG_OUT_SIMPLE(0); // GPIOTE输出初始化: err_code = nrf_drv_gpiote_out_init(LED_1, &out_config); APP_ERROR_CHECK(err_code); //配置设置GPIOTE输入参数,从低电平到高电平 nrf_drv_gpiote_out_config_t in_config = GPIOTE_CONFIG_IN_SENSE_TOGGLE(true); // GPIOTE输入初始化,设置触发中断 err_code = nrf_drv_gpiote_in_init(BUTTON_1, &in_config, in_pin_handler); APP_ERROR_CHECK(err_code); // 设置GPIOE输入事件使能 nrf_drv_gpiote_in_event_enable(BUTTON_1, true); // 中断函数设计,发生中断后LED翻转 void in_pin

心形灯的设计

允我心安 提交于 2020-01-13 07:50:35
设计一个心形灯,包含以下功能: 1、由32个LED灯组成心形流水灯,外接了4个按键,并且两个按键(开始和暂停)接在两个外部中断引脚上; 2、上电后心形灯先全亮5秒,后亮灭闪烁5秒,可以测试灯状态的好坏; 3、之后处于全灭等待状态,当按下开始按键后心形灯按照一定规律显示,规律自定义,创意越好分数越高; 4、当在任意状态下按下暂停键后心形灯停留在当前状态不再改变,再一次按下暂停键后则继续显示; 5、另外一个键为模式切换键,每按一次切换键则切换一次显示模式,切换键在灯运行状态和暂停状态均可切换; 6、第四个键为速度键,可以改变心形灯的亮灭切换速度,通过速度键可以切换不同的切换速度。 关键词: 心形流水灯,AT89C51,复位电路,时钟电路,电路仿真 绪论 一、随着现代科学技术的持续进步和发展以及人们生活水平的不断提高,以大规模、超大规模集成电路为首的电子工艺技术的使用也越来越广泛,结合单片机技术设计的电子电路也层出不穷。 LED彩灯由于其丰富的灯光色彩、低廉的造价以及控制简单等特点而得到了广泛的应用,用彩灯来装饰街道和城市建筑物已经成为一种时尚。利用控制电路可使彩灯按一定的规律不断的改变状态,不仅可以获得良好的观赏效果,而且可以省电。 彩灯的运用已经遍布于人们的生活中,从歌舞厅到卡拉OK包房,从节日的祝贺到日常生活中的点缀,这些不仅说明了我们对生活的要求有了质的飞跃

STM32外部中断

我是研究僧i 提交于 2020-01-12 21:30:46
STM32外部中断 STM32有19个外部中断:线0-15对应外部IO口的输入中断;线16连接PVD输出;线17连接RTC闹钟事件;线18连接USB唤醒事件。 GPIO与中断线的映射关系:GPIOx.0映射到EXTI0,GPIOx.1映射到EXTI1;以此类推。 使用外部中断需要使能AFIO时钟:RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); 还要设置IO口与中断线的映射关系:(例)GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5); 然后设置中断的触发模式等初始参数 然后设置NVIC中断优先级 设置完中断优先级后就是编写中断服务函数,STM32的IO口外部中断函数只有6个,中断线0-4分别对应一个中断服务函数,中断线5-9共用一个,10-15公用一个,如图: 注意 :设置中断优先级分组需要在主函数中调用相关函数设置,一定要记住初始化函数(初始化延时、按键、LED) 在编写完中断服务函数之后要清楚中断标志位,如图: 外部中断函数 # include "exti.h" //exti.c文件 # include "led.h" # include "key.h" # include "delay.h" # include "usart.h" //外部中断初始化函数

外部中断的配置步骤以及注意事项

浪尽此生 提交于 2020-01-10 19:19:09
void Key_Init(void) { GPIO_InitTypeDef g; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE); g.GPIO_Pin=GPIO_Pin_4; g.GPIO_Mode=GPIO_Mode_IPU; GPIO_Init(GPIOE,&g); } void exti_Init(void) { Key_Init(); RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE); GPIO_EXTILineConfig(GPIO_PortSourceGPIOE,GPIO_PinSource4); EXTI_InitTypeDef e; e.EXTI_Line=EXTI_Line4; e.EXTI_Mode=EXTI_Mode_Interrupt; e.EXTI_Trigger=EXTI_Trigger_Falling; e.EXTI_LineCmd=ENABLE; EXTI_Init(&e); NVIC_InitTypeDef n; n.NVIC_IRQChannel=EXTI4_IRQn; n.NVIC_IRQChannelPreemptionPriority=1; n.NVIC_IRQChannelSubPriority=0; n.NVIC

接口与总线 考点整理

删除回忆录丶 提交于 2019-12-29 23:11:06
说明 以下内容为个人整理,答案也是个人回答,不一定对,所以你对答案有任何问题,都欢迎与我讨论。 Q01:51单片机P0、P1、P2、P3口功能作用? 答: P0可做地址口的低8位也可以做数据口和I/O口 P1可做普通的I/O口 P2除了做I/O口,也是作为地址口的高8位(总共16位) P3 既可以是普通IO口,也可以是外部中断、定时、外部输入的端口 Q02:当串口发送一个数据或接收数据时,哪两个位会置位? 答: 接收数据时,RI 会置位 发送数据时,TI 会置位 Q03:81单片机的累加器是什么? 答: ACC Q04:当晶振频率为12MHz,定时器的频率为多少? 答: 频率为1Mhz 说明: 机器频率 = 晶振频率/12 Q05:LED的显示分为几种? 答: 两种,动态扫描和静态扫描 说明: 动态扫描中LED的调度是放在定时器中 Q06:51单片机内存划分 答: 低128个字节 从00H~1FH(32字节):寄存器区,四组寄存器区,一组有8个寄存器 从20H~2FH(16字节 128位):位寻址区 剩下:普通内存 高128个字节 特殊功能寄存器 Q07:ex0、ex1、et0的含义 答: ex0 = 1; //允许外部中断0 ex1 = 1; //允许外部中断1 et0 = 1; //允许定时器0中断 1 2 3 说明: 在这里插入图片描述 上图为IE(中断允许寄存器) EA

外部中断0例程

泄露秘密 提交于 2019-12-28 07:36:49
// // 中断请求标志TCON; 外部中断配置; #include “reg51.h” //此文件中定义了单片机的一些特殊功能 typedef unsigned int u16; //对数据类型进行声明定义 typedef unsigned char u8; sbit k3=P3^2; //定义按键 K3 sbit led=P2^0; //定义 P20 口是 led void delay(u16 i) { while(i–); } /**************************************************************** 函 数 名 : Int1Init() 函数功能 : 设置外部中断 1 输 入 : 无 输 出 : 无 **************/ void Int0Init() { //设置 INT0 IT0=1;//跳变沿出发方式(下降沿) EX0=1;//打开 INT0 的中断允许。 EA=1;//打开总中断 } void main() { Int0Init(); // 设置外部中断 0 while(1); } /**************************************************************** 函 数 名 : Int0() interrupt 0 函数功能 : 外部中断 0

GPIO外部中断

爷,独闯天下 提交于 2019-12-17 21:38:43
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 在STM32中,其每一个外设都可以产生中断。 中断分为分为 ①系统异常,内核 ②外部中断,外设 NVIC(Nested Vector Interrupt Controller ):嵌套向量中断控制器,属于内核外设,管理着包括内核片和片上所有外设的终端相关功能。 core_cm3.h与misc.h有相关函数 野火指南者内核中断有 10 个,外设中断有 60 个。 由NVIC->IPRx来控制 static void EXTI_NVIC_Config(void) { NVIC_InitTypeDef NVIC_InitStruct;//配置NVIC结构体NVIC_InitTypeDef; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);设置优先级分组 NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn ; NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;//选择主优先级 NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;//选择次优先级 NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;

28335GPIO及外部中断配置介绍

ぐ巨炮叔叔 提交于 2019-12-13 03:20:06
本文转载连接: https://blog.csdn.net/E_ROAD_BY_U/article/details/53083151 弄了两周终于把28335的启动流程、寄存器及中断向量表的映射方法、内存的划分等有了一个全面的了解,今天看到久违的LED灯的闪烁,顿扫阴霾。特在此总结下28335GPIO及外部中断配置介绍。其实对于一个微控制器,只要能够独立实现这两个功能,也算是入门了。 一、GPIO口介绍 外界二进制信息(数字量)要被CPU处理,要给存储器存放,就需要外界信息源与两者之间的交换接口,这样的交换接口若用来进行通用目的数字量的输入输出,就被称为通用数字量输入/输出接口,简称GPIO。F28335 DSP有多达88个GPIO口,对应着芯片引出的88个引脚,随着芯片的封装与尺寸的确定,引脚数目是有限的,所以这88个引脚多数都是功能复用的,即可以灵活配置为输入引脚,也可以灵活配置为输出引脚,即可以作为通用I/O引脚,也可以作为特殊功能口(如SCI、SPI、ECAN等),非常灵活,用户根据需要,可以通过GPIO MUX(输入输出多路选择器,复用开关)寄存器来进行相关配置。 F28335DSP将这88个GPIO口分成了A、B、C三大组,A组包括GPIO0至GPIO31,B组包括GPIO32至GPIO63,C组包括GPIO64至GPIO87,每个引脚都复用了多个功能,同一时刻

STM32 学习笔记 -- EXIT外部中断 按键的误触发问题

橙三吉。 提交于 2019-12-12 09:01:59
版权声明:本文为CSDN博主「menghuanshen」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/menghuanshen/article/details/89424062 ———————————————— EXIT外部中断 按键的误触发问题 最近在调试按键作为外部中断exti进行触发动作,发现每次按键按下和按键抬起都会多次进入中断函数,造成程序不稳定,经过反复调试和查阅资料,最后终于已经把这个问题解决,现在总结一下: 1、EXTI重复配置两次导致误触发中断的问题 如果重复两次配置EXTI的话,由于第一次已经打开中断,当进行第二次配置中断的时候,会把中断引脚首先配置成默认引脚,然后在配置成目的引脚,这样由于默认引脚是低电平,所以在切换的过程中就会进入一次中断!!具体请参见: http://bbs.elecfans.com/jishu_942011_1_1.html 2、STM32F407 外部中断误触发问题 现象:调试STM32F407低功耗的时候,使用的PA0做个唤醒源,发现在没有触发EXTI的时候,MCU居然被唤醒。 原因:PA0配置成EXTI(上拉输入),一直被误触发。 解决方式:将PA1配置成浮空输入(GPIO_PuPd_NOPULL),并且外部上拉一个4.7k电阻