STM32F10x的系统初始化 SystemInit()

这篇博客详细介绍了STM32F10x在无操作系统环境下上电后的系统初始化过程,主要涉及SystemInit()函数的实现。通过解析官方提供的代码,阐述了如何设置内部8MHz RC振荡器、时钟分频系数以及清除相关中断标志,为后续的系统时钟配置做准备。
摘要由CSDN通过智能技术生成

对于无操作系统的软件来说,STM32上电后的第一件事,就是系统初始化。

Libaries\CMSIS_MDK\CM3\DeviceSupport\ST\STM32F10x\system_stm32f10x.c 中,官方给出了系统初始化函数 SystemInit(),我添加了一些中文注释,便于学习、模仿。

/**
  * @brief  Setup the microcontroller system
  *         Initialize the Embedded Flash Interface, the PLL and update the 
  *         SystemCoreClock variable.
  * @note   This function should be used only after reset.
  * @param  None
  * @retval None
  */
void SystemInit (void)
{

  /* Reset the RCC clock configuration to the default reset state(for debug purpose) */
  /* Set HSION bit */
  
  RCC->CR |= (uint32_t)0x00000001;    // 打开内部的 8MHz RC 振荡器, 使能内部高速时钟(HSI)

  /* Reset SW, HPRE, PPRE1, PPRE2, ADCPRE and MCO bits */
#ifndef STM32F10X_CL
  RCC->CFGR &= (uint32_t)0xF8FF0000;
#else
    // MCO         = 000:     MCO 引脚设置成

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: startup_stm32f10x_ld.s是一个汇编语言文件,用于启动STMicroelectronics的STM32F10x微控制器系列中的LD型号。它是一个片上系统(SoC)启动文件,具有以下几个主要功能: 1. 初始化向量表:在启动过程中,处理器将从向量表中获取初始中断服务程序的地址。startup_stm32f10x_ld.s文件包含了该向量表的初始化,通过设置每个中断向量的地址,确保正确的中断服务程序能够在中断发生时执行。 2. 复位处理:当微控制器上电或复位时,startup_stm32f10x_ld.s文件执行一些必要的初始化操作。这包括将堆栈指针设置为正确的值,初始化BSS段中的全局变量为零,以及调用C库的初始化函数。 3. 跳转到主程序:在完成所有必要的初始化后,startup_stm32f10x_ld.s文件将跳转到主程序的入口点。主程序可以是C代码,也可以是汇编语言代码。 此外,startup_stm32f10x_ld.s文件还包含其他一些处理器和外设的特定配置设置,比如时钟设置和中断优先级设置。这些设置将确保在启动和运行期间系统正常工作。 总之,startup_stm32f10x_ld.s文件是STM32F10x微控制器LD型号启动过程中的关键文件,它负责初始化向量表、处理复位和跳转到主程序。 ### 回答2: startup_stm32f10x_ld.s是一个汇编语言文件,用于启动STM32F10x系列微控制器。在嵌入式开发中,启动文件是一个必要的组件,它包含了一些特定的指令和配置,用于初始化微控制器的各个部分。 startup_stm32f10x_ld.s文件首先定义了一些符号常量,如堆栈大小、向量表起始地址等。然后,它定义了一个叫reset的函数,这个函数是微控制器上电复位后第一个执行的代码。 在reset函数中,startup_stm32f10x_ld.s文件会执行一系列的初始化操作。首先,它会将寄存器设置为默认值,例如将控制寄存器设置为默认状态、禁用中断等。接着,它会初始化中断向量表,将内核中断向量和外设中断向量连接到相应的中断服务函数。 之后,startup_stm32f10x_ld.s文件会初始化存储器。它会将存储器保护设置为默认状态、配置堆栈指针、初始化静态存储器和堆栈。接着,它会执行一段汇编指令,用于调用主函数。 startup_stm32f10x_ld.s文件的最后一部分是一些中断处理函数。中断处理函数用于处理微控制器发生的各种中断,如时钟中断、串口中断等。这些函数会在相应的中断发生时被自动调用,执行相应的中断处理代码。 总之,startup_stm32f10x_ld.s文件是一个重要的启动文件,它通过初始化和配置微控制器的各个部分,为程序的正常运行提供了基础。 ### 回答3: startup_stm32f10x_ld.s文件是STM32F10x系列芯片的启动文件,它在系统上电或复位后被系统加载执行,用于初始化硬件、配置中断向量表和启动主函数。 该文件的主要功能包括以下几个方面: 1. 系统初始化:定义了一些默认的寄存器值,例如将堆栈指针(SP)指向指定的栈顶,并设置处理器工作模式为特权模式。此外,还会调用SystemInit函数,用于初始化系统时钟。 2. 中断向量表配置:定义了所有可能的中断向量,包括硬件中断和软件中断。对于每个中断向量,都指定了相应的中断处理函数的地址,并在启动文件中进行了配置。 3. 异常处理程序:定义了一些异常处理程序,如复位异常、NMI非屏蔽中断异常、硬件错误异常、硬件中断异常等。这些异常处理程序用于异常情况下的处理,例如重启系统、处理硬件错误等。 4. 主函数入口:定义了Reset_Handler函数作为主函数入口点。当系统上电或复位后,将首先执行Reset_Handler函数。在该函数中,会进行一些必要的初始化操作,然后调用main函数启动用户应用程序的执行。 总的来说,startup_stm32f10x_ld.s文件是STM32F10x系列芯片的启动文件,负责初始化系统硬件和中断向量表配置,并提供主函数入口点。它为系统启动提供了必要的支持和准备工作。用户可以根据自己的需求对该文件进行定制和修改,以满足特定应用的需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值