百问网七天物联网智能家居实战训练营DAy4-嵌入式STM32中断系统以及串口通信

一、中断系统

1、中断的定义

     正常情况下,微处理器根据代码内容,按顺序执行指令。执行过程中,如果遇到其它紧急的事件需要处 理,则先暂停当前任务,执行紧急事件,待紧急事件处理完后,再恢复到刚才暂停的地方继续执行。这个产 生的紧急事件就叫做中断或异常,如下图所示。

        

 2、中断的分类

首先区分一下中断和异常

通常把cpu内部产生的紧急事件称为异常如非法指令地址访问越界等,把来自cpu外部片上产生的紧急事件称为中断,二者达到的效果都是一致的,都是暂停当前任务执行紧急任务。

Cortex-M3内核有256种异常和中断,其中编号1~15是系统异常,16~256是外部中断,但是在STM32F103系列最多就只有七十个中断,其中前十个是异常后六十个是中断,而STM32F103C8T6就只有43个中断

上表 中,Reset(复位)、NMI(Non Maskable Interrupt,不可屏蔽中断)、HardFault(硬件异 常)的优先级是固定的,且优先级是负数,(优先级数字越小,优先级越高)。剩下的异常或 中断,都是可以通过修改NVIC的寄存器调整优先级(但不能设置为负数)。NVIC作为在内核里的外设,也 是通过存储器映射的方式访问。

Cortex-M3内核有256种异常和中断,其中编号1~15是系统异常,16~256是外部中断,在这么多中断中,如果同时发生两个中断,该先执行哪一个呢?如一个中 断发生了,又来了一个更紧急的中断,是该继续执行原来的中断?故引入中断控制器NVIC

3、NVIC

如此多的中断,导致了一些新问题。 针对这些问题,Cortex-M3内核有一个专门管理中断的外设NVIC(Nested Vectored Interrupt Controller, 嵌套向量中断控制器),通过优先级控制中断的嵌套和调度。NVIC是一个总的中断控制器,无论是来在内 核的异常还是外设的外部中断,都由NVIC统一进行管理。

在Cortex-M3中,将优先级拆分为抢占优先级(Preempt Priority)和子优先级(Subpriority),每个中断 都需要指定这两级,具有高优先级的中断可以打断低优先级的中断,实现中断嵌套。通过应用中断和复位控制寄存器(Application Interrupt and Reset Control Register,AIRCR)的Bits[10:8] (PRIGROUP)将优先级分组。分组决定每个可编程中断的PRI_n的Bits[7:0]的高低位分配,从而影响抢占优 先和子优先级的级数,两者关系如下表所示

 举个例子

 

 如上图所示,当中断1已经执行时,中断2产生了,由于中断2的抢优先级较高(数字越小中断优先级越高)故打断中断1,先执行中断2,中断2执行完事后再接着执行中断1;当中断1在执行,中断3产生了,虽然中断3的子优先级高于中断1的子优先级,但是子优先级不能中断嵌套且由于二者抢占优先级相同,故先执行完中断1后再执行中断3;当中断1在执行,中断4产生了,由于二者抢占优先级相同,故先执行完中断1后再执行中断3;

假设现在中断同时到来,当中断1和中断4同时到来,二者两个优先级都一样,故根据中断向量表执行,谁在前先执行谁。当中断1和中断3同时到来,由于二者抢占优先级一样,但是中断的子优先级较高,故先执行中断3.

 4、GPIO中断

不管是中断还是异常最后都是由NVIC控制,不过STM32芯片的GPIO支持中断模式和事件模式,所以在NVIC处理之前,得经过EXTI

STM32F103系列的EXTI支持19个外部中断/事件请求,每个中断/事件 都有独立的触发和屏蔽设置,支持中断模式和事件模式。

中断模式是指外部信号产生电平变化时,EXTI将该信号给NVIC处理,从而触发中断,执行中断服务函数,中断服务函数里写发生中断后,该做什么事,完成对应操作。 

事件模式是指外部信号产生电平变化时,EXTI根据配置,联动ADC或TIM执行相关操作。

EXTI的结构如下图所示,图中画斜线“/”的信号线表示这样的线共有19根。外部信号输入后,首 先经过边缘检测电路,可以实现对上升沿或下降沿信号进行检测,从而得到硬件触发,也可由软件中断事件 寄存器产生软件触发信号。无论是硬件触发还是软件触发,如果中断屏蔽寄存器允许,则产生中断给NVIC 处理(绿色路线);如果事件屏蔽寄存器允许,则产生事件,脉冲发生器产生脉冲供其它模块使用(黄色路 线)。

STM32F103C8T6有2组GPIO,每组16个引脚,即32个GPIO引脚,但EXTI只支持19个外部中断/事件请 求,因此需要将多个GPIO合成一组,共用一个中断线,STM32F103系列中断线分组如下表所示 

二、通信

通信可分为串行通信和并行通信

1、串行通信:数据一个一个传输,如下图所示,串行通信时一次只能发送一个数据,故当有八个数据时,需要传输八次。其优点是数据线少成本低,传输干扰低,缺点是通信速度慢。

2、并行通信,一次性传输多个数据,八个数据可以同时发送。优点是通信速度快,占用数据线多,成本高,数据之间受干扰大

 按数据传输方向可分为以下三种

1、全双工:通信双方的都可以进行发送和接受数据,而且数据可以同时发送和接收,一边发送的同时一边也可以接受

2、半双工:通信双方都有可以进行发送和接受数据,但是同一时间只能一方工作,处于单一发送模式或者单一接受模式

3、单工:通信双方一方为发送,一方为接收,而且不可逆,单向传输。

 

 按数据是否同步,可分为以下两种(有时钟信号为同步通信,无时钟信号则为异步通信)

1、同步通信

数据在双方之间传输时,需要制定规则保证数 据传输的准确。

同步通信的做法是加一个时钟信号,发送方和接收方在这个时钟的节拍下传输数据,比如常 见的SPI、I 2 C。

2、异步通信

异步通信的做法是对数据进行封装,在数据开头加上起始信号,在数据结尾加上终止信号, 双方就按这个规则传输数据,比如UART、1-Wire。

三、串口电平

为了适应不同的环境条件,会有着不同的串口电平标注,如上图中的TTL电平,一般32芯片和蓝牙模块相连时,就用TTL电平,如果二者相距较进就几厘米直接可以用杜邦线相连接,但如果相离太远,则适合在中间将TTL电平转换为RS232之类的电平进行传输,最后再转换为TTL电平输出就行

各类TTL电平特性如下图所示

 四、串口连接和时序

 

串口的用途有

1、连接各个串口接口模块 ,比如WIFI模块

两个设备连接方式如上图左侧,其中一个设备的发送引脚接到另一个设备的接受引脚。

2、作为调试口,打印程序的运行状态信息

3、通过电平转换芯片,将电平转换为RS232,RS485,用于复杂恶劣的工业环境

串口传输的格式

首先确定串口传输的波特率(每一秒传输的比特位)波特率越高,传输速度越快,反之越慢

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

myplybk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值