STM8启动流程详解:从 bootloader 到中断向量和main函数

需积分: 9 3 下载量 65 浏览量 更新于2024-09-14 1 收藏 88KB DOC 举报
STM8启动流程是一个关键的过程,对于理解和开发基于STM8微控制器的项目至关重要。STM8是一款低功耗、精简的8位微控制器,其启动流程涉及多个步骤和特定的内存区域。以下是对STM8启动流程的详细解析: 1. **Bootloader启动**: STM8的启动始于ROM中的bootloader,它位于0x6000地址处。bootloader负责加载预编程的固件到微控制器的内部Flash存储器。 2. **从0x8000地址转移**: 一旦bootloader完成其任务,程序会从0x8000地址(内部Flash的起始地址)开始执行,这个地址之后的区域是用户可编程的软件部分。这是软件设计者可以控制和自定义代码的起点。 3. **中断向量表**: 0x8000地址处存放了中断向量表,其中包含了各个中断处理函数的地址。当STM8遇到中断时,程序会自动跳转到相应中断向量地址对应的函数执行。例如,'0x82'是内部中断指令,处理STM8的复位中断。 4. **复位中断与main函数**: STM8的复位中断是启动过程的关键,它定义在`stm8_interrupt_vector.c`文件中,如 `(void@near(*)())0x8200, _stext, /* RESET */`。复位后,程序会首先调用`_stext`函数,这个函数通常就是`main()`函数的入口点,标志着应用程序的正式开始。 5. **中断处理函数**: 向量表中还包括其他中断处理函数,如`TRAP_IRQHandler`(陷阱中断)、`TLI_IRQHandler`(外部顶层中断)、`AWU_IRQHandler`(自动唤醒中断)等,它们分别处理不同的硬件事件。这些函数都在`0x8200`地址之后。 6. **外部中断**: EXTI(外部中断控制器)用于处理来自GPIO引脚的外部信号,如EXTI_PORTA_IRQHandler和EXTI_PORTB_IRQHandler分别对应GPIOA和GPIOB的中断。 总结来说,STM8启动流程包括bootloader引导、内存地址转移、中断向量表的使用以及一系列中断处理函数的执行。理解这些步骤有助于开发者编写高效、稳定的STM8应用,并且熟悉中断处理机制对于正确配置和利用STM8的输入/输出功能至关重要。