<!-- 本文件由脚本自动转换生成，请勿手动编辑 -->

> **《LKS32MC45x User Manual》系统时钟复位** . 完整目录见 [README.md](README.md)
>
> **声明**：本文档由芯片用户手册自动转换生成，仅供检索与查阅参考。Markdown 格式可被自由编译、修改，本文档不构成正式技术文件，相关内容以凌鸥创芯官方网站正式发布的手册为准。
>
> 南京凌鸥创芯电子有限公司 . (C) 2020, 版权归凌鸥创芯所有 . 机密文件，未经许可不得扩散

# 系统时钟复位

## 时钟

### 时钟源

如下表所示，系统包括5个时钟源。其中内部低速RC振荡时钟LSI/内部高速RC振荡时钟HSI不会停振。

表6-1系统时钟源

||||||
|---|---|---|---|---|
|时钟源|频率|来源|误差|说明|
|LSI|32KHz|内部RC振荡器|全温度范围误差\<50%|内部系统管理时钟，用于WDT，复位信号的滤波和展宽|
|HSI|12MHz|内部RC振荡器|全温度范围误差\<1%|可作为PLL源时钟|
|PLL|192MHz|PLL时钟|0|PLL输出时钟，以HSI作为参考时钟输入，倍频16倍后输出PLL时钟作为系统主时钟。|
|JTAG/SWD|取决于设置|调试器||JTAG/SWD时钟|
|XTAL|10~24MHz|晶体||外挂晶体|

SWD时钟速率与上位机或下载器设置有关。

系统可以使用内部高速RC时钟HSI作为PLL的参考时钟。PLL将12MHz的参考时钟HSI倍频16倍至192MHz。

PLL经过n/8分频后，可以得到192MHz×n/8的高速时钟，SYS_CLK_CFG.CLK_SEL在此分频后的高速时钟与12MHz的HSI之间进行二选一，作为系统主时钟MCLK。系统复位时，PLL默认关闭，HSI默认开启，系统选择HSI时钟，即12MHz作为系统主时钟进行工作，从而保证系统上电之初功耗处于较低水平。

MCLK是系统主时钟。可以通过SYS_CLK_CFG寄存器CLK_DIV位域控制进行n/8分频，可以产生24,
48, 96MHz等频率值。SYS_CLK_CFG.CLK_SEL表示选择PLL或12MHz
RC时钟作为系统主时钟。SYS_CLK_CFG.CLK_DIV作为PLL的分频系数。当SYS_CLK_CFG.CLK_SEL不为1
时，即系统时钟HIS/HSE或LSI作为系统工作时钟，此时SYS_CLK_CFG.CLK_DIV不再起分频作用。

表6-2
PLL作为MCLK时钟时的分频配置

|||||
|---|---|---|---|
|SYS_CLK_CFG|分频系数|频率/MHz|是否均匀|
|0x0101|1/8|24|是|
|0x0111|2/8|48|是|
|0x0155|4/8|96|是|
|0x01FF|8/8|192|是|

系统高速时钟MCLK经过SYS_CLK_FEN寄存器控制的开关之后供给外设。I2C0/1时钟由SYS_CLK_DIV0寄存器控制可以进一步分频，UART0/1/2时钟由SYS_CLK_DIV2寄存器控制可以进一步分频。

PLL输出的时钟经过SYS_AFE_REG3.ADCCLKSEL控制的2/4/8分频后送至ADC（典型工作频率96MHz），即ACLK。

内部32kHz
RC产生一路LSI时钟LCLK，主要用于WDT工作时钟，以及部分系统控制，复位的滤波展宽等。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图6-1时钟架构

为了保证系统可靠工作，时钟系统有防止时钟被误操作关闭的机制。如当PLL被用作系统工作主时钟时，PLL本身无法被关闭，作为PLL参考时钟的HSI无法被软件关闭；32kHz
LSI时钟上电即工作，且无法关闭。SWCLK由调试器提供，时钟频率取决于上位机调试界面的设定。

为便于调试和出厂校正，高速RC时钟HSI和低速时钟LSI可以通过配置GPIO的第二功能通过芯片管脚输出观测。

## 复位

### 复位源

芯片的复位包括硬件复位与软件复位。

#### 硬件复位

如表6-3所示，系统包括4个硬件复位源，产生的复位均为芯片全局复位，复位产生后芯片程序计数器回到0地址，所有寄存器恢复到默认值。4个硬件复位均为低电平有效。

表6-3系统复位源

||||
|---|---|---|
|名称|来源|说明|
|LPORn|内部1.2V电源管理|监控1.2V数字电源，低于0.9V时产生复位|
|HPORn|内部3.3V电源管理|监控3.3V电源，低于1.8V时产生复位|
|RSTn|外部按键|外部RC组成按键复位电路|
|IWDTn|独立看门狗|使用LSI时钟进行计数，如果不进行喂狗则定时产生复位，复位间隔可配置|
|WWDTn|窗口看门狗|使用系统高速时钟进行计数，如果不进行喂狗则定时产生复位，复位间隔可配置|

##### 硬件复位架构

LPORn/HPORn来自内部模拟电路，
RSTn来自外部按键。IWDTn为独立看门狗复位，使用32kHz
LSI时钟，芯片上电后默认开启，即使在晶振停振或PLL未工作时IWDTn也可以产生复位信号。WWDTn为窗口看门狗复位信号，使用系统高速时钟进行计数，通常为PLL主时钟，主要用于对复位时间间隔有精确要求的应用场景。IWDTn和WWDTn信号在调试模式下可以被禁用，通过SYS_DBG_CFG进行设置。

所有复位信号经过滤波展宽预处理后，形成一个全局复位信号，对全芯片进行复位。FLASH不受复位信号的影响。但是RAM在LPORn/HPORn复位信号产生时会丢失存储的数据，其他复位信号对RAM不会产生影响。

P0.6引脚宽度小于32us的复位脉冲会被滤除，要求可靠复位宽度大于200us。

【图片已删除】为控制知识库体积，本文档不携带图片，相关图示请查阅凌鸥创芯官网发布的正式手册。

图6-2复位架构

##### 硬件复位记录

在PMU功耗管理模块中，AON_EVT_RCD寄存器用于保存包括硬件复位在内的各种事件记录，当某个硬件复位发生后，AON_EVT_RCD对应位置位。AON_EVT_RCD寄存器本身只能被LPORn复位信号复位，通过向AON_EVT_RCD寄存器写入0xCA40可以清空AON_EVT_RCD记录，复位记录可以方便地了解是否发生以及发生过何种复位。

#### 软件复位

CPU的软复位操作可以使程序计数器(PC: Program
Counter)回到0地址，但对所有外设中的寄存器没有影响。

在集成开发环境(IDE: Integrated Development
Environment)中的调试模式下，点击Reset【图片已删除】与CPU软复位操作作用相同，仅仅使得PC回到0地址，对外设中的寄存器没有影响。但如果在bootloader中进行了外设模块的软复位，则会使得外设寄存器被复位为默认值。具体bootloader实现请咨询芯片供应商。

部分外设模块有模块级软复位，可以使用SYS_SFT_RST寄存器进行复位，写入对应的位，可以将模块状态机恢复到初始状态，同时将模块的寄存器恢复到默认值，详见6.3.9。

### 复位作用域

表6-4复位作用域

|||
|---|---|
|复位源|作用域|
|LPORn|内部1.5V电源管理，全局复位|
|HPOR|内部3.3V电源管理，全局复位，除极少数寄存器|
|RSTn|外部按键，全局复位，除极少数寄存器|
|IWDTn|独立看门狗，全局复位，除独立看门狗模块和极少数寄存器|
|WWDTn|窗口看门狗，全局复位，除独立看门狗模块和极少数寄存器|
|SYS_SFT_RST.SPI1\_ SFT_RST|SPI1|
|SYS_SFT_RST.SPI0\_ SFT_RST|SPI0|
|SYS_SFT_RST.CAN\_ SFT_RST|CAN|
|SYS_SFT_RST.ADC2\_ SFT_RST|ADC2数字接口模块|
|SYS_SFT_RST.ADC1\_ SFT_RST|ADC1数字接口模块|
|SYS_SFT_RST.ADC0\_ SFT_RST|ADC0数字接口模块|
|SYS_SFT_RST.CORDIC\_ SFT_RST|CORDIC|
|SYS_SFT_RST.CRC\_ SFT_RST|CRC|
|SYS_SFT_RST.GPIO\_ SFT_RST|GPIO|
|SYS_SFT_RST.QEP3_SFT_RST|QEP3|
|SYS_SFT_RST.QEP2_SFT_RST|QEP2|
|SYS_SFT_RST.QEP1_SFT_RST|QEP1|
|SYS_SFT_RST.QEP0_SFT_RST|QEP0|
|SYS_SFT_RST.TIMER4\_ SFT_RST|TIMER4|
|SYS_SFT_RST.TIMER3\_ SFT_RST|TIMER3|
|SYS_SFT_RST.TIMER2\_ SFT_RST|TIMER2|
|SYS_SFT_RST.TIMER1\_ SFT_RST|TIMER1|
|SYS_SFT_RST.TIMER0\_ SFT_RST|TIMER0|
|SYS_SFT_RST.MCPWM1\_ SFT_RST|MCPWM1|
|SYS_SFT_RST.MCPWM0\_ SFT_RST|MCPWM0|
|SYS_SFT_RST.CMP\_ SFT_RST|比较器数字接口模块|
|SYS_SFT_RST.UART2\_ SFT_RST|UART2|
|SYS_SFT_RST.UART1_SFT_RST|UART1|
|SYS_SFT_RST.UART0_SFT_RST|UART0|
|SYS_SFT_RST.HALL1_SFT_RST|HALL1|
|SYS_SFT_RST.HALL0_SFT_RST|HALL0|
|SYS_SFT_RST.I2C1_SFT_RST|I2C1|
|SYS_SFT_RST.I2C0_SFT_RST|I2C0|
|NVIC_SystemReset();|CPU软复位，仅复位CPU内核，将PC重置为0，所有外设寄存器值仍然维持。|

其中用于控制P0\[6\]作为GPIO使用还是作为外部复位脚使用的SYS_IO_CFG.RST_IO，以及复位记录寄存器AON_EVT_RCD只受LPOR复位。

全局复位会复位全芯片寄存器，包括CPU内核寄存器以及所有外设寄存器，除上述极少数寄存器。

由于CPU软复位仅仅复位CPU内核，而不复位外设寄存器，因此建议重新烧录程序后使用掉电重新上电或外部复位的方式重置外设寄存器。

Flash存储内容，SRAM存储内容不受复位影响。

## 寄存器

### 地址分配

系统模块寄存器基地址为0x40019800。

表6-5系统控制寄存器

||||
|---|---|---|
|名称|偏移|说明|
|SYS_CLK_CFG|0x80|时钟控制寄存器|
|SYS_IO_CFG|0x84|IO控制寄存器|
|SYS_DBG_CFG|0x88|Debug控制寄存器|
|SYS_CLK_DIV0|0x90|外设时钟分频寄存器0|
|SYS_CLK_DIV1|0x94|外设时钟分频寄存器1|
|SYS_CLK_DIV2|0x98|外设时钟分频寄存器2|
|SYS_CLK_FEN|0x9C|外设时钟门控寄存器|
|SYS_SFT_RST|0xA4|软复位寄存器|
|SYS_PROTECT|0xA8|写保护寄存器|
|SYS_CACHE_CFG|0xAC|Cache控制寄存器|
|SYS_MEM_CFG|0xC4|Memory控制寄存器|
|SYS_FLSE|0xD0|On-Chip FLASH擦除控制寄存器|
|SYS\_ FLSP|0xD4|On-Chip FLASH编程控制寄存器|

### SYS_CLK_CFG 时钟控制寄存器

地址：0x4001_9880

复位值：0x0

表6-6时钟控制寄存器SYS_CLK_CFG

|||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13||12||11||10|9|8|7||6|5|4|3|2|1|0|
||||XTAL_FAILED||XTAL_FAIL||||CLK_SEL|||CLK_DIV||||||||
||||RW1C||RO||||RW|||RW||||||||
||||1||0||||0|||0||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:14\]||未使用|
|\[13\]|HSE_FAILED|晶振时钟在被开启后是否停振过如果晶振有停振情况，则该位置位，即使晶体后续恢复振荡，仍保持记录为1。写1清零|
|\[12\]|HSE_FAIL|晶振时钟当前是否已经停振0：外部晶体当前正常工作1：外部晶体当前已经停振|
|\[11:10\]||未使用|
|\[9:8\]|CLK_SEL|系统时钟MCLK的来源选择信号。默认选择HRC0: HRC1: PLL2: LRC3: XTAL注意，PLL/XTAL在上电后默认关闭，需要软件来开启。|
|\[7:0\]|CLK_DIV|PLL输出分频控制，默认为0x00: 1/8分频0x01: 1/8分频0x11: 1/4分频0x55: 1/2分频0xFF: 1/1分频不推荐其它配置值。|

当CLK_SEL = 0时，MCLK选择CLK_HS
时钟，此时SYS_CLK_CFG\[7:0\]的分频系数无效。最终输出的系统时钟频率即为CLK_HS时钟频率。根据SYS_AFE_REGB.PLLSR_SEL，当SYS_AFE_REGB.PLLSR_SEL=0时，CLK_HS为芯片内部12MHz
RCH时钟HSI，当SYS_AFE_REGB.PLLSR_SEL=1时，CLK_HS为晶体时钟。

### SYS_IO_CFG IO 控制寄存器

地址：0x4001_9884

复位值：0x0001

表6-7 IO控制寄存器SYS_IO_CFG

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||||TRACEMUX|SWDMUX|RST_IO||||IO_DS||
|||||||||RW|RW|RW||||RW||
|||||||||0|0|0||||1||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:8\]||未使用|
|\[7\]|TRACEMUX|TRACE复用控制信号，默认配置为TRACE功能0: P1\[3:0\]，P0\[15:14\]作为正常GPIO使用1: P1\[3\]复用SWV，{P0\[15\],P1\[0:2\]}复用为TRACEDATA\[3:0\]，P0\[14\]复用为TRACECLK|
|\[6\]|SWDMUX|JTAG/SWD复用控制信号，默认配置为JTAG/SWD0: IO功能为JTAG/SWDP0.9---\>nTRSTP0.10---\>SWDIOTMSP0.11 ---\>TDIP0.12---\>SWCLKTCLKP0.13---\>TDO1:P0\[13:9\]作为正常GPIO使用|
|\[5\]|RST_IO|RSTn/P0.6复用控制信号，默认配置为RSTn0:RSTn1:P0.6注意，上电后默认是RSTn，后续软件可使能此位，RSTn功能失效|
|\[4\]|POR_FIL|未对用户开放此寄存器使用SYS_AFE_REG6\[11\]作为复位，所以需要先配置SYS_AFE_REG6\[11\]=1，然后才可以使能POR滤波，POR滤波对LPOR和HPOR均有效|
|\[3:2\]||未使用|
|\[1:0\]|IO_DS|IO驱动能力选择0: 4.5mA1: 9mA2: 13.5mA3: 18mA上电默认驱动能力为13.5mA|

为了安全起见，上电后16ms内，SWD的IO不能切换为GPIO功能，只能作为SWD使用。即使软件改写了SYS_IO_CFG
\[6\]将不起作用，需要在16ms之后再次对SYS_IO_CFG
\[6\]改写。现象为：在16ms内，软件可以向SYS_IO_CFG\[6\]
1’b1，但读回该bit仍为1’b0，如果经过16ms后再次写入1’b1，则可读回1’b1。即在上电后的16ms内，软件SYS_IO_CFG\[6\]写入1’b1无效，上电16ms后，软件对SYS_IO_CFG\[6\]写入1’b1才有效。这是为了防止应用上上电即切换SWD功能为GPIO，导致芯片后续无法通过SWD进行擦写烧录flash。

注意，SWD/Jtag
IO切换为GPIO功能后，除非应用软件特殊设计，否则只能使用原厂下载器擦除下载程序。

### SYS_DBG_CFG Debug 控制寄存器

地址：0x4001_9888

复位值：0x0

表6-8 Debug控制寄存器SYS_DBG_CFG

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|SW_IRQ_TRIG||||||||||||||||
|W||||||||||||||||
|0||||||||||||||||
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|SW_IRQ|SFT_RST_PERI||DBG_TIM4_STOP|DBG_TIM3_STOP|DBG_TIM2_STOP|DBG_TIM1_STOP|DBG_TIM0_STOP|||DBG_IWDG_STOP|DBG_WWDG_STOP||DBG_STDBY|DBG_STOP|DBG_SLP|
|RW1C|RW||RW|RW|RW|RW|RW|||RW|RW||RW|RW|RW|
|0|0||0|0|0|0|0|||0|0||0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:16\]|SW_IRQ_TRIG|向此位段写入0x5AA5 触发软件中断，SW_IRQ置1|
|\[15\]|SW_IRQ|软件中断标志，对应中断号30，写1清零。|
|\[14\]|SFT_RST_PERI|Debug软复位是否复位除Flash/SYS_AFE以外的外设寄存器|
|\[13\]||未使用|
|\[12\]|DBG_TIM4_STOP|调试模式下CPU halt状态Timer4停止1：Timer4在CPU halt状态时停止计数0：Timer4在CPU halt状态时继续计数|
|\[11\]|DBG_TIM3_STOP|调试模式下CPU halt状态Timer3停止1：Timer3在CPU halt状态时停止计数0：Timer3在CPU halt状态时继续计数|
|\[10\]|DBG_TIM2_STOP|调试模式下CPU halt状态Timer2停止1：Timer2在CPU halt状态时停止计数0：Timer2在CPU halt状态时继续计数|
|\[9\]|DBG_TIM1_STOP|调试模式下CPU halt状态Timer1停止1：Timer1在CPU halt状态时停止计数0：Timer1在CPU halt状态时继续计数|
|\[8\]|DBG_TIM0_STOP|调试模式下CPU halt状态Timer0停止1：Timer0在CPU halt状态时停止计数0：Timer0在CPU halt状态时继续计数|
|\[7:6\]||未使用|
|\[5\]|DBG_IWDG_STOP|调试模式下CPU halt状态独立看门狗停止1：独立看门狗在CPU halt状态时停止计数0：独立看门狗在CPU halt状态时继续计数|
|\[4\]|DBG_WWDG_STOP|调试模式下CPU halt状态窗口看门狗停止1：窗口看门狗在CPU halt状态时停止计数0：窗口看门狗在CPU halt状态时继续计数|
|\[3\]||未使用|
|\[2\]|DBG_STDBY|调试StandBy模式0: (FCLK=Off, HCLK=Off) 整个数字电路进入关电状态（除PMU）。从软件角度看，退出Standby休眠与上电复位相同，只是AON_EVT_RCD会指示休眠唤醒等状态位1: (FCLK=On, HCLK=On) 如果设置了DBG_STDBY=1，数字部分不会掉电，而且内部高速均不关闭。但PMU仍会在退出休眠时产生复位信号，重新开始取指执行。使得执行过程与不设置DBG_STDBY时相同|
|\[1\]|DBG_STOP|调试STOP模式0: (FCLK=Off, HCLK=Off) 在STOP模式下，时钟管理模块关闭HCLK和FCLK，即处理器时钟和所有外设时钟。当退出STOP模式时，时钟管理模块不经历复位，并保持原有配置，可以恢复到STOP模式前的时钟设置。在STOP模式中，所有外设寄存器均保持，因此退出后无需重新配置。1: (FCLK=On, HCLK=On) 如果设置DBG_STOP为1，进入STOP模式后HCLK和FCLK均不被关闭。|
|\[0\]|DBG_SLP|调试睡眠模式0: (FCLK=On, HCLK=Off) 在睡眠模式中，FCLK作为所有外设时钟，不关闭； HCLK作为CPU时钟，被关闭。在睡眠模式中，只有CPU时钟被暂时挂起，而所有外设包括系统时钟管理模块均保持原有配置状态。因此退出睡眠模式时，软件无需重新配置外设寄存器。1: (FCLK=On, HCLK=On) 如果配置DBG_SLP为1，则当进入睡眠模式时，HCLK不会关闭。通过\_\_WFI()/\_\_\_WFE()指令可以令处理器进入睡眠模式|

### SYS_CLK_DIV0 外设时钟分频寄存器0

地址：0x4001_9890

复位值：0x0

表6-9 SYS_CLK_DIV0外设时钟分频寄存器0

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|DIV0||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:16\]||未使用|
|\[15:0\]|DIV0|I2C0/I2C1工作时钟=MCLK/(CLK_DIV0+1)。其中MCLK由SYS_CLK_CFG分频系数决定|

### SYS_CLK_DIV1 外设时钟分频寄存器1

地址：0x4001_9894

复位值：0x0

表6-10 SYS_CLK_DIV1外设时钟分频寄存器1

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|DIV0||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:16\]||未使用|
|\[15:0\]|DIV1|CAN工作时钟=MCLK/(CLK_DIV1+1)。其中MCLK由SYS_CLK_CFG分频系数决定|

### SYS_CLK_DIV2 外设时钟分频寄存器2

地址：0x4000_0098

复位值：0x0

表6-11 SYS_CLK_DIV2外设时钟分频寄存器2

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|DIV2||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:16\]||未使用|
|\[15:0\]|DIV2|UART工作时钟=MCLK/(CLK_DIV2+1)。UART0/UART1/UART2共享此分频配置，波特率根据UART波特率寄存器进一步分频，其中MCLK由SYS_CLK_CFG分频系数决定。|

### SYS_CLK_FEN 外设时钟门控寄存器

地址：0x4001_989C

复位值：0x0

表6-12 SYS_CLK_FEN外设时钟门控寄存器

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|SPI1_CLK_EN|SPI0_CLK_EN|CAN_CLK_EN|ADC2_CLK_EN|ADC1_CLK_EN|ADC0_CLK_EN|FMAC_CLK_EN|CORDIC_CLK_EN|CRC_CLK_EN|GPIO_CLK_EN||QEP3_CLK_EN|QEP2_CLK_EN|QEP1_CLK_EN|QEP0_CLK_EN|TIMER4_CLK_EN|
|RW|RW|RW|RW|RW|RW|RW|RW|RW|RW||RW|RW|RW|RW|RW|
|0|0|0|0|0|0|0|0|0|0||0|0|0|0|0|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|TIMER3_CLK_EN|TIMER2_CLK_EN|TIMER1_CLK_EN|TIMER0_CLK_EN||MCPWM1_CLK_EN|MCPWM0_CLK_EN|CMP_CLK_EN||UART2_CLK_EN|UART1_CLK_EN|UART0_CLK_EN|HALL1_CLK_EN|HALL0_CLK_EN|I2C1_CLK_EN|I2C0_CLK_EN|
|RW|RW|RW|RW||RW|RW|RW||RW|RW|RW|RW|RW|RW|RW|
|0|0|0|0||0|0|0||0|0|0|0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31\]|SPI1_CLK_EN|SPI1模块时钟控制信号，默认关闭SPI0模块时钟1:使能SPI0模块时钟0:关闭SPI0模块时钟|
|\[30\]|SPI0_CLK_EN|SPI0模块时钟控制信号，默认关闭SPI0模块时钟1:使能SPI0模块时钟0:关闭SPI0模块时钟|
|\[29\]|CAN_CLK_EN|CAN模块时钟控制信号，默认关闭CAN模块时钟1:使能CAN模块时钟0:关闭CAN模块时钟|
|\[28\]|ADC2_CLK_EN|ADC2模块时钟控制信号，默认关闭ADC2模块时钟1:使能ADC2模块时钟0:关闭ADC2模块时钟|
|\[27\]|ADC1_CLK_EN|ADC1模块时钟控制信号，默认关闭ADC1模块时钟1:使能ADC1模块时钟0:关闭ADC1模块时钟|
|\[26\]|ADC0_CLK_EN|ADC0模块时钟控制信号，默认关闭ADC0模块时钟1:使能ADC0模块时钟0:关闭ADC0模块时钟|
|\[25\]||未使用|
|\[24\]|CORDIC_CLK_EN|CORDIC模块时钟控制信号，默认关闭CORDIC模块时钟1:使能CORDIC模块时钟0:关闭CORDIC模块时钟|
|\[23\]|CRC_CLK_EN|CRC模块时钟控制信号，默认关闭CRC模块时钟1:使能CRC模块时钟0:关闭CRC模块时钟|
|\[22\]|GPIO_CLK_EN|GPIO模块时钟控制信号，默认关闭GPIO模块时钟1:使能GPIO模块时钟0:关闭GPIO模块时钟|
|\[21\]||未使用|
|\[20\]|QEP3_CLK_EN|QEP3模块时钟控制信号，默认关闭QEP3模块时钟1:使能QEP3模块时钟0:关闭QEP3模块时钟|
|\[19\]|QEP2_CLK_EN|QEP2模块时钟控制信号，默认关闭QEP2模块时钟1:使能QEP2模块时钟0:关闭QEP2模块时钟|
|\[18\]|QEP1_CLK_EN|QEP1模块时钟控制信号，默认关闭QEP1模块时钟1:使能QEP1模块时钟0:关闭QEP1模块时钟|
|\[17\]|QEP0_CLK_EN|QEP0模块时钟控制信号，默认关闭QEP0模块时钟1:使能QEP0模块时钟0:关闭QEP0模块时钟|
|\[16\]|TIMER4_CKL_EN|TIMER4模块时钟控制信号，默认关闭TIMER4模块时钟1:使能TIMER4模块时钟0:关闭TIMER4模块时钟|
|\[15\]|TIMER3_CKL_EN|TIMER3模块时钟控制信号，默认关闭TIMER3模块时钟1:使能TIMER3模块时钟0:关闭TIMER3模块时钟|
|\[14\]|TIMER2_CKL_EN|TIMER2模块时钟控制信号，默认关闭TIMER2模块时钟1:使能TIMER2模块时钟0:关闭TIMER2模块时钟|
|\[13\]|TIMER1_CKL_EN|TIMER1模块时钟控制信号，默认关闭TIMER1模块时钟1:使能TIMER1模块时钟0:关闭TIMER1模块时钟|
|\[12\]|TIMER0_CKL_EN|TIMER0模块时钟控制信号，默认关闭TIMER0模块时钟1:使能TIMER0模块时钟0:关闭TIMER0模块时钟|
|\[11\]||未使用|
|\[10\]|MCPWM1_CKL_EN|MCPWM1模块时钟控制信号，默认关闭MCPWM1模块时钟1:使能MCPWM1模块时钟0:关闭MCPWM1模块时钟|
|\[9\]|MCPWM0_CKL_EN|MCPWM0模块时钟控制信号，默认关闭MCPWM0模块时钟1:使能MCPWM0模块时钟0:关闭MCPWM0模块时钟|
|\[8\]|CMP_CKL_EN|CMP模块时钟控制信号，默认关闭CMP模块时钟1:使能CMP模块时钟0:关闭CMP模块时钟|
|\[7\]||未使用|
|\[6\]|UART2_CLK_EN|UART2模块时钟控制信号，默认关闭UART2模块时钟1:使能UART2模块时钟0:关闭UART2模块时钟|
|\[5\]|UART1_CLK_EN|UART1模块时钟控制信号，默认关闭UART1模块时钟1:使能UART1模块时钟0:关闭UART1模块时钟|
|\[4\]|UART0_CLK_EN|UART0模块时钟控制信号，默认关闭UART0模块时钟1:使能UART0模块时钟0:关闭UART0模块时钟|
|\[3\]|HALL1_CLK_EN|HALL1模块时钟控制信号，默认关闭HALL1模块时钟1:使能HALL1模块时钟0:关闭HALL1模块时钟|
|\[2\]|HALL0_CLK_EN|HALL0模块时钟控制信号，默认关闭HALL0模块时钟1:使能HALL0模块时钟0:关闭HALL0模块时钟|
|\[0\]|I2C1_CLK_EN|I2C1模块时钟控制信号，默认关闭I2C1模块时钟1:使能I2C1模块时钟0:关闭I2C1模块时钟|
|\[0\]|I2C0_CLK_EN|I2C0模块时钟控制信号，默认关闭I2C0模块时钟1:使能I2C0模块时钟0:关闭I2C0模块时钟|

注意，上述每个模块的时钟门控，只控制各模块的工作时钟。即使不开启各自模块的时钟，也不影响软件访问各自模块的配置寄存器。

### SYS_SFT_RST 软复位寄存器

地址：0x4001_98A4

复位值：0x0

表6-13软复位寄存器 SYS_SFT_RST

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|
|SPI1_SFT_RST|SPI0_SFT_RST|CAN_SFT_RST|ADC2_SFT_RST|ADC1_SFT_RST|ADC0_SFT_RST|FMAC_SFT_RST|CORDIC_SFT_RST|CRC_SFT_RST|GPIO_SFT_RST|DMA_SFT_RST|QEP3_SFT_RST|QEP2_SFT_RST|QEP1_SFT_RST|QEP0_SFT_RST|TIMER4_SFT_RST|
|WO|WO|WO|WO|WO|WO|WO|WO|WO|WO|WO|WO|WO|WO|WO|WO|
|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|0|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|TIMER3_SFT_RST|TIMER2_SFT_RST|TIMER1_SFT_RST|TIMER0_SFT_RST||MCPWM1_SFT_RST|MCPWM0_SFT_RST|CMP_SFT_RST||UART2_SFT_RST|UART1_SFT_RST|UART0_SFT_RST|HALL1_SFT_RST|HALL0_SFT_RST|I2C1_SFT_RST|I2C0_SFT_RST|
|WO|WO|WO|WO||WO|WO|WO||WO|WO|WO|WO|WO|WO|WO|
|0|0|0|0||0|0|0||0|0|0|0|0|0|0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31\]|SPI1\_ SFT_RST|SPI1模块软复位信号，默认不复位SPI0模块1:复位SPI0模块0:释放SPI0模块|
|\[30\]|SPI0\_ SFT_RST|SPI0模块软复位信号，默认不复位SPI0模块1:复位SPI0模块0:释放SPI0模块|
|\[29\]|CAN\_ SFT_RST|CAN模块软复位信号，默认不复位CAN模块1:复位CAN模块0:释放CAN模块|
|\[28\]|ADC2\_ SFT_RST|ADC2模块软复位信号，默认不复位ADC2模块1:复位ADC2模块0:释放ADC2模块|
|\[27\]|ADC1\_ SFT_RST|ADC1模块软复位信号，默认不复位ADC1模块1:复位ADC1模块0:释放ADC1模块|
|\[26\]|ADC0\_ SFT_RST|ADC0模块软复位信号，默认不复位ADC0模块1:复位ADC0模块0:释放ADC0模块|
|\[25\]||未使用|
|\[24\]|CORDIC\_ SFT_RST|CORDIC模块软复位信号，默认不复位CORDIC模块1:复位CORDIC模块0:释放CORDIC模块|
|\[23\]|CRC\_ SFT_RST|CRC模块软复位信号，默认不复位CRC模块1:复位CRC模块0:释放CRC模块|
|\[22\]|GPIO\_ SFT_RST|GPIO模块软复位信号，默认不复位GPIO模块1:复位GPIO模块0:释放GPIO模块|
|\[21\]|DMA_SFT_RST|DMA模块软复位信号，默认不复位DMA模块1:复位DMA模块0:释放DMA模块|
|\[20\]|QEP3_SFT_RST|QEP3模块软复位信号，默认不复位QEP3模块1:复位QEP3模块0:释放QEP3模块|
|\[19\]|QEP2_SFT_RST|QEP2模块软复位信号，默认不复位QEP2模块1:复位QEP2模块0:释放QEP2模块|
|\[18\]|QEP1_SFT_RST|QEP1模块软复位信号，默认不复位QEP1模块1:复位QEP1模块0:释放QEP1模块|
|\[17\]|QEP0_SFT_RST|QEP0模块软复位信号，默认不复位QEP0模块1:复位QEP0模块0:释放QEP0模块|
|\[16\]|TIMER4\_ SFT_RST|TIMER4模块软复位信号，默认不复位TIMER4模块1:复位TIMER4模块0:释放TIMER4模块|
|\[15\]|TIMER3\_ SFT_RST|TIMER3模块软复位信号，默认不复位TIMER3模块1:复位TIMER3模块0:释放TIMER3模块|
|\[14\]|TIMER2\_ SFT_RST|TIMER2模块软复位信号，默认不复位TIMER2模块1:复位TIMER2模块0:释放TIMER2模块|
|\[13\]|TIMER1\_ SFT_RST|TIMER1模块软复位信号，默认不复位TIMER1模块1:复位TIMER1模块0:释放TIMER1模块|
|\[12\]|TIMER0\_ SFT_RST|TIMER0模块软复位信号，默认不复位TIMER0模块1:复位TIMER0模块0:释放TIMER0模块|
|\[11\]||未使用|
|\[10\]|MCPWM1\_ SFT_RST|MCPWM1模块软复位信号，默认不复位MCPWM1模块1:复位MCPWM1模块0:释放MCPWM1模块|
|\[9\]|MCPWM0\_ SFT_RST|MCPWM0模块软复位信号，默认不复位MCPWM0模块1:复位MCPWM0模块0:释放MCPWM0模块|
|\[8\]|CMP\_ SFT_RST|CMP模块软复位信号，默认不复位CMP模块1:复位CMP模块0:释放CMP模块|
|\[7\]||未使用|
|\[6\]|UART2\_ SFT_RST|UART2模块软复位信号，默认不复位UART2模块1:复位UART2模块0:释放UART2模块|
|\[5\]|UART1_SFT_RST|UART1模块软复位信号，默认不复位UART1模块1:复位UART1模块0:释放UART1模块|
|\[4\]|UART0_SFT_RST|UART0模块软复位信号，默认不复位UART0模块1:复位UART0模块0:释放UART0模块|
|\[3\]|HALL1_SFT_RST|HALL1模块软复位信号，默认不复位HALL1模块1:复位HALL1模块0:释放HALL1模块|
|\[2\]|HALL0_SFT_RST|HALL0模块软复位信号，默认不复位HALL0模块1:复位HALL0模块0:释放HALL0模块|
|\[1\]|I2C1_SFT_RST|I2C1模块软复位信号，默认不复位I2C1模块1:复位I2C1模块0:释放I2C1模块|
|\[0\]|I2C0_SFT_RST|I2C0模块软复位信号，默认不复位I2C0模块1:复位I2C0模块0:释放I2C0模块|

注意，模块软复位在SYS_SFT_RST对应位写入1后会保持在复位状态，需要再次写入0才能解除复位状态。由于复位信号内部会进行展宽。所以软复位释放后，至少等待1个总线周期后再对外设进行读写。可以通过插入\_\_asm(“NOP”);实现等待。

### SYS_PROTECT 写保护寄存器

地址：0x4001_98A8

复位值：0x0

表6-14写保护寄存器 SYS_PROTECT

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|PSW||||||||||||||||
|WO||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:16\]||未使用|
|\[15:0\]|PSW|除SYS_AFE_DACx、SYS_AFE_DACx_AMC、SYS_AFE_DACx_DC(x=0,1)外，其他系统寄存器均受写保护，写入前需先写入密码解除写保护写入0x7A83，使能寄存器写操作写入其它值，禁止寄存器写操作|

### SYS_CACHE_CFG 缓存控制寄存器

地址：0x4001_98AC

复位值：0x0

表6-15 SYS_CACHE_CFG缓存寄存器

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
||||||||||||||||EN|
||||||||||||||||RW|
||||||||||||||||0|

||||
|---|---|---|
|位置|位名称|说明|
|\[31:1\]||未使用|
|\[0\]|EN|Cache使能，1：启用Cache，0：禁用Cache|

### SYS_MEM_CFG 内存控制寄存器

地址：0x4001_98C4

复位值：0x0

表6-16 SYS_MEM_CFG内存控制寄存器

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|||||||REMAP||PCK_EN||||PCK_ERR||||
|||||||RW||RW||||RW1C||||
|||||||0||0||||0||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:10\]||未使用|
|\[9:8\]|REMAP|地址空间重映射，用于将SRAM1/2/3映射至0x1FFFFFFF之前的地址空间做为Code RAM使用，Code RAM可用于存放关键代码，由于RAM访问速度更快，可以加速关键代码的的执行。0：SRAM0/1/2/3均用为Data RAM，无Code RAM1：SRAM0/1/2用为Data RAM，SRAM3用作Code RAM2：SRAM0/1用为Data RAM，SRAM2/3用作Code RAM3：SRAM0用为Data RAM，SRAM1/2/3用作Code RAM具体地址空间请参考第3章地址空间章节|
|\[7:4\]|PCK_EN|SRAM3/2/1/0 内存奇偶校验使能|
|\[3:0\]|PCK_ERR|SRAM3/2/1/0 内存奇偶校验错误，0：无错误发生，1：有错误发生，写1清零|

只有当使能校验时，对应的奇偶位才可能在校验出错时置位。当奇偶校验出错时，产生不可屏蔽中断NMI。

### SYS_FLSE On-Chip FLASH 擦除控制寄存器

地址：0x4001_98D0

复位值：0x0

表6-17擦除控制寄存器
SYS_FLSE

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|FLSE||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:16\]||未使用|
|\[15:0\]|FLSE|On-Chip FLASH擦除控制寄存器。本寄存器写入0x8FCA，On-Chip FLASH的擦除功能才能最终生效。写入其他值，On-Chip FLASH的擦除功能均无法生效。为防止误擦除，建议不使用擦除功能时，不生效此寄存器。|

### SYS_FLSP On-Chip FLASH 编程控制寄存器

地址：0x4001_98D4

复位值：0x0

表6-18编程控制寄存器 SYS_FLSP

|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0|
|FLSP||||||||||||||||
|RW||||||||||||||||
|0||||||||||||||||

||||
|---|---|---|
|位置|位名称|说明|
|\[31:16\]||未使用|
|\[15:0\]|FLSP|On-Chip FLASH编程控制寄存器。本寄存器写入0x8F35，On-Chip FLASH的编程功能才能最终生效。写入其他值，On-Chip FLASH的编程功能均无法生效。为防止误编程，建议不使用编程功能时，不生效此寄存器。|

