在这段代码中,我们正在检查STM32H745微控制器(MCU)的重启原因。代码使用了STM32 HAL库来获取和检查RCC(Reset and Clock Control)寄存器的状态。以下是代码的逐步解释:
1. 首先,我们定义了一个名为`Check_Rst`的函数,该函数没有参数。
```c
void Check_Rst(void)
```
2. 在函数内部,我们使用`my_printf`函数打印RCC的CSR(Control and Status Register)寄存器的值。CSR寄存器包含了MCU的复位和时钟控制状态。
```c
my_printf(" CSR = %xrn", RCC->CSR);
```
3. 接下来,我们使用`__HAL_RCC_GET_FLAG`宏来检查`RCC_FLAG_PINRST`标志。如果此标志不为`RESET`,则表示MCU是由于NRST(复位)引脚触发的复位。
```c
if(__HAL_RCC_GET_FLAG(RCC_FLAG_PINRST) != RESET)
{
my_printf("PIN reset rn");
}
```
4. 然后,我们再次使用`__HAL_RCC_GET_FLAG`宏来检查`RCC_FLAG_PORRST`标志。如果此标志不为`RESET`,则表示MCU是由于上电或掉电触发的复位(Power On Reset 或 Power Down Reset)。
```c
if(__HAL_RCC_GET_FLAG(RCC_FLAG_PORRST) != RESET)
{
my_printf("POR/PD reset rn");
}
```
这段代码的目的是检查STM32H745 MCU的重启原因,并打印出相应的信息。通过检查CSR寄存器中的不同标志,我们可以确定是哪种类型的复位导致了MCU的重启。
在这段代码中,我们正在检查STM32H745微控制器(MCU)的重启原因。代码使用了STM32 HAL库来获取和检查RCC(Reset and Clock Control)寄存器的状态。以下是代码的逐步解释:
1. 首先,我们定义了一个名为`Check_Rst`的函数,该函数没有参数。
```c
void Check_Rst(void)
```
2. 在函数内部,我们使用`my_printf`函数打印RCC的CSR(Control and Status Register)寄存器的值。CSR寄存器包含了MCU的复位和时钟控制状态。
```c
my_printf(" CSR = %xrn", RCC->CSR);
```
3. 接下来,我们使用`__HAL_RCC_GET_FLAG`宏来检查`RCC_FLAG_PINRST`标志。如果此标志不为`RESET`,则表示MCU是由于NRST(复位)引脚触发的复位。
```c
if(__HAL_RCC_GET_FLAG(RCC_FLAG_PINRST) != RESET)
{
my_printf("PIN reset rn");
}
```
4. 然后,我们再次使用`__HAL_RCC_GET_FLAG`宏来检查`RCC_FLAG_PORRST`标志。如果此标志不为`RESET`,则表示MCU是由于上电或掉电触发的复位(Power On Reset 或 Power Down Reset)。
```c
if(__HAL_RCC_GET_FLAG(RCC_FLAG_PORRST) != RESET)
{
my_printf("POR/PD reset rn");
}
```
这段代码的目的是检查STM32H745 MCU的重启原因,并打印出相应的信息。通过检查CSR寄存器中的不同标志,我们可以确定是哪种类型的复位导致了MCU的重启。
举报