《遥控器开发基础教程2开源编队无人机中断按键检测.docx》由会员分享,可在线阅读,更多相关《遥控器开发基础教程2开源编队无人机中断按键检测.docx(11页珍藏版)》请在第一文库网上搜索。
1、COCOF1Y教程疯壳无人机系列目录.1一、轻触按键.1.1 轻触按键简介11.2 轻触按键原理1二、中断22.1 中断简介22.2 中断优先级管理32.3 外部中断的触发方式42.4 外部中断常用寄存器42.5 中断实验5A1开源编队无人机A1OPENSOURCEFORMATIONDRONE高级功能SQ施飞激光,压光流定点有头无头3DHig双定高双模式令公4)W1F1的传遥控控制视觉追踪视觉追踪视觉追除控制飞行国码一色形状表日)视觉叁随图形化多机支持图形化自主巡线A1语音控制的动小车编队飞行缰程飞行配套资料:httpwvw.fengke.c1ub详情地址:http:/官方学习交流群:4575
2、86268中断(按键检测)一、轻触按键1.1 轻触按键简介轻触按键是众多按键中的一款产品,它其实相当于是一种电子开关,只要轻轻的按下按键就可以把开关接通,松开时把开关断开。轻触按键由于微动开关的特性以及体积小、质量轻的优势在家用电器方面得到了广泛的应用,应用场景有:电视机按键、遥控器按键、电脑按键、键盘按键、显示器按键、照明按键等,如下图所zjo1.21.3 轻触按键原理以四脚轻触按键示例,四脚轻触开关的内部结构如下图所示。这种开关的工作原理,其实和普通按钮开关的工作原理差不多,由常开触点、常闭触点组合而成,在四脚轻触开关中,常开触点的作用,就是当压力向常开触点施压时,这个电路就呈现接通状态;
3、当撤销这种压力的时候,就恢复到了原始的常闭触点,也就是所谓的断开。这个施压的力,就是用我们的手去开按钮、关按钮的动作。二、中断2.1 中断简介由于发生了某种随机的事件(外部或内部),引起单片机暂时中断正在运行的程序,转去执行一段特殊的服务程序(中断服务子程序或中断处理程序),以处理该事件,该事件处理完后又返回被中断的程序继续执行,这一过程就称为中断,引发中断地称为中断源。比如:看电视时突然门铃响,那么门铃响就相当于中断源。有些中断还能够被其他高优先级的中断所中断,那么这种情况又叫做中断的嵌套。由于单片机中中断众多,我们这里主要讲外部中断。STM32F103的每个GP1o引脚都可以作为外部中断的
4、中断输入口,每个中断都设有状态位,每个中断/事件都有独立的触发和屏蔽设置。STM32的外部中断线及其对应事件为:(1) 1ineo15:对应外部IO口的输入中断;(2) 1ine16:连接到PVD输出;(3) 1ine17:连接到RTC闹铃事件;(4) 1ine18:连接到USB唤醒事件;(5) 1ine19:连接到以太网唤醒事件。这里我们使用到1ineO15的GP1o输入中断,这里的015分别对应每组GPIo引脚的015。如下表所示为管脚所对应的中断线以及对应的中断服务函数名称。管脚中断标志中断处理函数PAO-PGOEXITOEXT1O-IRQHand1erPA1-PG1EXIT1EXTIJ
5、IRQHand1erPA2PG2EXIT2EXT12_IRQHand1erPA3PG3EXIT3EXT13RQHandIerPA4PG4EXIT4EXTI4RQHandIerPA5PG5EXIT5EXTI9_5_IRQHand1erPA6PG6EXIT6PA7-PG7EXIT7PA8PG8EXIT8PA9PG9EXIT9PA10-PG10EXITiOEXTI15_IOJRQHandIerPA11-PG11EXIT1IPA12PG12EXIT12PA13PG13EXIT13PA14-PG14EXIT14PA15PG15EXIT152.2 中断优先级管理当配置了多个中断后,如果同一时间多个中断触发
6、怎么办?谁先执行谁后执行?在STM32中有一套专门用于处理中断优先级的问题的机制,叫中断分组机制。分组配置在寄存器SCB-AIRCR中。如下表所示。组AIRCR10:8IPbiu7:4分配情况分配结果01110:4O位抢占优先级,4位响应优先级1HO1:31位抢占优先级,3位响应优先级2i12:22位抢占优先级,2位响应优先级3IOO3:13位抢占优先级,1位响应优先级4Oi14:04位抢占优先级,O位响应优先级组O就是4位都用来设置成响应优先级,2八4二16位都是响应优先级;组1分为(2八1)两个抢占优先级,在这两个抢占优先级里面还分别有(2人3)八个响应优先级,(2A1)*(23)=16;
7、组2分为(2人2)四个抢占优先级,在这四个抢占优先级里面还分别有(2人2)四个响应优先级,(2八2)*(22)=16;组3分为(2八3)八个抢占优先级,在这八个抢占优先级里面还分别有(2N)两个响应优先级,(2八3)*(21)=16;组4分为(2八4)十六个都是抢占优先级(2八4)=16;STM32的中断分组常常使用代码“NVIC_PriorityGroupConfig,如下示例:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);该示例代码设置NVIC中断分组2即2位抢占优先级,2位响应优先级,也就是说可以配置成四个抢占优先级,在这四个抢占优先级中还
8、可以配置四个响应优先级。那么什么又叫做抢占优先级,什么叫做响应优先级呢?主要区别如下:(1)抢占优先级。抢占优先级高的中断,可以打断抢占优先级低的中断;(2)响应优先级。抢占优先级相同的中断,响应优先级高的可以优先执行。2.3 外部中断的触发方式STM32触发外部中断的方式主要有三种:上升沿触发,指的是电平从低电平(“0”)变为高电平(“1”)的过程,对应上图中的上升时间部分。下降沿触发,指的是电平从高电平(“1”)变为低电平(“0”)的过程,对应上图中的下降时间部分。上升沿下降沿触发,指的是(I)、(2)两种情况都会触发中断。2.4 外部中断常用寄存器STM32配置外部中断的常用寄存器如下:
9、(1)上升沿触发选择寄存器(EXT1RTSR),该寄存器用于配置中断X线上的中断是否允许上升沿触发。31302928272625242322212019181716ReservedTR19TR18TR17TR16rwrwrwrw1514131211109876543210TR15TR14TR13TR12TR11TR10TR9TR8TR7TRTR5TR4TR3TR2TR1TROrwrwMIIWrwrwrwrwrwTRx:指的是中断线X的上升沿触发事件配置位,其中。为禁止输入线上升沿触发,1为允许输入线上升沿触发。(2)下降沿触发选择寄存器(EXT1FTSR),该寄存器用于配置中断X线上的中断是否
10、允许下降沿触发。31302928272625242322212019181716TR19TR18TR17TRI6Reservedrwrwrwrw1514131211109876543210TR15TR14TR13TR12TR11TRWTR9TR8TR7TR6TR5TR4TR3TR2TR1TROrwrwrwrwrwWrwrwrwTRx:指的是中断线X的下降沿触发事件配置位,其中O为禁止输入线下降沿触发,1为允许输入线下降沿触发。2.5 中断实验本节实验的内容是使用遥控手柄上的左摇杆的按键对遥控上的指示灯进行控制,这里把左摇杆按键的GP1c)配置外部中断的下降沿触发的方式,一旦触发则把遥控器指示灯
11、的状态进行反转,即原本为亮则灭,原本为灭则亮。遥控器的左摇杆按键如下图所示。查看原理图,可知左摇杆的按键对应PB9,如下图所示。遥杆电位器STM32最小系统V+RFK)RsRT211RISRT1IFVATAADCO14O1ED-SCK15Xdc】6O1EDMoSI17PRe11E119TX-30指示灯亮DP33DIO34C1K37C15CS238II1II1GND,叶第旱鸵5PAOfWKUPPBOPA1PB1PA2BT!PB2PA3JTDOPB3PA4JNTRSTPB4PA5PB5PA6PB6PA7PB7PA8PB8PA9SART1TXPB9PaiovsartTrxUSART3TXTB1OPA
12、11USART3RXPB11PA12PB12PA13JTMSSWDIOPBBPA14OTCKSWC1KPB14PA15JTDIPB15OSCINPDOTamperrtcpcbOSCOeTPD1OSC32INPC14OSC32OUTPC15BOOTONRSTVBATVSS1VSS_2VDDIVSS_3VDD2VDD3VDDAVSSASTM32F103C8T618ADa19ADC320CE39CS1401ED1411ED242O1ED_RESS3O1EDDC45FUX7C)DF21TX31RX325CSN26SCK27M1SO28MOS11AND1ED1ED的配置可以参考遥控器开发基础教程GPI0一节。整体的编写代码的思路如下表所示:代码思路1管脚配置1、定义结构体;2、使能时钟;3、填充结构体;4、装载结构体。2外部中断配置1、定义结构体;2、使能时钟;3、配置中断线;4、填充结构体;5、装载结构体。3中断管理配置1、定义结构体;2、填充结构体;3、装载结构体。4逻辑处理1、中断函数逻辑。按照代码思路,编写代码(通过调用官方库),对摇杆左按键配置外部中断的代码如下图所示:V145678910U1213M1516171819202322232425262728293031323334OZEXI