STM32::关于项目启动的一些问题

一、概述:

启动文件就做了如下的几个主要功能

复制代码
This module performs:
- Set the initial SP                    //设置初始化堆栈空间
- Set the initial PC == Reset_Handler   //设置PC指针
- Set the vector table entries with the exceptions ISR address              //设置中断向量表
    - Configure the clock system                                            //设置系统时钟
    - Branches to __main in the C library (which eventually calls main()).  //进入C语言 main()

详见:

单片机 STM32启动文件详解(汇编语言解析)_单片机启动文件_KaminLuo的博客-CSDN博客

STM32F4启动代码分析_mcd application team_JXDZ的博客-CSDN博客

二、几个重点与问题

重点一: 设置向量表

**当内核响应了一个发生的异常后,对应的异常服务程序就会被执行。**为了决定异常服务程序的入口地址,内核就会使用向量表的方式查询,就像一个指针数组,每个下标表示一个异常,里面的值就是程序地址。因为复位后,寄存器的值为0,所以在0x0000 0000需要一张向量表,决定程序下一步的跳转,所以该表映射在0x0000 0000地址上

疑问一:异常事件是如何对应到相应的中断处理函数的,即:找中断函数地址的下标是如何产生的?

中断事件与中断函数的对应关系是由硬件和软件共同决定的。

在硬件层面,微控制器的外设(如定时器、串口等)会生成特定的中断信号,这些中断信号将触发相应的中断事件。例如,当定时器溢出时,会触发定时器中断事件;当串口接收到数据时,会触发串口接收中断事件。(硬中断)

在软件层面,开发者需要配置中断控制器(例如 NVIC,Nested Vectored Interrupt Controller)来使得特定中断能够被正确触发,并指定相应的中断处理函数。(软中断)

一般来说,中断事件与中断函数对应的设置分为以下几个步骤

  1. 配置外设模块:设置外设模块的工作模式、中断使能等参数,以使其产生中断事件。
  2. 配置中断控制器:使用中断控制器相关的寄存器或者软件接口,设置中断优先级、使能特定的中断源等。
  3. 编写中断处理函数:在代码中编写中断处理函数,根据中断事件的类型执行相应的操作。将中断处理函数的地址与中断号绑定,通常通过向存储器向量表中写入中断处理函数的地址来实现。
  4. 启用全局中断使能:在合适的地方,打开全局中断使能的开关,使得中断能够正常响应。

需要注意的是,具体的设置方法和操作方式可能会因不同的硬件平台、编程语言或开发工具而有所差异。根据所用的硬件平台和开发工具的文档和示例程序,可以了解到具体的配置和设置方法。

相关推荐
智商偏低1 小时前
单片机之helloworld
单片机·嵌入式硬件
青牛科技-Allen2 小时前
GC3910S:一款高性能双通道直流电机驱动芯片
stm32·单片机·嵌入式硬件·机器人·医疗器械·水泵、
森焱森4 小时前
无人机三轴稳定控制(2)____根据目标俯仰角,实现俯仰稳定化控制,计算出升降舵输出
c语言·单片机·算法·架构·无人机
白鱼不小白4 小时前
stm32 USART串口协议与外设(程序)——江协教程踩坑经验分享
stm32·单片机·嵌入式硬件
S,D5 小时前
MCU引脚的漏电流、灌电流、拉电流区别是什么
驱动开发·stm32·单片机·嵌入式硬件·mcu·物联网·硬件工程
芯岭技术8 小时前
PY32F002A单片机 低成本控制器解决方案,提供多种封装
单片机·嵌入式硬件
youmdt8 小时前
Arduino IDE ESP8266连接0.96寸SSD1306 IIC单色屏显示北京时间
单片机·嵌入式硬件
嘿·嘘8 小时前
第七章 STM32内部FLASH读写
stm32·单片机·嵌入式硬件
Meraki.Zhang8 小时前
【STM32实践篇】:I2C驱动编写
stm32·单片机·iic·驱动·i2c
几个几个n11 小时前
STM32-第二节-GPIO输入(按键,传感器)
单片机·嵌入式硬件