程序调试及中断系统学习和应用

程序调试

1、串口调试

2、显示屏调试

3、软件调试(例如keildebug

------------------这是一条分割线---------------------

中断系统:

1、各种中断类型:定时中断、外部中断

2、中断优先级,区分各中断的紧急程度

3、嵌套中断:根据中断优先级程序执行逻辑

4NVIC:中断管理,外接各种中断引脚,管理中断的优先级,处理好顺序再输出给CPU。在优先级寄存器(4位,取值范围:0~15)中进行中断优先级的管理.

5、响应优先级:中断事件通过此级别进行排队,一般是由优先级寄存器的4-n位寄存器决定。在当多个响应中断外设申请中断时通过此优先级进行事件排队。

6、抢占优先级:如果正在执行的中断事件抢占等级低于正在排队的中断事件,则此事件暂停执行,执行抢占等级比较高的中断事件,执行完毕后再进行执行之前未完成的函数。一般是由优先级寄存器的高n位进行排序

EXTIExtern Interrupt外部中断)

原理:监测指定GPIO的电平信号,根据触发方式进行判断是否申请中断。

触发方式:上升沿触发、下降沿触发、双边沿触发(上升和下降都触发)、软件触发

支持触发方式:支持所有GPIO口配置此中断,但相同的pin口不能同时触发中断(例如PA0PB0)不同的pin口可以同时触发(例如PA0PB1PA1

触发响应方式:中断响应(触发中断,CPU处理)/事件响应(不进行中断触发,直接执行事件触发别的外设操作,不经过CPU处理)

AFIO(中断引脚选择):主要用于复用功能引脚重定义和中断引脚选择。一般最多只有16个通道通向EXIO标记端口号0~15,但每个GPIO组都有16个引脚,所以不同组的相同引脚号的引脚不能同时响应外部中断。

tipsST公司为了节省资源,EXTI通道9~5和通道15~10会分别执行两个同样的中断函数。

EXTI框图:

上面画的两个红色图是或门(左边框是弧形的)和与门(左边框是直线)

旋转编码器:机械式、霍尔传感器、光栅式。

光栅式旋转编码器有两个触点、一个旋转盘,当转动旋转盘时触点不连续的被连通,然后分别输出两个方波信号(正交波形),由于旋转盘的特殊设计会使两个方波信号有90°的相位差,用来区分正转和反转(例如A触点相位大于B触点相位则为反转,反之则为正转)

------------------这是一条分割线---------------------

使用外部中断:

1、配置外设的RCC(时钟),将涉及的外设时钟都打开。(只需要初始化AFIO和引脚组)EXTI自动打开状态、NVIC是内核控制

2、配置GPIO,输入模式

3、配置AFIO,选择端口

4、配置EXTI,选择触发方式和响应方式

5、配置NVIC,配置中断号和中断事件(触发外设事件)

配置AFIO步骤及关键函数:

GPIO_EventOutputConfig:不重要

GPIO_EvenOutputCmd:不重要

GPIO_PinRemapConfig:重定义引脚的映射功能。

GPIO_EXITLineConfig:AFIO配置外部中断,选择引脚

GPIO_MediaInterfaceConfig:

配置EXTI:

四个函数:

1、EXTI_DeInit:复位外部中的配置

2、EXIT_Init:初始化外部中断的引脚,配置触发模式(事件触发、中断触发)等

配置NVIC:

初始化NVIC选用的中断通道,配置优先级及抢占级等

实现中断函数:中断名称要从startup文件里去获取,名字不能出错。

注:每次中断结束后要将标志位清零,否则会一直执行此中断。

配置代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值