单片机复位启动和中断控制

异常和中断

  RAM的编程中,凡是打断程序顺序执行的事件,都称为异常。当指令执行了"非法操作",或者"访问了被禁用的内存空间",这些操作都会产生"fault",以及"不可屏蔽的中断发生的时候"都称之为"异常"
  “外部中断(IRQ)”:原本处于正常的状态,突然有个外部因素干扰,CPU就会停止当前正在做的事情,去处理干扰事件,解决后返回原来的正常状态。在中断产生的时候,一般是硬件触发了,然后去执行中断服务函数,实现特定的任务。
  无特殊说明,后面:异常就是中断,中断就是异常

函数

  在编译时,每一个函数都有一个入口地址,该地址就是函数名
  尽管函数不是变量,但它在内存中仍有其物理地址,该地址能够赋给指针变量
  函数名相当于一个指向其函数入口指针常量。函数名后面加圆括号,表示函数的调用。若想得到函数的地址,直接用函数名就行。
  函数名就是一个地址,是存放该函数代码在存储器空间上的起始地址。以一个子函数为例,编译器会分配一段内存空间用于存放改子函数代码内容,这段内存空间的起始地址是一个具体值,在程序里边就是函数名,当我们在程序其他位置调用该子函数时候,实际上就是让程序跳转到该函数名地址去运行子函数内容。

中断的处理

  永远处理优先级高的中断。例如A,B两个中断,A的优先级高于B的优先级。
  当A正在进行中断服务的时候,B发生了中断,这个时候,内核会先处理完A中断,在去处理B中断;
  当B正在进行中断服务的时候,这个时候A发生了中断"它会打断B正在执行的中断服务函数,执行A的中断服务函数,执行完成后"再返回B的中断服务函数,接着执行。
   这个就是中断优先级的作用

中断向量表

在这里插入图片描述
MSP 主堆栈指针。
  触发硬件中断,然后跳转到中断向量表上相应的存储器地址上(上面是中断服务函数名即中断服务函数的地址)“然后跳转到相应的中断服务函数中执行相应的程序”

开机复位

复位选择

  Cortex-M4内核从哪里复位是由BOOT0BOOT1这两个引进决定的。
在这里插入图片描述

低电平复位

在这里插入图片描述
在这里插入图片描述

  电容在上电的瞬间因为由电流所以电容是短路的状态由上图看出电容的电压不会发生突变,因此上电的瞬间,电容短路接地,单片机开始复位,然后3.3V的电源开始给电容冲电,冲满后,电容没有电流通过,断开。REST引脚变成高电平,复位完成单片机正常工作。
  STM32单片机低电平复位,高点平正常工作

高电平复位

在这里插入图片描述

  上电的瞬间,电容短路,接到3.3V的电平,51单片机开始复位,然后接通到地,电容进行放电,最后变成低电平,单片机正常工作。

MSP(主堆栈指针)初始值和复位向量

  1. 单片机,每次复位都是从存储器地址0x00000000取出MSP的值,这个值是堆栈指针,指向栈空间的栈顶,用于存储局部变量在这里插入图片描述
    在这里插入图片描述

   三块可以启动存储器的物理地址
    片上SRAM0x2000,0000
    片上用户闪存地址0x0800,0000我们常用的启动地址
    片上系统闪存(BootLoader)启动地址0x1FFF,0000
2. 从存储器地址0x00000004存储的是上面三块启动存储器的一个地址复位向量(程序开始执行的地址),复位函数在启动文件中Reset_Handler函数。
在这里插入图片描述
  通过引脚的选择,0x0800,0000Flash上的空间的内存全部映射到了,复位函数的空间地址上了,两个flash空间的内容是完全相同的。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值