当MCU上电时,正常情况下需要经过一个比较复杂的过程,MCU需要进行初始化、设置寄存器、复位向量表等操作。具体过程如下:
首先,在上电之后,MCU内部的复位电路将会运行,可以保证MCU的内部状态都被清除。接着,MCU会根据其内部寄存器中的初始值来设置一些相关的状态寄存器,比如中断状态寄存器和时钟控制寄存器等。接下来,MCU会对外设进行初始化,比如模拟模块、定时器、串口等相关外设。最后,MCU会跳转到程序计数器对应的地址处,开始执行程序。
时钟在MCU中是非常重要的,因为MCU内部的所有操作都需要时钟的节拍来驱动。当MCU上电后,所有外设都不能正常工作,但是时钟还是要保持工作,否则就无法进行后续的初始化操作。因此,MCU需要先设置时钟,然后才能进行其他的操作。
时钟的设置过程通常需要设置多个时钟控制寄存器。具体而言,需要设置时钟源、时钟分频、时钟倍频等参数。在设置时钟的过程中,需要注意时钟的误差,以及时钟频率与程序执行速度之间的关系。
MCU的向量表是一个非常重要的数据结构,它存储了各种中断和异常的处理函数地址。在MCU上电之后,向量表需要被初始化,以便MCU能够正确地响应各种中断和异常。通常而言,向量表的初始值存储在MCU的非易失性存储器中,或者由编译器生成。
在初始化向量表时,需要保证中断和异常处理函数的地址正确。例如,中断处理函数的地址需要满足一定的对齐要求,否则会导致程序崩溃或者响应不及时。
MCU内部有很多外设,例如串口、定时器、ADC等等。在MCU上电初始化的过程中,也需要逐个对这些外设进行初始化。
在初始化外设时,需要设置各个寄存器的值,以满足具体要求。例如,在初始化定时器时,需要设置定时器的计数值、定时器的工作模式、是否自动重载等参数。