# 流程图

## 脉冲计数流程图

```mermaid
flowchart 
A[开始] --> B(根据脉冲段的要求设置对应的ARR)
B -->|达到要求| C(进入中断)
C -->D{是否有下一段脉冲}
D --> |无下一段脉冲|E[结束]
D --> |有下一段脉冲|F(设置ARR为下一段脉冲的脉冲数)
F --> E[结束]
```

```mermaid
flowchart 
A[开始] --> |检测到清零指令|B(清零计数)
B --> C[结束]
```

## 脉冲加减速流程图

```mermaid
flowchart 
A[开始] --> B(计算加速度)
B --> C(计算下一个脉冲的频率)
C -->D(设置脉冲的频率)
D --> E(开启脉冲)
E --> F[结束]
```
## 脉冲方向流程图

```mermaid
flowchart
A[开始] --> B{变量是否改变}
B --> |是| C(修改引脚电平)
B --> |否| D[结束]
C --> D
```

## 模式选择流程图

```mermaid
flowchart
A[开始] --> B{模式判断}
B --> |相对模式| C(启用相对模式函数)
B --> |绝对模式| D(启用绝对模式函数)
C --> E[结束]
D --> E[结束]
```

## PLSR多段脉冲输出功能实现流程图

```mermaid
flowchart
A[开始] --> B(根据频率设置对应的PSC和ARR)
B --> C(根据当前运行的脉冲设置计数定时器的ARR)
C -->|脉冲段结束| D{检查是否存在下一段}
D -->|有下一段脉冲| E(进行脉冲替换和脉冲加减速)
D -->|没有下一段脉冲|F(停止脉冲发送定时器)
E --> G[结束]
F --> G[结束]
```

## 掉电保存流程图

```mermaid
flowchart
A[开始] --> B(开始并使能Sram区域)
B --> C(创建掉电保存任务)
C --> D(每个一段时间保存对应的数据)
D --> E[结束]
```

```mermaid
flowchart
A[开始] --> B(从Sram区域读取保存的数据)
B --> C(将读取到的数据进行解析并存入结构体)
C --> D[结束]
```

## 系统结构图

```mermaid
flowchart 
A[主控] --> B(脉冲计数)
A[主控] --> C(脉冲的加减速)
A[主控] --> D(脉冲的方向)
A[主控] --> E(运动模式切换)
A[主控] --> F(多段脉冲输出)
A[主控] --> G(掉电保存)
```

## 与上位机通信流程图

```mermaid
flowchart 
A[开始] -->B(收到数据)
B --> C(解析并处理数据)
C --> D(根据数据进行相关处理)
D --> E[结束]
```

