1、嵌入式系统设计(基于STM32F429)第 4 章课后题参考答案1. 尝试分析一下 STM32F4 系列微控制器从复位到main()启动过程。答:复位后。(1) 从存储空间 0x00000000 处去除栈顶指针到MSP。(2) 从存储空间 0x00000004 出读取复位终端服务程序入口地址到PC。(3) 执行 SystemInit 函数,初始化系统时钟和外部存储器接口。(4) 执行 main 函数,完成堆栈区域初始化。(5) 点转到 main()函数,执行应用程序(C 代码)2. 请写出复位异常向量、SVC 异常向量和 SysTick 向量地址。答:复位异常向量地址:0x00000004 S
2、VC 异常向量地址:0x0000002C SysTick 向量地址:0x0000003C3. 请写出启动文件中定义的 SysTick、外部中断 0 和 USART1 中断的中断服务函数名。答:SysTick 中断服务函数名:SysTick_Handler外部中断 0 中断服务函数名:EXTI0_IRQHandler USART1 中断的中断服务函数名:USART1_IRQHandler4. 请编写中断 EXTI0_IRQHandler 的中断服务程序,使用 C 程序实现,只需要空函数。答:void EXTI0_IRQHandler (void)5. 尝试说明在发生 EXTI0_IRQHandl
3、er 中断时,内核响应的过程。答:(1) 处理器在当前堆栈上把程序状态寄存器、程序计数寄存器、链接寄存器、R12、R3R0 八个寄存器自动依次入栈。(2) 读取向量表中的 EXTI0 服务程序入口地址(EXTI0_IRQHandler)。(3) 根据向量表更新程序计数寄存器的值(EXTI0 服务程序入口地址-PC)。(4) 加载新程序计数寄存器处的指令(步骤( 2)步骤(4)与步骤(1)同时进行)。(开始执行中断服务程序)(5) 更新链接寄存器为 EXC_RETURN(EXC_RETURN 表示退出异常后返回的模式及使用的堆栈)。6. 如何配置 1 s 的 SysTick 系统定时函数? 答:if (SysTick_Config(SystemCoreClock/1000000)/*SystemCoreClock/1000000 超出计数最大值时报错,程序陷入空循环*/ while (1);说明:SysTick_Config 函数在文件 core_cm4.h 中。