diff --git a/.gitignore b/.gitignore
index b1e9698..c69c7c5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,6 @@
-# 忽略构建输出目录
-Build/
-
-# 忽略 Toolchain 目录下所有内容,但保留目录本身
-Toolchain/*
-!Toolchain/.gitkeep
+# 忽略构建输出目录
+Build/
+
+# 忽略 Toolchain 目录下所有内容,但保留目录本身
+Toolchain/*
+!Toolchain/.gitkeep
diff --git a/.vscode/extensions.json b/.vscode/extensions.json
index 3243635..536a777 100644
--- a/.vscode/extensions.json
+++ b/.vscode/extensions.json
@@ -1,26 +1,26 @@
-{
- "recommendations": [
- "ms-vscode.cmake-tools",
- "ms-vscode.cpptools",
- "ms-vscode.cpptools-extension-pack",
- "ms-vscode.cpptools-themes",
- "ms-vscode.vscode-embedded-tools",
- "ms-vscode.hexeditor",
- "ms-vscode.notepadplusplus-keybindings",
- "twxs.cmake",
- "xaver.clang-format",
- "marus25.cortex-debug",
- "cheshirekow.cmake-format",
- "mcu-debug.debug-tracker-vscode",
- "mcu-debug.memory-view",
- "mcu-debug.peripheral-viewer",
- "mcu-debug.rtos-views",
- "trond-snekvik.gnu-mapfiles",
- "zixuanwang.linkerscript",
- "gurumukhi.selected-lines-count",
- "gruntfuggly.todo-tree",
- "vscode-icons-team.vscode-icons",
- "jeff-hykin.better-cpp-syntax",
- "dan-c-underwood.arm"
- ]
+{
+ "recommendations": [
+ "ms-vscode.cmake-tools",
+ "ms-vscode.cpptools",
+ "ms-vscode.cpptools-extension-pack",
+ "ms-vscode.cpptools-themes",
+ "ms-vscode.vscode-embedded-tools",
+ "ms-vscode.hexeditor",
+ "ms-vscode.notepadplusplus-keybindings",
+ "twxs.cmake",
+ "xaver.clang-format",
+ "marus25.cortex-debug",
+ "cheshirekow.cmake-format",
+ "mcu-debug.debug-tracker-vscode",
+ "mcu-debug.memory-view",
+ "mcu-debug.peripheral-viewer",
+ "mcu-debug.rtos-views",
+ "trond-snekvik.gnu-mapfiles",
+ "zixuanwang.linkerscript",
+ "gurumukhi.selected-lines-count",
+ "gruntfuggly.todo-tree",
+ "vscode-icons-team.vscode-icons",
+ "jeff-hykin.better-cpp-syntax",
+ "dan-c-underwood.arm"
+ ]
}
\ No newline at end of file
diff --git a/.vscode/launch.json b/.vscode/launch.json
index 717cbb6..7872a68 100644
--- a/.vscode/launch.json
+++ b/.vscode/launch.json
@@ -1,36 +1,36 @@
-{
- "version": "0.2.0",
- "configurations": [
- {
- "cwd": "${workspaceFolder}",
- "executable": "${workspaceFolder}/Build/Debug/Application/Application.elf",
- "name": "Debug with OpenOCD",
- "request": "launch",
- "type": "cortex-debug",
- "runToEntryPoint": "main",
- "showDevDebugOutput": "none",
- "gdbPath": "${workspaceFolder}/Toolchain/xpack-arm-none-eabi-gcc-11.3.1-1.1/bin/arm-none-eabi-gdb.exe",
- "servertype": "openocd",
- "serverpath": "${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/bin/openocd.exe",
- "svdFile": "${workspaceFolder}/GD32E230.svd",
- "liveWatch": {
- "enabled": true,
- "samplesPerSecond": 1
- },
- "configFiles": [
- "${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/scripts/target/openocd_gdlink_gd32e23x.cfg"
- ],
- "serverArgs": [
- "-s", "${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/scripts"
- ],
- "searchDir": [
- "${workspaceFolder}"
- ],
- "preLaunchTask": "Build",
- "preRestartCommands": [
- "load",
- "continue"
- ],
- },
- ]
+{
+ "version": "0.2.0",
+ "configurations": [
+ {
+ "cwd": "${workspaceFolder}",
+ "executable": "${workspaceFolder}/Build/Debug/Application/Application.elf",
+ "name": "Debug with OpenOCD",
+ "request": "launch",
+ "type": "cortex-debug",
+ "runToEntryPoint": "main",
+ "showDevDebugOutput": "none",
+ "gdbPath": "${workspaceFolder}/Toolchain/xpack-arm-none-eabi-gcc-11.3.1-1.1/bin/arm-none-eabi-gdb.exe",
+ "servertype": "openocd",
+ "serverpath": "${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/bin/openocd.exe",
+ "svdFile": "${workspaceFolder}/GD32E230.svd",
+ "liveWatch": {
+ "enabled": true,
+ "samplesPerSecond": 1
+ },
+ "configFiles": [
+ "${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/scripts/target/openocd_gdlink_gd32e23x.cfg"
+ ],
+ "serverArgs": [
+ "-s", "${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/scripts"
+ ],
+ "searchDir": [
+ "${workspaceFolder}"
+ ],
+ "preLaunchTask": "Build",
+ "preRestartCommands": [
+ "load",
+ "continue"
+ ],
+ },
+ ]
}
\ No newline at end of file
diff --git a/.vscode/settings.json b/.vscode/settings.json
index 4107651..d13f602 100644
--- a/.vscode/settings.json
+++ b/.vscode/settings.json
@@ -1,30 +1,26 @@
-{
- "terminal.integrated.tabs.enabled": true,
- "terminal.integrated.profiles.windows": {
- "Git Bash": {
- "path": "C:\\Program Files\\Git\\bin\\bash.exe",
- "icon": "terminal-bash"
- },
- "Git-Bash": {
- "path": "D:\\Git\\bin\\bash.exe",
- "icon": "terminal-bash"
- }
- },
- "terminal.integrated.defaultProfile.windows": "Git-Bash",
- "clang-format.assumeFilename": ".clang-format",
- "clang-format.executable": "clang-format",
- "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools",
- "cmake.configureOnOpen": true,
- "cmake.buildDirectory": "${workspaceFolder}/Build",
- "vcpkg.storageLocation": "C:\\Dev\\Tools\\vcpkg",
- "files.associations": {
- "*.h": "c",
- "*.c": "c",
- "array": "c",
- "string": "c",
- "string_view": "c",
- "ranges": "c",
- "span": "c"
- },
- "cortex-debug.variableUseNaturalFormat": true,
+{
+ "terminal.integrated.tabs.enabled": true,
+ "terminal.integrated.profiles.windows": {
+ "Git Bash": {
+ "path": "C:\\Program Files\\Git\\bin\\bash.exe",
+ "icon": "terminal-bash"
+ }
+ },
+ "terminal.integrated.defaultProfile.windows": "Git Bash",
+ "clang-format.assumeFilename": ".clang-format",
+ "clang-format.executable": "clang-format",
+ "C_Cpp.default.configurationProvider": "ms-vscode.cmake-tools",
+ "cmake.configureOnOpen": true,
+ "cmake.buildDirectory": "${workspaceFolder}/Build",
+ "vcpkg.storageLocation": "C:\\Dev\\Tools\\vcpkg",
+ "files.associations": {
+ "*.h": "c",
+ "*.c": "c",
+ "array": "c",
+ "string": "c",
+ "string_view": "c",
+ "ranges": "c",
+ "span": "c"
+ },
+ "cortex-debug.variableUseNaturalFormat": true,
}
\ No newline at end of file
diff --git a/.vscode/tasks.json b/.vscode/tasks.json
index 3c31cd0..e71d82a 100644
--- a/.vscode/tasks.json
+++ b/.vscode/tasks.json
@@ -1,145 +1,145 @@
-{
- "version": "2.0.0",
- "tasks": [
- {
- "label": "Build and Flash",
- "group": {
- "kind": "build",
- "isDefault": true
- },
- "dependsOn": [
- "Build",
- "Flash MCU"
- ],
- "dependsOrder": "sequence",
- "icon": {
- "id": "insert",
- "tooltip": "Build and Flash"
- }
- },
- {
- "label": "Flash MCU",
- "type": "shell",
- "command": "'${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/bin/openocd.exe' -s '${workspaceFolder}' -f '${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/scripts/target/openocd_gdlink_gd32e23x.cfg' -c 'init; reset halt; flash write_image erase ${command:cmake.launchTargetFilename}; reset; exit'",
- "group": {
- "kind": "build",
- "isDefault": true
- },
- "problemMatcher": [],
- "options": {
- "cwd": "${command:cmake.buildDirectory}/Application",
- "environment": {
- "CLICOLOR_FORCE": "1",
- "OPENOCD_SCRIPTS": ""
- }
- },
- "presentation": {
- "clear": true
- },
- "icon": {
- "id": "gather",
- "tooltip": "Flash MCU"
- }
- },
- {
- "label": "Reset MCU",
- "type": "shell",
- "command": "'${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/bin/openocd.exe' -s '${workspaceFolder}' -f '${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/scripts/target/openocd_gdlink_gd32e23x.cfg' -c 'init; reset; exit'",
- "group": {
- "kind": "build",
- "isDefault": true
- },
- "problemMatcher": [],
- "options": {
- "cwd": "${command:cmake.buildDirectory}/Application",
- "environment": {
- "CLICOLOR_FORCE": "1",
- "OPENOCD_SCRIPTS": ""
- }
- },
- "presentation": {
- "clear": true
- },
- "icon": {
- "id": "discard",
- "tooltip": "Reset MCU"
- }
- },
- {
- "label": "Mass Erase MCU",
- "type": "shell",
- "command": "'${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/bin/openocd.exe' -s '${workspaceFolder}' -f '${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/scripts/target/openocd_gdlink_gd32e23x.cfg' -c 'init; reset halt; gd32e23x mass_erase 0; exit'",
- "group": {
- "kind": "build",
- "isDefault": true
- },
- "problemMatcher": [],
- "options": {
- "cwd": "${command:cmake.buildDirectory}/Application",
- "environment": {
- "CLICOLOR_FORCE": "1",
- "OPENOCD_SCRIPTS": ""
- }
- },
- "presentation": {
- "clear": true
- },
- "icon": {
- "id": "clear-all",
- "tooltip": "Erase MCU"
- }
- },
- {
- "label": "OpenOCD Server",
- "type": "shell",
- "command": [
- "'${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/bin/openocd.exe' -s '${workspaceFolder}' -f '${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/scripts/target/openocd_gdlink_gd32e23x.cfg'"
- ],
- "group": {
- "kind": "build",
- "isDefault": true
- },
- "problemMatcher": [],
- "options": {
- "cwd": "${command:cmake.buildDirectory}/Application",
- "environment": {
- "CLICOLOR_FORCE": "1",
- "OPENOCD_SCRIPTS": ""
- }
- },
- "presentation": {
- "clear": true
- }
- },
- {
- "label": "Build",
- "type": "cmake",
- "command": "build",
- "group": {
- "kind": "build",
- "isDefault": true
- },
- "problemMatcher": [
- {
- "base": "$gcc",
- "fileLocation": [
- "relative",
- "${command:cmake.buildDirectory}"
- ]
- }
- ],
- "options": {
- "environment": {
- "CLICOLOR_FORCE": "1"
- }
- },
- "presentation": {
- "clear": true
- },
- "icon": {
- "id": "code",
- "tooltip": "Build"
- }
- }
- ]
+{
+ "version": "2.0.0",
+ "tasks": [
+ {
+ "label": "Build and Flash",
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ },
+ "dependsOn": [
+ "Build",
+ "Flash MCU"
+ ],
+ "dependsOrder": "sequence",
+ "icon": {
+ "id": "insert",
+ "tooltip": "Build and Flash"
+ }
+ },
+ {
+ "label": "Flash MCU",
+ "type": "shell",
+ "command": "'${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/bin/openocd.exe' -s '${workspaceFolder}' -f '${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/scripts/target/openocd_gdlink_gd32e23x.cfg' -c 'init; reset halt; flash write_image erase ${command:cmake.launchTargetFilename}; reset; exit'",
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ },
+ "problemMatcher": [],
+ "options": {
+ "cwd": "${command:cmake.buildDirectory}/Application",
+ "environment": {
+ "CLICOLOR_FORCE": "1",
+ "OPENOCD_SCRIPTS": ""
+ }
+ },
+ "presentation": {
+ "clear": true
+ },
+ "icon": {
+ "id": "gather",
+ "tooltip": "Flash MCU"
+ }
+ },
+ {
+ "label": "Reset MCU",
+ "type": "shell",
+ "command": "'${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/bin/openocd.exe' -s '${workspaceFolder}' -f '${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/scripts/target/openocd_gdlink_gd32e23x.cfg' -c 'init; reset; exit'",
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ },
+ "problemMatcher": [],
+ "options": {
+ "cwd": "${command:cmake.buildDirectory}/Application",
+ "environment": {
+ "CLICOLOR_FORCE": "1",
+ "OPENOCD_SCRIPTS": ""
+ }
+ },
+ "presentation": {
+ "clear": true
+ },
+ "icon": {
+ "id": "discard",
+ "tooltip": "Reset MCU"
+ }
+ },
+ {
+ "label": "Mass Erase MCU",
+ "type": "shell",
+ "command": "'${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/bin/openocd.exe' -s '${workspaceFolder}' -f '${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/scripts/target/openocd_gdlink_gd32e23x.cfg' -c 'init; reset halt; gd32e23x mass_erase 0; exit'",
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ },
+ "problemMatcher": [],
+ "options": {
+ "cwd": "${command:cmake.buildDirectory}/Application",
+ "environment": {
+ "CLICOLOR_FORCE": "1",
+ "OPENOCD_SCRIPTS": ""
+ }
+ },
+ "presentation": {
+ "clear": true
+ },
+ "icon": {
+ "id": "clear-all",
+ "tooltip": "Erase MCU"
+ }
+ },
+ {
+ "label": "OpenOCD Server",
+ "type": "shell",
+ "command": [
+ "'${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/bin/openocd.exe' -s '${workspaceFolder}' -f '${workspaceFolder}/Toolchain/xpack-openocd-0.11.0-3/scripts/target/openocd_gdlink_gd32e23x.cfg'"
+ ],
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ },
+ "problemMatcher": [],
+ "options": {
+ "cwd": "${command:cmake.buildDirectory}/Application",
+ "environment": {
+ "CLICOLOR_FORCE": "1",
+ "OPENOCD_SCRIPTS": ""
+ }
+ },
+ "presentation": {
+ "clear": true
+ }
+ },
+ {
+ "label": "Build",
+ "type": "cmake",
+ "command": "build",
+ "group": {
+ "kind": "build",
+ "isDefault": true
+ },
+ "problemMatcher": [
+ {
+ "base": "$gcc",
+ "fileLocation": [
+ "relative",
+ "${command:cmake.buildDirectory}"
+ ]
+ }
+ ],
+ "options": {
+ "environment": {
+ "CLICOLOR_FORCE": "1"
+ }
+ },
+ "presentation": {
+ "clear": true
+ },
+ "icon": {
+ "id": "code",
+ "tooltip": "Build"
+ }
+ }
+ ]
}
\ No newline at end of file
diff --git a/CommunicationProtocol.md b/CommunicationProtocol.md
index 451a69d..42a5207 100644
--- a/CommunicationProtocol.md
+++ b/CommunicationProtocol.md
@@ -1,62 +1,62 @@
-# 电涡流传感器模块通信协议
-
-## 电涡流传感器模块通信协议
-
-| **序号** | **修改内容** | **版本** | **日期** | **修改人** |
-|:------:|:--------:|:------:|:----------:|:-------:|
-| 1 | 初版 | V1.0 | 2024-12-25 | Hulk |
-| 2 | 修改指令含义 | V1.1 | 20250822 | Hulk |
-| | | | | |
-| | | | | |
-
-### 发包格式
-
-| **包头** | **类型** | **数据长度** | **数据** | **校验** |
-|:------:|:------:|:-----------:|:------:|:------:|
-| D5 | 0x03 | Data Length | Data | CRC |
-
-- 数据长度只包含数据部分,不包含包头、类型、数据长度、校验
-- CRC求和校验,包含类型、数据长度、数据
-- 数据部分为ascii码
-
-### 回包格式
-
-| **包头** | **状态码** | **数据长度** | **数据** | **校验** |
-|:------:|:----------:|:-----------:|:------:|:------:|
-| B5 | 0xF0 正常包 | Data Length | Data | CRC |
-| B5 | 0xF1 CRC错误 | Data Length | Data | CRC |
-| B5 | 0xF2 包头错误 | Data Length | Data | CRC |
-| B5 | 0xF3 类型错误 | Data Length | Data | CRC |
-| B5 | 0xF4 包长度错误 | Data Length | Data | CRC |
-
-- 数据长度仅包含数据部分,不包含包头状态码等
-- CRC求和校验,包含状态码数据长度和数据部分
-
--------------------
-
-## 电涡流传感器模块功能
-
-### 1. 开启自动读取并发送电涡流传感器模块数据
-
-- M1指令 开启自动读取并发送涡流传感器数据,间隔10ms左右
- - `D5 03 02 4D 31 83`
-- 电涡流传感器模块涡流回复数据
- - `B5 F0 04 01 AE 1B E4 A2`, 有效数据为 `0x01AE1BE4`,转换为`28187620`
- - `B5 F0 04 04 19 C1 FA CC`, 有效数据为 `0x0419C1FAD2`,转换为`17612012242`
-
-
-### 2. 关闭自动读取并发送电涡流传感器模块数据
-
-- M2 指令 关闭自动读取并发送涡流传感器数据
- - `D5 03 02 4D 32 84`
- > 注:因为485总线为半双工,M1命令开启后持续自动发送数据,M2指令发送停止命令可能无法一次成功,可持续发送几次
-
-### 3. 单次读取并发送电涡流传感器数据
-
-- M3 指令 单次读取并发送涡流传感器数据
- - `D5 03 02 4D 33 85`
-
-### 4. 单次读取并发送板载温度传感器数据
-
-- M3 指令 单次读取并发送板载温度传感器数据
- - `D5 03 02 4D 34 86`
+# 电涡流传感器模块通信协议
+
+## 电涡流传感器模块通信协议
+
+| **序号** | **修改内容** | **版本** | **日期** | **修改人** |
+|:------:|:--------:|:------:|:----------:|:-------:|
+| 1 | 初版 | V1.0 | 2024-12-25 | Hulk |
+| 2 | 修改指令含义 | V1.1 | 20250822 | Hulk |
+| | | | | |
+| | | | | |
+
+### 发包格式
+
+| **包头** | **类型** | **数据长度** | **数据** | **校验** |
+|:------:|:------:|:-----------:|:------:|:------:|
+| D5 | 0x03 | Data Length | Data | CRC |
+
+- 数据长度只包含数据部分,不包含包头、类型、数据长度、校验
+- CRC求和校验,包含类型、数据长度、数据
+- 数据部分为ascii码
+
+### 回包格式
+
+| **包头** | **状态码** | **数据长度** | **数据** | **校验** |
+|:------:|:----------:|:-----------:|:------:|:------:|
+| B5 | 0xF0 正常包 | Data Length | Data | CRC |
+| B5 | 0xF1 CRC错误 | Data Length | Data | CRC |
+| B5 | 0xF2 包头错误 | Data Length | Data | CRC |
+| B5 | 0xF3 类型错误 | Data Length | Data | CRC |
+| B5 | 0xF4 包长度错误 | Data Length | Data | CRC |
+
+- 数据长度仅包含数据部分,不包含包头状态码等
+- CRC求和校验,包含状态码数据长度和数据部分
+
+-------------------
+
+## 电涡流传感器模块功能
+
+### 1. 开启自动读取并发送电涡流传感器模块数据
+
+- M1指令 开启自动读取并发送涡流传感器数据,间隔10ms左右
+ - `D5 03 02 4D 31 83`
+- 电涡流传感器模块涡流回复数据
+ - `B5 F0 04 01 AE 1B E4 A2`, 有效数据为 `0x01AE1BE4`,转换为`28187620`
+ - `B5 F0 04 04 19 C1 FA CC`, 有效数据为 `0x0419C1FAD2`,转换为`17612012242`
+
+
+### 2. 关闭自动读取并发送电涡流传感器模块数据
+
+- M2 指令 关闭自动读取并发送涡流传感器数据
+ - `D5 03 02 4D 32 84`
+ > 注:因为485总线为半双工,M1命令开启后持续自动发送数据,M2指令发送停止命令可能无法一次成功,可持续发送几次
+
+### 3. 单次读取并发送电涡流传感器数据
+
+- M3 指令 单次读取并发送涡流传感器数据
+ - `D5 03 02 4D 33 85`
+
+### 4. 单次读取并发送板载温度传感器数据
+
+- M3 指令 单次读取并发送板载温度传感器数据
+ - `D5 03 02 4D 34 86`
diff --git a/GD32E230.svd b/GD32E230.svd
index c4b95e9..b68dd9b 100644
--- a/GD32E230.svd
+++ b/GD32E230.svd
@@ -1,19783 +1,19783 @@
-
-
- GD32E230
- 1.0
- GD32E230 ARM 32-bit Cortex-M23 Microcontroller based device
-
- CM23
- r0p0
- little
- 1
- 1
- 4
- 0
-
- 8
- 32
-
-
-
-
- 0x20
- 0x0
- 0xFFFFFFFF
-
-
- ADC
- Analog to digital converter
- ADC
- 0x40012400
-
- 0x0
- 0x400
- registers
-
-
- ADC_CMP
- 12
-
-
-
- STAT
- STAT
- status register
- 0x0
- 0x20
- read-write
- 0x00000000
-
-
- STRC
- Start flag of regular channel group
- 4
- 1
-
-
- STIC
- Start flag of inserted channel group
- 3
- 1
-
-
- EOIC
- End of inserted group conversion flag
- 2
- 1
-
-
- EOC
- End of group conversion flag
- 1
- 1
-
-
- WDE
- Analog watchdog event flag
- 0
- 1
-
-
-
-
- CTL0
- CTL0
- control register 0
- 0x4
- 0x20
- read-write
- 0x00000000
-
-
- DRES
- ADC resolution
- 24
- 2
-
-
- RWDEN
- Regular channel analog watchdog enable
- 23
- 1
-
-
- IWDEN
- Inserted channel analog watchdog enable
- 22
- 1
-
-
- DISNUM
- Number of conversions in discontinuous
- mode
- 13
- 3
-
-
- DISIC
- Discontinuous mode on injected
- channels
- 12
- 1
-
-
- DISRC
- Discontinuous mode on regular
- channels
- 11
- 1
-
-
- ICA
- Inserted channel group convert
- automatically
- 10
- 1
-
-
- WDSC
- When in scan mode, analog watchdog
- is effective on a single channel
- 9
- 1
-
-
- SM
- Scan mode
- 8
- 1
-
-
- EOICIE
- Interrupt enable for EOIC
- 7
- 1
-
-
- WDEIE
- Interrupt enable for WDE
- 6
- 1
-
-
- EOCIE
- Interrupt enable for EOC
- 5
- 1
-
-
- WDCHSEL
- Analog watchdog channel select
- 0
- 5
-
-
-
-
- CTL1
- CTL1
- control register 1
- 0x08
- 0x20
- read-write
- 0x00000000
-
-
- TSVREN
- Channel 16 and 17 enable of ADC
- 23
- 1
-
-
- SWRCST
- Start on regular channel
- 22
- 1
-
-
- SWICST
- Start on inserted channel
- 21
- 1
-
-
- ETERC
- External trigger enable for regular
- channel
- 20
- 1
-
-
- ETSRC
- External trigger select for regular
- channel
- 17
- 3
-
-
- ETEIC
- External trigger enable for
- inserted channels
- 15
- 1
-
-
- ETSIC
- External trigger select for inserted
- channel
- 12
- 3
-
-
- DAL
- Data alignment
- 11
- 1
-
-
- DMA
- DMA request enable
- 8
- 1
-
-
- RSTCLB
- Reset calibration
- 3
- 1
-
-
- CLB
- ADC calibration
- 2
- 1
-
-
- CTN
- Continuous mode
- 1
- 1
-
-
- ADCON
- ADC ON
- 0
- 1
-
-
-
-
- SAMPT0
- SAMPT0
- Sampling time register 0
- 0x0C
- 0x20
- read-write
- 0x00000000
-
-
- SPT16
- Channel 16 sample time
- selection
- 18
- 3
-
-
- SPT17
- Channel 17 sample time
- selection
- 21
- 3
-
-
-
-
- SAMPT1
- SAMPT1
- Sampling time register 1
- 0x10
- 0x20
- read-write
- 0x00000000
-
-
- SPT0
- Channel 0 sample time
- selection
- 0
- 3
-
-
- SPT1
- Channel 1 sample time
- selection
- 3
- 3
-
-
- SPT2
- Channel 2 sample time
- selection
- 6
- 3
-
-
- SPT3
- Channel 3 sample time
- selection
- 9
- 3
-
-
- SPT4
- Channel 4 sample time
- selection
- 12
- 3
-
-
- SPT5
- Channel 5 sample time
- selection
- 15
- 3
-
-
- SPT6
- Channel 6 sample time
- selection
- 18
- 3
-
-
- SPT7
- Channel 7 sample time
- selection
- 21
- 3
-
-
- SPT8
- Channel 8 sample time
- selection
- 24
- 3
-
-
- SPT9
- Channel 9 sample time
- selection
- 27
- 3
-
-
-
-
- IOFF0
- IOFF0
- Inserted channel data offset register
- 0
- 0x14
- 0x20
- read-write
- 0x00000000
-
-
- IOFF
- Data offset for injected channel
- x
- 0
- 12
-
-
-
-
- IOFF1
- IOFF1
- Inserted channel data offset register
- 1
- 0x18
- 0x20
- read-write
- 0x00000000
-
-
- IOFF
- Data offset for injected channel
- x
- 0
- 12
-
-
-
-
- IOFF2
- IOFF2
- Inserted channel data offset register
- 2
- 0x1C
- 0x20
- read-write
- 0x00000000
-
-
- IOFF
- Data offset for injected channel
- x
- 0
- 12
-
-
-
-
- IOFF3
- IOFF3
- Inserted channel data offset register
- 3
- 0x20
- 0x20
- read-write
- 0x00000000
-
-
- IOFF
- Data offset for injected channel
- x
- 0
- 12
-
-
-
-
- WDHT
- WDHT
- watchdog higher threshold
- register
- 0x24
- 0x20
- read-write
- 0x00000FFF
-
-
- WDHT
- Analog watchdog high
- threshold
- 0
- 12
-
-
-
-
- WDLT
- WDLT
- watchdog low threshold
- register
- 0x28
- 0x20
- read-write
- 0x00000000
-
-
- WDLT
- Analog watchdog lower
- threshold
- 0
- 12
-
-
-
-
- RSQ0
- RSQ0
- regular sequence register 0
- 0x2C
- 0x20
- read-write
- 0x00000000
-
-
- RL
- Regular channel sequence
- length
- 20
- 4
-
-
- RSQ15
- 15th conversion in regular
- sequence
- 15
- 5
-
-
- RSQ14
- 14th conversion in regular
- sequence
- 10
- 5
-
-
- RSQ13
- 13th conversion in regular
- sequence
- 5
- 5
-
-
- RSQ12
- 12th conversion in regular
- sequence
- 0
- 5
-
-
-
-
- RSQ1
- RSQ1
- regular sequence register 1
- 0x30
- 0x20
- read-write
- 0x00000000
-
-
- RSQ11
- 11th conversion in regular
- sequence
- 25
- 5
-
-
- RSQ10
- 10th conversion in regular
- sequence
- 20
- 5
-
-
- RSQ9
- 9th conversion in regular
- sequence
- 15
- 5
-
-
- RSQ8
- 8th conversion in regular
- sequence
- 10
- 5
-
-
- RSQ7
- 7th conversion in regular
- sequence
- 5
- 5
-
-
- RSQ6
- 6th conversion in regular
- sequence
- 0
- 5
-
-
-
-
- RSQ2
- RSQ2
- regular sequence register 2
- 0x34
- 0x20
- read-write
- 0x00000000
-
-
- RSQ5
- 5th conversion in regular
- sequence
- 25
- 5
-
-
- RSQ4
- 4th conversion in regular
- sequence
- 20
- 5
-
-
- RSQ3
- 3rd conversion in regular
- sequence
- 15
- 5
-
-
- RSQ2
- 2nd conversion in regular
- sequence
- 10
- 5
-
-
- RSQ1
- 1st conversion in regular
- sequence
- 5
- 5
-
-
- RSQ0
- conversion in regular
- sequence
- 0
- 5
-
-
-
-
- ISQ
- ISQ
- injected sequence register
- 0x38
- 0x20
- read-write
- 0x00000000
-
-
- IL
- Injected sequence length
- 20
- 2
-
-
- ISQ3
- 3rd conversion in injected
- sequence
- 15
- 5
-
-
- ISQ2
- 2nd conversion in injected
- sequence
- 10
- 5
-
-
- ISQ1
- 1st conversion in injected
- sequence
- 5
- 5
-
-
- ISQ0
- conversion in injected
- sequence
- 0
- 5
-
-
-
-
- IDATA0
- IDATA0
- injected data register 0
- 0x3C
- 0x20
- read-only
- 0x00000000
-
-
- IDATAn
- Injected data
- 0
- 16
-
-
-
-
- IDATA1
- IDATA1
- injected data register 1
- 0x40
- 0x20
- read-only
- 0x00000000
-
-
- IDATAn
- Injected data
- 0
- 16
-
-
-
-
- IDATA2
- IDATA2
- injected data register 2
- 0x44
- 0x20
- read-only
- 0x00000000
-
-
- IDATAn
- Injected data
- 0
- 16
-
-
-
-
- IDATA3
- IDATA3
- injected data register 3
- 0x48
- 0x20
- read-only
- 0x00000000
-
-
- IDATAn
- Injected data
- 0
- 16
-
-
-
-
- RDATA
- RDATA
- regular data register
- 0x4C
- 0x20
- read-only
- 0x00000000
-
-
- RDATA
- Regular data
- 0
- 16
-
-
-
-
- OVSAMPCTL
- OVSAMPCTL
- ADC oversample control register
- 0x80
- 0x20
- read-write
- 0x00000000
-
-
- TOVS
- Triggered Oversampling
- 9
- 1
-
-
- OVSS
- Oversampling shift
- 5
- 4
-
-
- OVSR
- Oversampling ratio
- 2
- 3
-
-
- OVSEN
- Oversampler Enable
- 0
- 1
-
-
-
-
-
-
- CMP
- Comparator
- Comparator
- 0x4001001C
-
- 0x0
- 0x80
- registers
-
-
-
- CS
- CS
- control and status register
- 0x00
- 0x20
- 0x00000000
-
-
- CMPEN
- Comparator enable
- 0
- 1
- read-write
-
-
- CMPSW
- Comparator switch
- 1
- 1
- read-write
-
-
- CMPM
- Comparator mode
- 2
- 2
- read-write
-
-
- CMPMSEL
- Comparator input selection
- 4
- 3
- read-write
-
-
- CMPOSEL
- Comparator output selection
- 8
- 3
- read-write
-
-
- CMPPL
- Polarity of comparator output
- 11
- 1
- read-write
-
-
- CMPHST
- Comparator hysteresis
- 12
- 2
- read-write
-
-
- CMPO
- Comparator 0 output
- 14
- 1
- read-only
-
-
- CMPLK
- Comparator 0 lock
- 15
- 1
- read-write
-
-
-
-
-
-
- CRC
- cyclic redundancy check calculation unit
- CRC
- 0x40023000
-
- 0x0
- 0x400
- registers
-
-
-
- DATA
- DATA
- Data register
- 0x0
- 0x20
- read-write
- 0xFFFFFFFF
-
-
- DATA
- CRC calculation result bits
- 0
- 32
-
-
-
-
- FDATA
- FDATA
- Free data register
- 0x04
- 0x20
- read-write
- 0x00000000
-
-
- FDATA
- General-purpose 8-bit data register
- bits
- 0
- 8
-
-
-
-
- CTL
- CTL
- Control register
- 0x8
- 0x20
- read-write
- 0x00000000
-
-
- RST
- reset bit
- 0
- 1
-
-
- PS
- Size of polynomial
- 3
- 2
-
-
- REV_I
- Reverse input data
- 5
- 2
-
-
- REV_O
- Reverse output data
- 7
- 1
-
-
-
-
- IDATA
- IDATA
- Initialization Data Register
- 0x10
- 0x20
- read-write
- 0xFFFFFFFF
-
-
- IDATA
- CRC calculation initial value
- 0
- 32
-
-
-
-
- POLY
- POLY
- Polynomial register
- 0x14
- 0x20
- read-write
- 0x04C11DB7
-
-
- POLY
- User configurable polynomial value
- 0
- 32
-
-
-
-
-
-
- DBGMCU
- Debug support
- DBGMCU
- 0x40015800
-
- 0x0
- 0x400
- registers
-
-
-
- ID
- ID
- MCU Device ID Code Register
- 0x0
- 0x20
- read-only
- 0x0
-
-
- ID_CODE
- DBG ID code register
- 0
- 32
-
-
-
-
- CTL0
- CTL0
- Debug Control Register 0
- 0x4
- 0x20
- read-write
- 0x0
-
-
- SLP_HOLD
- Sleep mode hold register
- 0
- 1
-
-
- DSLP_HOLD
- DEEPSLEEP mode hold Mode
- 1
- 1
-
-
- STB_HOLD
- Standby mode hold Mode
- 2
- 1
-
-
- FWDGT_HOLD
- FWDGT hold register
- 8
- 1
-
-
- WWDGT_HOLD
- WWDGT hold register
- 9
- 1
-
-
- TIMER0_HOLD
- Timer 0 hold register
- 10
- 1
-
-
- TIMER2_HOLD
- Timer 2 hold register
- 12
- 1
-
-
- I2C0_HOLD
- I2C0 hold register
- 15
- 1
-
-
- I2C1_HOLD
- I2C1 hold register
- 16
- 1
-
-
- TIMER5_HOLD
- Timer 5 hold register
- 19
- 1
-
-
- TIMER13_HOLD
- Timer 13 hold register
- 27
- 1
-
-
-
-
- CTL1
- CTL1
- Debug Control Register 1
- 0x08
- 0x20
- read-write
- 0x00000000
-
-
- RTC_HOLD
- RTC hold register
- 10
- 1
-
-
- TIMER14_HOLD
- Timer 14 hold register
- 16
- 1
-
-
- TIMER15_HOLD
- Timer 15 hold register
- 17
- 1
-
-
- TIMER16_HOLD
- Timer 16 hold register
- 18
- 1
-
-
-
-
-
-
- DMA
- DMA controller
- DMA
- 0x40020000
-
- 0x0
- 0x400
- registers
-
-
- DMA_Channel0
- 9
-
-
- DMA_Channel1_2
- 10
-
-
- DMA_Channel3_4
- 11
-
-
-
- INTF
- INTF
- DMA interrupt flag register
- (DMA_INTF)
- 0x0
- 0x20
- read-only
- 0x00000000
-
-
- GIF0
- Channel 0 Global interrupt
- flag
- 0
- 1
-
-
- FTFIF0
- Channel 0 Full Transfer Finish
- flag
- 1
- 1
-
-
- HTFIF0
- Channel 0 Half Transfer Finish
- flag
- 2
- 1
-
-
- ERRIF0
- Channel 0 Error flag
- 3
- 1
-
-
- GIF1
- Channel 1 Global interrupt
- flag
- 4
- 1
-
-
- FTFIF1
- Channel 1 Full Transfer Finish
- flag
- 5
- 1
-
-
- HTFIF1
- Channel 1 Half Transfer Finish
- flag
- 6
- 1
-
-
- ERRIF1
- Channel 1 Error flag
- 7
- 1
-
-
- GIF2
- Channel 2 Global interrupt
- flag
- 8
- 1
-
-
- FTFIF2
- Channel 2 Full Transfer Finish
- flag
- 9
- 1
-
-
- HTFIF2
- Channel 2 Half Transfer Finish
- flag
- 10
- 1
-
-
- ERRIF2
- Channel 2 Error
- flag
- 11
- 1
-
-
- GIF3
- Channel 3 Global interrupt
- flag
- 12
- 1
-
-
- FTFIF3
- Channel 3 Full Transfer Finish
- flag
- 13
- 1
-
-
- HTFIF3
- Channel 3 Half Transfer Finish
- flag
- 14
- 1
-
-
- ERRIF3
- Channel 3 Error
- flag
- 15
- 1
-
-
- GIF4
- Channel 4 Global interrupt
- flag
- 16
- 1
-
-
- FTFIF4
- Channel 4 Full Transfer Finish
- flag
- 17
- 1
-
-
- HTFIF4
- Channel 4 Half Transfer Finish
- flag
- 18
- 1
-
-
- ERRIF4
- Channel 4 Error
- flag
- 19
- 1
-
-
-
-
- INTC
- INTC
- DMA interrupt flag clear register
- (DMA_INTC)
- 0x4
- 0x20
- write-only
- 0x00000000
-
-
- GIFC0
- Channel 0 Global interrupt flag
- clear
- 0
- 1
-
-
- GIFC1
- Channel 1 Global interrupt flag
- clear
- 4
- 1
-
-
- GIFC2
- Channel 2 Global interrupt flag
- clear
- 8
- 1
-
-
- GIFC3
- Channel 3 Global interrupt flag
- clear
- 12
- 1
-
-
- GIFC4
- Channel 4 Global interrupt flag
- clear
- 16
- 1
-
-
- FTFIFC0
- Channel 0 Full Transfer Finish
- clear
- 1
- 1
-
-
- FTFIFC1
- Channel 1 Full Transfer Finish
- clear
- 5
- 1
-
-
- FTFIFC2
- Channel 2 Full Transfer Finish
- clear
- 9
- 1
-
-
- FTFIFC3
- Channel 3 Full Transfer Finish
- clear
- 13
- 1
-
-
- FTFIFC4
- Channel 4 Full Transfer Finish
- clear
- 17
- 1
-
-
- HTFIFC0
- Channel 0 Half Transfer
- clear
- 2
- 1
-
-
- HTFIFC1
- Channel 1 Half Transfer
- clear
- 6
- 1
-
-
- HTFIFC2
- Channel 2 Half Transfer
- clear
- 10
- 1
-
-
- HTFIFC3
- Channel 3 Half Transfer
- clear
- 14
- 1
-
-
- HTFIFC4
- Channel 4 Half Transfer
- clear
- 18
- 1
-
-
- ERRIFC0
- Channel 0 Error
- clear
- 3
- 1
-
-
- ERRIFC1
- Channel 1 Error
- clear
- 7
- 1
-
-
- ERRIFC2
- Channel 2 Error
- clear
- 11
- 1
-
-
- ERRIFC3
- Channel 3 Error
- clear
- 15
- 1
-
-
- ERRIFC4
- Channel 4 Error
- clear
- 19
- 1
-
-
-
-
- CH0CTL
- CH0CTL
- DMA channel configuration register
- (DMA_CH0CTL)
- 0x8
- 0x20
- read-write
- 0x00000000
-
-
- CHEN
- Channel enable
- 0
- 1
-
-
- FTFIE
- Full Transfer Finish interrupt
- enable
- 1
- 1
-
-
- HTFIE
- Half Transfer Finish interrupt
- enable
- 2
- 1
-
-
- ERRIE
- Transfer access error interrupt
- enable
- 3
- 1
-
-
- DIR
- Transfer direction
- 4
- 1
-
-
- CMEN
- Circular mode enable
- 5
- 1
-
-
- PNAGA
- Next address generation algorithm of peripheral
- 6
- 1
-
-
- MNAGA
- Next address generation algorithm of memory
- 7
- 1
-
-
- PWIDTH
- Transfer data size of peripheral
- 8
- 2
-
-
- MWIDTH
- Transfer data size of memory
- 10
- 2
-
-
- PRIO
- Priority Level of this channel
- 12
- 2
-
-
- M2M
- Memory to memory mode
- 14
- 1
-
-
-
-
- CH0CNT
- CH0CNT
- DMA channel 0 counter
- register
- 0x0C
- 0x20
- read-write
- 0x00000000
-
-
- CNT
- Transfer counter
- 0
- 16
-
-
-
-
- CH0PADDR
- CH0PADDR
- DMA channel 0 peripheral base address
- register
- 0x10
- 0x20
- read-write
- 0x00000000
-
-
- PADDR
- Peripheral base address
- 0
- 32
-
-
-
-
- CH0MADDR
- CH0MADDR
- DMA channel 0 memory base address
- register
- 0x14
- 0x20
- read-write
- 0x00000000
-
-
- MADDR
- Memory address
- 0
- 32
-
-
-
-
- CH1CTL
- CH1CTL
- DMA channel configuration register
- (DMA_CH1CTL)
- 0x1C
- 0x20
- read-write
- 0x00000000
-
-
- CHEN
- Channel enable
- 0
- 1
-
-
- FTFIE
- Full Transfer Finish interrupt
- enable
- 1
- 1
-
-
- HTFIE
- Half Transfer Finish interrupt
- enable
- 2
- 1
-
-
- ERRIE
- Error interrupt
- enable
- 3
- 1
-
-
- DIR
- Transfer direction
- 4
- 1
-
-
- CMEN
- Circular mode enable
- 5
- 1
-
-
- PNAGA
- Next address generation algorithm of peripheral
- 6
- 1
-
-
- MNAGA
- Next address generation algorithm of memory
- 7
- 1
-
-
- PWIDTH
- Transfer data size of peripheral
- 8
- 2
-
-
- MWIDTH
- Transfer data size of memory
- 10
- 2
-
-
- PRIO
- Priority Level of this channel
- 12
- 2
-
-
- M2M
- Memory to memory mode
- 14
- 1
-
-
-
-
- CH1CNT
- CH1CNT
- DMA channel 1 counter
- register
- 0x20
- 0x20
- read-write
- 0x00000000
-
-
- CNT
- Transfer counter
- 0
- 16
-
-
-
-
-
- CH1PADDR
- CH1PADDR
- DMA channel 1 peripheral base address
- register
- 0x24
- 0x20
- read-write
- 0x00000000
-
-
- PADDR
- Peripheral base address
- 0
- 32
-
-
-
-
- CH1MADDR
- CH1MADDR
- DMA channel 1 memory base address
- register
- 0x28
- 0x20
- read-write
- 0x00000000
-
-
- MADDR
- Memory address
- 0
- 32
-
-
-
-
- CH2CTL
- CH2CTL
- DMA channel configuration register
- (DMA_CH2CTL)
- 0x30
- 0x20
- read-write
- 0x00000000
-
-
- CHEN
- Channel enable
- 0
- 1
-
-
- FTFIE
- Full Transfer Finish interrupt
- enable
- 1
- 1
-
-
- HTFIE
- Half Transfer Finish interrupt
- enable
- 2
- 1
-
-
- ERRIE
- Error interrupt
- enable
- 3
- 1
-
-
- DIR
- Transfer direction
- 4
- 1
-
-
- CMEN
- Circular mode enable
- 5
- 1
-
-
- PNAGA
- Next address generation algorithm of peripheral
- 6
- 1
-
-
- MNAGA
- Next address generation algorithm of memory
- 7
- 1
-
-
- PWIDTH
- Transfer data size of peripheral
- 8
- 2
-
-
- MWIDTH
- Transfer data size of memory
- 10
- 2
-
-
- PRIO
- Priority Level of this channel
- 12
- 2
-
-
- M2M
- Memory to memory mode
- 14
- 1
-
-
-
-
- CH2CNT
- CH2CNT
- DMA channel 2 counter
- register
- 0x34
- 0x20
- read-write
- 0x00000000
-
-
- CNT
- Transfer counter
- 0
- 16
-
-
-
-
-
- CH2PADDR
- CH2PADDR
- DMA channel 2 peripheral base address
- register
- 0x38
- 0x20
- read-write
- 0x00000000
-
-
- PADDR
- Peripheral base address
- 0
- 32
-
-
-
-
- CH2MADDR
- CH2MADDR
- DMA channel 2 memory base address
- register
- 0x3C
- 0x20
- read-write
- 0x00000000
-
-
- MADDR
- Memory address
- 0
- 32
-
-
-
-
- CH3CTL
- CH3CTL
- DMA channel configuration register
- (DMA_CH3CTL)
- 0x44
- 0x20
- read-write
- 0x00000000
-
-
- CHEN
- Channel enable
- 0
- 1
-
-
- FTFIE
- Full Transfer Finish interrupt
- enable
- 1
- 1
-
-
- HTFIE
- Half Transfer Finish interrupt
- enable
- 2
- 1
-
-
- ERRIE
- Error interrupt
- enable
- 3
- 1
-
-
- DIR
- Transfer direction
- 4
- 1
-
-
- CMEN
- Circular mode enable
- 5
- 1
-
-
- PNAGA
- Next address generation algorithm of peripheral
- 6
- 1
-
-
- MNAGA
- Next address generation algorithm of memory
- 7
- 1
-
-
- PWIDTH
- Transfer data size of peripheral
- 8
- 2
-
-
- MWIDTH
- Transfer data size of memory
- 10
- 2
-
-
- PRIO
- Priority Level of this channel
- 12
- 2
-
-
- M2M
- Memory to memory mode
- 14
- 1
-
-
-
-
- CH3CNT
- CH3CNT
- DMA channel 3 counter
- register
- 0x48
- 0x20
- read-write
- 0x00000000
-
-
- CNT
- Transfer counter
- 0
- 16
-
-
-
-
- CH3PADDR
- CH3PADDR
- DMA channel 3 peripheral base address
- register
- 0x4C
- 0x20
- read-write
- 0x00000000
-
-
- PADDR
- Peripheral base address
- 0
- 32
-
-
-
-
- CH3MADDR
- CH3MADDR
- DMA channel 3 memory base address
- register
- 0x50
- 0x20
- read-write
- 0x00000000
-
-
- MADDR
- Memory address
- 0
- 32
-
-
-
-
- CH4CTL
- CH4CTL
- DMA channel configuration register
- (DMA_CH4CTL)
- 0x58
- 0x20
- read-write
- 0x00000000
-
-
- CHEN
- Channel enable
- 0
- 1
-
-
- FTFIE
- Full Transfer Finish interrupt
- enable
- 1
- 1
-
-
- HTFIE
- Half Transfer Finish interrupt
- enable
- 2
- 1
-
-
- ERRIE
- Error interrupt
- enable
- 3
- 1
-
-
- DIR
- Transfer direction
- 4
- 1
-
-
- CMEN
- Circular mode enable
- 5
- 1
-
-
- PNAGA
- Next address generation algorithm of peripheral
- 6
- 1
-
-
- MNAGA
- Next address generation algorithm of memory
- 7
- 1
-
-
- PWIDTH
- Transfer data size of peripheral
- 8
- 2
-
-
- MWIDTH
- Transfer data size of memory
- 10
- 2
-
-
- PRIO
- Priority Level of this channel
- 12
- 2
-
-
- M2M
- Memory to memory mode
- 14
- 1
-
-
-
-
- CH4CNT
- CH4CNT
- DMA channel 4 counter
- register
- 0x5C
- 0x20
- read-write
- 0x00000000
-
-
- CNT
- Transfer counter
- 0
- 16
-
-
-
-
- CH4PADDR
- CH4PADDR
- DMA channel 4 peripheral base address
- register
- 0x60
- 0x20
- read-write
- 0x00000000
-
-
- PADDR
- Peripheral base address
- 0
- 32
-
-
-
-
- CH4MADDR
- CH4MADDR
- DMA channel 4 memory base address
- register
- 0x64
- 0x20
- read-write
- 0x00000000
-
-
- MADDR
- Memory address
- 0
- 32
-
-
-
-
-
-
- EXTI
- External interrupt/event
- controller
- EXTI
- 0x40010400
-
- 0x0
- 0x400
- registers
-
-
- LVD
- 1
-
-
- EXTI0_1
- 5
-
-
- EXTI2_3
- 6
-
-
- EXTI4_15
- 7
-
-
-
- INTEN
- INTEN
- Interrupt enable register
- (EXTI_INTEN)
- 0x0
- 0x20
- read-write
- 0x0F940000
-
-
- INTEN0
- Enable Interrupt on line 0
- 0
- 1
-
-
- INTEN1
- Enable Interrupt on line 1
- 1
- 1
-
-
- INTEN2
- Enable Interrupt on line 2
- 2
- 1
-
-
- INTEN3
- Enable Interrupt on line 3
- 3
- 1
-
-
- INTEN4
- Enable Interrupt on line 4
- 4
- 1
-
-
- INTEN5
- Enable Interrupt on line 5
- 5
- 1
-
-
- INTEN6
- Enable Interrupt on line 6
- 6
- 1
-
-
- INTEN7
- Enable Interrupt on line 7
- 7
- 1
-
-
- INTEN8
- Enable Interrupt on line 8
- 8
- 1
-
-
- INTEN9
- Enable Interrupt on line 9
- 9
- 1
-
-
- INTEN10
- Enable Interrupt on line 10
- 10
- 1
-
-
- INTEN11
- Enable Interrupt on line 11
- 11
- 1
-
-
- INTEN12
- Enable Interrupt on line 12
- 12
- 1
-
-
- INTEN13
- Enable Interrupt on line 13
- 13
- 1
-
-
- INTEN14
- Enable Interrupt on line 14
- 14
- 1
-
-
- INTEN15
- Enable Interrupt on line 15
- 15
- 1
-
-
- INTEN16
- Enable Interrupt on line 16
- 16
- 1
-
-
- INTEN17
- Enable Interrupt on line 17
- 17
- 1
-
-
- INTEN18
- Enable Interrupt on line 18
- 18
- 1
-
-
- INTEN19
- Enable Interrupt on line 19
- 19
- 1
-
-
- INTEN20
- Enable Interrupt on line 20
- 20
- 1
-
-
- INTEN21
- Enable Interrupt on line 21
- 21
- 1
-
-
- INTEN22
- Enable Interrupt on line 22
- 22
- 1
-
-
- INTEN23
- Enable Interrupt on line 23
- 23
- 1
-
-
- INTEN24
- Enable Interrupt on line 24
- 24
- 1
-
-
- INTEN25
- Enable Interrupt on line 25
- 25
- 1
-
-
- INTEN26
- Enable Interrupt on line 26
- 26
- 1
-
-
- INTEN27
- Enable Interrupt on line 27
- 27
- 1
-
-
-
-
- EVEN
- EVEN
- Event enable register (EXTI_EVEN)
- 0x04
- 0x20
- read-write
- 0x00000000
-
-
- EVEN0
- Enable Event on line 0
- 0
- 1
-
-
- EVEN1
- Enable Event on line 1
- 1
- 1
-
-
- EVEN2
- Enable Event on line 2
- 2
- 1
-
-
- EVEN3
- Enable Event on line 3
- 3
- 1
-
-
- EVEN4
- Enable Event on line 4
- 4
- 1
-
-
- EVEN5
- Enable Event on line 5
- 5
- 1
-
-
- EVEN6
- Enable Event on line 6
- 6
- 1
-
-
- EVEN7
- Enable Event on line 7
- 7
- 1
-
-
- EVEN8
- Enable Event on line 8
- 8
- 1
-
-
- EVEN9
- Enable Event on line 9
- 9
- 1
-
-
- EVEN10
- Enable Event on line 10
- 10
- 1
-
-
- EVEN11
- Enable Event on line 11
- 11
- 1
-
-
- EVEN12
- Enable Event on line 12
- 12
- 1
-
-
- EVEN13
- Enable Event on line 13
- 13
- 1
-
-
- EVEN14
- Enable Event on line 14
- 14
- 1
-
-
- EVEN15
- Enable Event on line 15
- 15
- 1
-
-
- EVEN16
- Enable Event on line 16
- 16
- 1
-
-
- EVEN17
- Enable Event on line 17
- 17
- 1
-
-
- EVEN18
- Enable Event on line 18
- 18
- 1
-
-
- EVEN19
- Enable Event on line 19
- 19
- 1
-
-
- EVEN20
- Enable Event on line 20
- 20
- 1
-
-
- EVEN21
- Enable Event on line 21
- 21
- 1
-
-
- EVEN22
- Enable Event on line 22
- 22
- 1
-
-
- EVEN23
- Enable Event on line 23
- 23
- 1
-
-
- EVEN24
- Enable Event on line 24
- 24
- 1
-
-
- EVEN25
- Enable Event on line 25
- 25
- 1
-
-
- EVEN26
- Enable Event on line 26
- 26
- 1
-
-
- EVEN27
- Enable Event on line 27
- 27
- 1
-
-
-
-
- RTEN
- RTEN
- Rising Edge Trigger Enable register
- (EXTI_RTEN)
- 0x08
- 0x20
- read-write
- 0x00000000
-
-
- RTEN0
- Rising trigger event configuration of
- line 0
- 0
- 1
-
-
- RTEN1
- Rising trigger event configuration of
- line 1
- 1
- 1
-
-
- RTEN2
- Rising trigger event configuration of
- line 2
- 2
- 1
-
-
- RTEN3
- Rising trigger event configuration of
- line 3
- 3
- 1
-
-
- RTEN4
- Rising trigger event configuration of
- line 4
- 4
- 1
-
-
- RTEN5
- Rising trigger event configuration of
- line 5
- 5
- 1
-
-
- RTEN6
- Rising trigger event configuration of
- line 6
- 6
- 1
-
-
- RTEN7
- Rising trigger event configuration of
- line 7
- 7
- 1
-
-
- RTEN8
- Rising trigger event configuration of
- line 8
- 8
- 1
-
-
- RTEN9
- Rising trigger event configuration of
- line 9
- 9
- 1
-
-
- RTEN10
- Rising trigger event configuration of
- line 10
- 10
- 1
-
-
- RTEN11
- Rising trigger event configuration of
- line 11
- 11
- 1
-
-
- RTEN12
- Rising trigger event configuration of
- line 12
- 12
- 1
-
-
- RTEN13
- Rising trigger event configuration of
- line 13
- 13
- 1
-
-
- RTEN14
- Rising trigger event configuration of
- line 14
- 14
- 1
-
-
- RTEN15
- Rising trigger event configuration of
- line 15
- 15
- 1
-
-
- RTEN16
- Rising trigger event configuration of
- line 16
- 16
- 1
-
-
- RTEN17
- Rising trigger event configuration of
- line 17
- 17
- 1
-
-
- RTEN19
- Rising trigger event configuration of
- line 19
- 19
- 1
-
-
- RTEN21
- Rising trigger event configuration of
- line 21
- 21
- 1
-
-
-
-
- FTEN
- FTEN
- Falling Egde Trigger Enable register
- (EXTI_FTEN)
- 0x0C
- 0x20
- read-write
- 0x00000000
-
-
- FTEN0
- Falling trigger event configuration of
- line 0
- 0
- 1
-
-
- FTEN1
- Falling trigger event configuration of
- line 1
- 1
- 1
-
-
- FTEN2
- Falling trigger event configuration of
- line 2
- 2
- 1
-
-
- FTEN3
- Falling trigger event configuration of
- line 3
- 3
- 1
-
-
- FTEN4
- Falling trigger event configuration of
- line 4
- 4
- 1
-
-
- FTEN5
- Falling trigger event configuration of
- line 5
- 5
- 1
-
-
- FTEN6
- Falling trigger event configuration of
- line 6
- 6
- 1
-
-
- FTEN7
- Falling trigger event configuration of
- line 7
- 7
- 1
-
-
- FTEN8
- Falling trigger event configuration of
- line 8
- 8
- 1
-
-
- FTEN9
- Falling trigger event configuration of
- line 9
- 9
- 1
-
-
- FTEN10
- Falling trigger event configuration of
- line 10
- 10
- 1
-
-
- FTEN11
- Falling trigger event configuration of
- line 11
- 11
- 1
-
-
- FTEN12
- Falling trigger event configuration of
- line 12
- 12
- 1
-
-
- FTEN13
- Falling trigger event configuration of
- line 13
- 13
- 1
-
-
- FTEN14
- Falling trigger event configuration of
- line 14
- 14
- 1
-
-
- FTEN15
- Falling trigger event configuration of
- line 15
- 15
- 1
-
-
- FTEN16
- Falling trigger event configuration of
- line 16
- 16
- 1
-
-
- FTEN17
- Falling trigger event configuration of
- line 17
- 17
- 1
-
-
- FTEN19
- Falling trigger event configuration of
- line 19
- 19
- 1
-
-
- FTEN21
- Falling trigger event configuration of
- line 21
- 21
- 1
-
-
-
-
- SWIEV
- SWIEV
- Software interrupt event register
- (EXTI_SWIEV)
- 0x10
- 0x20
- read-write
- 0x00000000
-
-
- SWIEV0
- Software Interrupt on line
- 0
- 0
- 1
-
-
- SWIEV1
- Software Interrupt on line
- 1
- 1
- 1
-
-
- SWIEV2
- Software Interrupt on line
- 2
- 2
- 1
-
-
- SWIEV3
- Software Interrupt on line
- 3
- 3
- 1
-
-
- SWIEV4
- Software Interrupt on line
- 4
- 4
- 1
-
-
- SWIEV5
- Software Interrupt on line
- 5
- 5
- 1
-
-
- SWIEV6
- Software Interrupt on line
- 6
- 6
- 1
-
-
- SWIEV7
- Software Interrupt on line
- 7
- 7
- 1
-
-
- SWIEV8
- Software Interrupt on line
- 8
- 8
- 1
-
-
- SWIEV9
- Software Interrupt on line
- 9
- 9
- 1
-
-
- SWIEV10
- Software Interrupt on line
- 10
- 10
- 1
-
-
- SWIEV11
- Software Interrupt on line
- 11
- 11
- 1
-
-
- SWIEV12
- Software Interrupt on line
- 12
- 12
- 1
-
-
- SWIEV13
- Software Interrupt on line
- 13
- 13
- 1
-
-
- SWIEV14
- Software Interrupt on line
- 14
- 14
- 1
-
-
- SWIEV15
- Software Interrupt on line
- 15
- 15
- 1
-
-
- SWIEV16
- Software Interrupt on line
- 16
- 16
- 1
-
-
- SWIEV17
- Software Interrupt on line
- 17
- 17
- 1
-
-
- SWIEV19
- Software Interrupt on line
- 19
- 19
- 1
-
-
- SWIEV21
- Software Interrupt on line
- 21
- 21
- 1
-
-
-
-
- PD
- PD
- Pending register (EXTI_PD)
- 0x14
- 0x20
- read-write
- 0x00000000
-
-
- PD0
- Pending bit 0
- 0
- 1
-
-
- PD1
- Pending bit 1
- 1
- 1
-
-
- PD2
- Pending bit 2
- 2
- 1
-
-
- PD3
- Pending bit 3
- 3
- 1
-
-
- PD4
- Pending bit 4
- 4
- 1
-
-
- PD5
- Pending bit 5
- 5
- 1
-
-
- PD6
- Pending bit 6
- 6
- 1
-
-
- PD7
- Pending bit 7
- 7
- 1
-
-
- PD8
- Pending bit 8
- 8
- 1
-
-
- PD9
- Pending bit 9
- 9
- 1
-
-
- PD10
- Pending bit 10
- 10
- 1
-
-
- PD11
- Pending bit 11
- 11
- 1
-
-
- PD12
- Pending bit 12
- 12
- 1
-
-
- PD13
- Pending bit 13
- 13
- 1
-
-
- PD14
- Pending bit 14
- 14
- 1
-
-
- PD15
- Pending bit 15
- 15
- 1
-
-
- PD16
- Pending bit 16
- 16
- 1
-
-
- PD17
- Pending bit 17
- 17
- 1
-
-
- PD19
- Pending bit 19
- 19
- 1
-
-
- PD21
- Pending bit 21
- 21
- 1
-
-
-
-
-
-
- FMC
- FMC
- FMC
- 0x40022000
-
- 0x0
- 0x400
- registers
-
-
- FMC
- 3
-
-
-
- WS
- WS
- wait state register
- 0x0
- 0x20
- read-write
- 0x00000000
-
-
- WSCNT
- wait state counter register
- 0
- 3
-
-
- PFEN
- Pre-fetch enable
- 4
- 1
-
-
- PGW
- Program width to flash memory
- 15
- 1
-
-
-
-
- KEY
- KEY
- Unlock key register
- 0x04
- 0x20
- write-only
- 0x00000000
-
-
- KEY
- FMC_CTL unlock register
- 0
- 32
-
-
-
-
- OBKEY
- OBKEY
- Option byte unlock key register
- 0x08
- 0x20
- write-only
- 0x00000000
-
-
- OBKEY
- FMC_ CTL option bytes operation unlock register
- 0
- 32
-
-
-
-
- STAT
- STAT
- Status register
- 0x0C
- 0x20
- 0x00000000
-
-
- ENDF
- End of operation flag bit
- 5
- 1
- read-write
-
-
- WPERR
- Erase/Program protection error flag bit
- 4
- 1
- read-write
-
-
- PGAERR
- Program alignment error flag bit
- 3
- 1
- read-write
-
-
- PGERR
- Program error flag bit
- 2
- 1
- read-write
-
-
- BUSY
- The flash is busy bit
- 0
- 1
- read-only
-
-
-
-
- CTL
- CTL
- Control register
- 0x10
- 0x20
- read-write
- 0x00000080
-
-
- OBRLD
- Option byte reload bit
- 13
- 1
-
-
- ENDIE
- End of operation interrupt enable bit
- 12
- 1
-
-
- ERRIE
- Error interrupt enable bit
- 10
- 1
-
-
- OBWEN
- Option byte erase/program enable bit
- 9
- 1
-
-
- LK
- FMC_CTL lock bit
- 7
- 1
-
-
- START
- Send erase command to FMC bit
- 6
- 1
-
-
- OBER
- Option bytes erase command bit
- 5
- 1
-
-
- OBPG
- Option bytes program command bit
- 4
- 1
-
-
- MER
- Main flash mass erase for bank0 command bit
- 2
- 1
-
-
- PER
- Main flash page erase for bank0 command bit
- 1
- 1
-
-
- PG
- Main flash program for bank0 command bit
- 0
- 1
-
-
-
-
- ADDR
- ADDR
- Address register
- 0x14
- 0x20
- read-write
- 0x00000000
-
-
- ADDR
- Flash erase/program command address bits
- 0
- 32
-
-
-
-
- OBSTAT
- OBSTAT
- Option byte control register
- 0x1C
- 0x20
- read-only
- 0x00000000
-
-
- OBERR
- Option bytes read error bit
- 0
- 1
-
-
- PLEVEL
- Option bytes security protection level
- 1
- 2
-
-
- USER
- Store USER of option bytes block after system reset
- 8
- 8
-
-
- DATA
- Store DATA[15:0] of option bytes block after system reset
- 16
- 16
-
-
-
-
- WP
- WP
- Erase/Program Protection register
- 0x20
- 0x20
- read-only
- 0x00000000
-
-
- WP
- Store WP[15:0] of option bytes block after system reset
- 0
- 16
-
-
-
-
- PID
- PID
- Product ID register
- 0x100
- 0x20
- read-only
- 0x00000000
-
-
- PID
- Product reserved ID code register
- 0
- 32
-
-
-
-
-
-
- FWDGT
- free watchdog timer
- FWDGT
- 0x40003000
-
- 0x0
- 0x400
- registers
-
-
-
- CTL
- CTL
- Control register
- 0x00
- 0x20
- write-only
- 0x00000000
-
-
- CMD
- Key value
- 0
- 16
-
-
-
-
- PSC
- PSC
- Prescaler register
- 0x04
- 0x20
- read-write
- 0x00000000
-
-
- PSC
- Prescaler divider
- 0
- 3
-
-
-
-
- RLD
- RLD
- Reload register
- 0x08
- 0x20
- read-write
- 0x00000FFF
-
-
- RLD
- Watchdog counter reload
- value
- 0
- 12
-
-
-
-
- STAT
- STAT
- Status register
- 0x0C
- 0x20
- read-only
- 0x00000000
-
-
- PUD
- Watchdog prescaler value
- update
- 0
- 1
-
-
- RUD
- Watchdog counter reload value
- update
- 1
- 1
-
-
- WUD
- Watchdog counter window value
- update
- 2
- 1
-
-
-
-
- WND
- WND
- Window register
- 0x10
- 0x20
- read-write
- 0x00000FFF
-
-
- WND
- Watchdog counter window
- value
- 0
- 12
-
-
-
-
-
-
- GPIOA
- General-purpose I/Os
- GPIO
- 0x48000000
-
- 0x0
- 0x400
- registers
-
-
-
- CTL
- CTL
- GPIO port control register
- 0x0
- 0x20
- read-write
- 0x28000000
-
-
- CTL15
- Port x configuration bits (y =
- 0..15)
- 30
- 2
-
-
- CTL14
- Port x configuration bits (y =
- 0..15)
- 28
- 2
-
-
- CTL13
- Port x configuration bits (y =
- 0..15)
- 26
- 2
-
-
- CTL12
- Port x configuration bits (y =
- 0..15)
- 24
- 2
-
-
- CTL11
- Port x configuration bits (y =
- 0..15)
- 22
- 2
-
-
- CTL10
- Port x configuration bits (y =
- 0..15)
- 20
- 2
-
-
- CTL9
- Port x configuration bits (y =
- 0..15)
- 18
- 2
-
-
- CTL8
- Port x configuration bits (y =
- 0..15)
- 16
- 2
-
-
- CTL7
- Port x configuration bits (y =
- 0..15)
- 14
- 2
-
-
- CTL6
- Port x configuration bits (y =
- 0..15)
- 12
- 2
-
-
- CTL5
- Port x configuration bits (y =
- 0..15)
- 10
- 2
-
-
- CTL4
- Port x configuration bits (y =
- 0..15)
- 8
- 2
-
-
- CTL3
- Port x configuration bits (y =
- 0..15)
- 6
- 2
-
-
- CTL2
- Port x configuration bits (y =
- 0..15)
- 4
- 2
-
-
- CTL1
- Port x configuration bits (y =
- 0..15)
- 2
- 2
-
-
- CTL0
- Port x configuration bits (y =
- 0..15)
- 0
- 2
-
-
-
-
- OMODE
- OMODE
- GPIO port output type register
- 0x04
- 0x20
- read-write
- 0x00000000
-
-
- OM15
- Port x configuration bit
- 15
- 15
- 1
-
-
- OM14
- Port x configuration bit
- 14
- 14
- 1
-
-
- OM13
- Port x configuration bit
- 13
- 13
- 1
-
-
- OM12
- Port x configuration bit
- 12
- 12
- 1
-
-
- OM11
- Port x configuration bit
- 11
- 11
- 1
-
-
- OM10
- Port x configuration bit
- 10
- 10
- 1
-
-
- OM9
- Port x configuration bit 9
- 9
- 1
-
-
- OM8
- Port x configuration bit 8
- 8
- 1
-
-
- OM7
- Port x configuration bit 7
- 7
- 1
-
-
- OM6
- Port x configuration bit 6
- 6
- 1
-
-
- OM5
- Port x configuration bit 5
- 5
- 1
-
-
- OM4
- Port x configuration bit 4
- 4
- 1
-
-
- OM3
- Port x configuration bit 3
- 3
- 1
-
-
- OM2
- Port x configuration bit 2
- 2
- 1
-
-
- OM1
- Port x configuration bit 1
- 1
- 1
-
-
- OM0
- Port x configuration bit 0
- 0
- 1
-
-
-
-
- OSPD
- OSPD
- GPIO port output speed
- register
- 0x08
- 0x20
- read-write
- 0x0C000000
-
-
- OSPD15
- Port x configuration bits (y =
- 0..15)
- 30
- 2
-
-
- OSPD14
- Port x configuration bits (y =
- 0..15)
- 28
- 2
-
-
- OSPD13
- Port x configuration bits (y =
- 0..15)
- 26
- 2
-
-
- OSPD12
- Port x configuration bits (y =
- 0..15)
- 24
- 2
-
-
- OSPD11
- Port x configuration bits (y =
- 0..15)
- 22
- 2
-
-
- OSPD10
- Port x configuration bits (y =
- 0..15)
- 20
- 2
-
-
- OSPD9
- Port x configuration bits (y =
- 0..15)
- 18
- 2
-
-
- OSPD8
- Port x configuration bits (y =
- 0..15)
- 16
- 2
-
-
- OSPD7
- Port x configuration bits (y =
- 0..15)
- 14
- 2
-
-
- OSPD6
- Port x configuration bits (y =
- 0..15)
- 12
- 2
-
-
- OSPD5
- Port x configuration bits (y =
- 0..15)
- 10
- 2
-
-
- OSPD4
- Port x configuration bits (y =
- 0..15)
- 8
- 2
-
-
- OSPD3
- Port x configuration bits (y =
- 0..15)
- 6
- 2
-
-
- OSPD2
- Port x configuration bits (y =
- 0..15)
- 4
- 2
-
-
- OSPD1
- Port x configuration bits (y =
- 0..15)
- 2
- 2
-
-
- OSPD0
- Port x configuration bits (y =
- 0..15)
- 0
- 2
-
-
-
-
- PUD
- PUD
- GPIO port pull-up/pull-down
- register
- 0x0C
- 0x20
- read-write
- 0x24000000
-
-
- PUD15
- Port x configuration bits (y =
- 0..15)
- 30
- 2
-
-
- PUD14
- Port x configuration bits (y =
- 0..15)
- 28
- 2
-
-
- PUD13
- Port x configuration bits (y =
- 0..15)
- 26
- 2
-
-
- PUD12
- Port x configuration bits (y =
- 0..15)
- 24
- 2
-
-
- PUD11
- Port x configuration bits (y =
- 0..15)
- 22
- 2
-
-
- PUD10
- Port x configuration bits (y =
- 0..15)
- 20
- 2
-
-
- PUD9
- Port x configuration bits (y =
- 0..15)
- 18
- 2
-
-
- PUD8
- Port x configuration bits (y =
- 0..15)
- 16
- 2
-
-
- PUD7
- Port x configuration bits (y =
- 0..15)
- 14
- 2
-
-
- PUD6
- Port x configuration bits (y =
- 0..15)
- 12
- 2
-
-
- PUD5
- Port x configuration bits (y =
- 0..15)
- 10
- 2
-
-
- PUD4
- Port x configuration bits (y =
- 0..15)
- 8
- 2
-
-
- PUD3
- Port x configuration bits (y =
- 0..15)
- 6
- 2
-
-
- PUD2
- Port x configuration bits (y =
- 0..15)
- 4
- 2
-
-
- PUD1
- Port x configuration bits (y =
- 0..15)
- 2
- 2
-
-
- PUD0
- Port x configuration bits (y =
- 0..15)
- 0
- 2
-
-
-
-
- ISTAT
- ISTAT
- GPIO port input data register
- 0x10
- 0x20
- read-only
- 0x00000000
-
-
- ISTAT15
- Port input data (y =
- 0..15)
- 15
- 1
-
-
- ISTAT14
- Port input data (y =
- 0..15)
- 14
- 1
-
-
- ISTAT13
- Port input data (y =
- 0..15)
- 13
- 1
-
-
- ISTAT12
- Port input data (y =
- 0..15)
- 12
- 1
-
-
- ISTAT11
- Port input data (y =
- 0..15)
- 11
- 1
-
-
- ISTAT10
- Port input data (y =
- 0..15)
- 10
- 1
-
-
- ISTAT9
- Port input data (y =
- 0..15)
- 9
- 1
-
-
- ISTAT8
- Port input data (y =
- 0..15)
- 8
- 1
-
-
- ISTAT7
- Port input data (y =
- 0..15)
- 7
- 1
-
-
- ISTAT6
- Port input data (y =
- 0..15)
- 6
- 1
-
-
- ISTAT5
- Port input data (y =
- 0..15)
- 5
- 1
-
-
- ISTAT4
- Port input data (y =
- 0..15)
- 4
- 1
-
-
- ISTAT3
- Port input data (y =
- 0..15)
- 3
- 1
-
-
- ISTAT2
- Port input data (y =
- 0..15)
- 2
- 1
-
-
- ISTAT1
- Port input data (y =
- 0..15)
- 1
- 1
-
-
- ISTAT0
- Port input data (y =
- 0..15)
- 0
- 1
-
-
-
-
- OCTL
- OCTL
- GPIO port output data register
- 0x14
- 0x20
- read-write
- 0x00000000
-
-
- OCTL15
- Port output data (y =
- 0..15)
- 15
- 1
-
-
- OCTL14
- Port output data (y =
- 0..15)
- 14
- 1
-
-
- OCTL13
- Port output data (y =
- 0..15)
- 13
- 1
-
-
- OCTL12
- Port output data (y =
- 0..15)
- 12
- 1
-
-
- OCTL11
- Port output data (y =
- 0..15)
- 11
- 1
-
-
- OCTL10
- Port output data (y =
- 0..15)
- 10
- 1
-
-
- OCTL9
- Port output data (y =
- 0..15)
- 9
- 1
-
-
- OCTL8
- Port output data (y =
- 0..15)
- 8
- 1
-
-
- OCTL7
- Port output data (y =
- 0..15)
- 7
- 1
-
-
- OCTL6
- Port output data (y =
- 0..15)
- 6
- 1
-
-
- OCTL5
- Port output data (y =
- 0..15)
- 5
- 1
-
-
- OCTL4
- Port output data (y =
- 0..15)
- 4
- 1
-
-
- OCTL3
- Port output data (y =
- 0..15)
- 3
- 1
-
-
- OCTL2
- Port output data (y =
- 0..15)
- 2
- 1
-
-
- OCTL1
- Port output data (y =
- 0..15)
- 1
- 1
-
-
- OCTL0
- Port output data (y =
- 0..15)
- 0
- 1
-
-
-
-
- BOP
- BOP
- GPIO port bit set/reset
- register
- 0x18
- 0x20
- write-only
- 0x00000000
-
-
- CR15
- Port x reset bit y (y =
- 0..15)
- 31
- 1
-
-
- CR14
- Port x reset bit y (y =
- 0..15)
- 30
- 1
-
-
- CR13
- Port x reset bit y (y =
- 0..15)
- 29
- 1
-
-
- CR12
- Port x reset bit y (y =
- 0..15)
- 28
- 1
-
-
- CR11
- Port x reset bit y (y =
- 0..15)
- 27
- 1
-
-
- CR10
- Port x reset bit y (y =
- 0..15)
- 26
- 1
-
-
- CR9
- Port x reset bit y (y =
- 0..15)
- 25
- 1
-
-
- CR8
- Port x reset bit y (y =
- 0..15)
- 24
- 1
-
-
- CR7
- Port x reset bit y (y =
- 0..15)
- 23
- 1
-
-
- CR6
- Port x reset bit y (y =
- 0..15)
- 22
- 1
-
-
- CR5
- Port x reset bit y (y =
- 0..15)
- 21
- 1
-
-
- CR4
- Port x reset bit y (y =
- 0..15)
- 20
- 1
-
-
- CR3
- Port x reset bit y (y =
- 0..15)
- 19
- 1
-
-
- CR2
- Port x reset bit y (y =
- 0..15)
- 18
- 1
-
-
- CR1
- Port x reset bit y (y =
- 0..15)
- 17
- 1
-
-
- CR0
- Port x reset bit y (y=
- 0..15)
- 16
- 1
-
-
- BOP15
- Port x set bit y (y=
- 0..15)
- 15
- 1
-
-
- BOP14
- Port x set bit y (y=
- 0..15)
- 14
- 1
-
-
- BOP13
- Port x set bit y (y=
- 0..15)
- 13
- 1
-
-
- BOP12
- Port x set bit y (y=
- 0..15)
- 12
- 1
-
-
- BOP11
- Port x set bit y (y=
- 0..15)
- 11
- 1
-
-
- BOP10
- Port x set bit y (y=
- 0..15)
- 10
- 1
-
-
- BOP9
- Port x set bit y (y=
- 0..15)
- 9
- 1
-
-
- BOP8
- Port x set bit y (y=
- 0..15)
- 8
- 1
-
-
- BOP7
- Port x set bit y (y=
- 0..15)
- 7
- 1
-
-
- BOP6
- Port x set bit y (y=
- 0..15)
- 6
- 1
-
-
- BOP5
- Port x set bit y (y=
- 0..15)
- 5
- 1
-
-
- BOP4
- Port x set bit y (y=
- 0..15)
- 4
- 1
-
-
- BOP3
- Port x set bit y (y=
- 0..15)
- 3
- 1
-
-
- BOP2
- Port x set bit y (y=
- 0..15)
- 2
- 1
-
-
- BOP1
- Port x set bit y (y=
- 0..15)
- 1
- 1
-
-
- BOP0
- Port x set bit y (y=
- 0..15)
- 0
- 1
-
-
-
-
- LOCK
- LOCK
- GPIO port configuration lock
- register
- 0x1C
- 0x20
- read-write
- 0x00000000
-
-
- LKK
- Port x lock bit y
-
- 16
- 1
-
-
- LK15
- Port x lock bit y (y=
- 0..15)
- 15
- 1
-
-
- LK14
- Port x lock bit y (y=
- 0..15)
- 14
- 1
-
-
- LK13
- Port x lock bit y (y=
- 0..15)
- 13
- 1
-
-
- LK12
- Port x lock bit y (y=
- 0..15)
- 12
- 1
-
-
- LK11
- Port x lock bit y (y=
- 0..15)
- 11
- 1
-
-
- LK10
- Port x lock bit y (y=
- 0..15)
- 10
- 1
-
-
- LK9
- Port x lock bit y (y=
- 0..15)
- 9
- 1
-
-
- LK8
- Port x lock bit y (y=
- 0..15)
- 8
- 1
-
-
- LK7
- Port x lock bit y (y=
- 0..15)
- 7
- 1
-
-
- LK6
- Port x lock bit y (y=
- 0..15)
- 6
- 1
-
-
- LK5
- Port x lock bit y (y=
- 0..15)
- 5
- 1
-
-
- LK4
- Port x lock bit y (y=
- 0..15)
- 4
- 1
-
-
- LK3
- Port x lock bit y (y=
- 0..15)
- 3
- 1
-
-
- LK2
- Port x lock bit y (y=
- 0..15)
- 2
- 1
-
-
- LK1
- Port x lock bit y (y=
- 0..15)
- 1
- 1
-
-
- LK0
- Port x lock bit y (y=
- 0..15)
- 0
- 1
-
-
-
-
- AFSEL0
- AFSEL0
- GPIO alternate function low
- register
- 0x20
- 0x20
- read-write
- 0x00000000
-
-
- SEL7
- Alternate function selection for port x
- bit y (y = 0..7)
- 28
- 4
-
-
- SEL6
- Alternate function selection for port x
- bit y (y = 0..7)
- 24
- 4
-
-
- SEL5
- Alternate function selection for port x
- bit y (y = 0..7)
- 20
- 4
-
-
- SEL4
- Alternate function selection for port x
- bit y (y = 0..7)
- 16
- 4
-
-
- SEL3
- Alternate function selection for port x
- bit y (y = 0..7)
- 12
- 4
-
-
- SEL2
- Alternate function selection for port x
- bit y (y = 0..7)
- 8
- 4
-
-
- SEL1
- Alternate function selection for port x
- bit y (y = 0..7)
- 4
- 4
-
-
- SEL0
- Alternate function selection for port x
- bit y (y = 0..7)
- 0
- 4
-
-
-
-
- AFSEL1
- AFSEL1
- GPIO alternate function
- register 1
- 0x24
- 0x20
- read-write
- 0x00000000
-
-
- SEL15
- Alternate function selection for port x
- bit y (y = 8..15)
- 28
- 4
-
-
- SEL14
- Alternate function selection for port x
- bit y (y = 8..15)
- 24
- 4
-
-
- SEL13
- Alternate function selection for port x
- bit y (y = 8..15)
- 20
- 4
-
-
- SEL12
- Alternate function selection for port x
- bit y (y = 8..15)
- 16
- 4
-
-
- SEL11
- Alternate function selection for port x
- bit y (y = 8..15)
- 12
- 4
-
-
- SEL10
- Alternate function selection for port x
- bit y (y = 8..15)
- 8
- 4
-
-
- SEL9
- Alternate function selection for port x
- bit y (y = 8..15)
- 4
- 4
-
-
- SEL8
- Alternate function selection for port x
- bit y (y = 8..15)
- 0
- 4
-
-
-
-
- BC
- BC
- Port bit reset register
- 0x28
- 0x20
- write-only
- 0x00000000
-
-
- CR0
- Port cleat bit
- 0
- 1
-
-
- CR1
- Port cleat bit
- 1
- 1
-
-
- CR2
- Port cleat bit
- 2
- 1
-
-
- CR3
- Port cleat bit
- 3
- 1
-
-
- CR4
- Port cleat bit
- 4
- 1
-
-
- CR5
- Port cleat bit
- 5
- 1
-
-
- CR6
- Port cleat bit
- 6
- 1
-
-
- CR7
- Port cleat bit
- 7
- 1
-
-
- CR8
- Port cleat bit
- 8
- 1
-
-
- CR9
- Port cleat bit
- 9
- 1
-
-
- CR10
- Port cleat bit
- 10
- 1
-
-
- CR11
- Port cleat bit
- 11
- 1
-
-
- CR12
- Port cleat bit
- 12
- 1
-
-
- CR13
- Port cleat bit
- 13
- 1
-
-
- CR14
- Port cleat bit
- 14
- 1
-
-
- CR15
- Port cleat bit
- 15
- 1
-
-
-
-
- TG
- TG
- Port bit toggle register
- 0x2C
- 0x20
- write-only
- 0x00000000
-
-
- TG0
- Port toggle bit
- 0
- 1
-
-
- TG1
- Port toggle bit
- 1
- 1
-
-
- TG2
- Port toggle bit
- 2
- 1
-
-
- TG3
- Port toggle bit
- 3
- 1
-
-
- TG4
- Port toggle bit
- 4
- 1
-
-
- TG5
- Port toggle bit
- 5
- 1
-
-
- TG6
- Port toggle bit
- 6
- 1
-
-
- TG7
- Port toggle bit
- 7
- 1
-
-
- TG8
- Port toggle bit
- 8
- 1
-
-
- TG9
- Port toggle bit
- 9
- 1
-
-
- TG10
- Port toggle bit
- 10
- 1
-
-
- TG11
- Port toggle bit
- 11
- 1
-
-
- TG12
- Port toggle bit
- 12
- 1
-
-
- TG13
- Port toggle bit
- 13
- 1
-
-
- TG14
- Port toggle bit
- 14
- 1
-
-
- TG15
- Port toggle bit
- 15
- 1
-
-
-
-
-
-
- GPIOB
- General-purpose I/Os
- GPIO
- 0x48000400
-
- 0x0
- 0x400
- registers
-
-
-
- CTL
- CTL
- GPIO port control register
- 0x0
- 0x20
- read-write
- 0x00000000
-
-
- CTL15
- Port x configuration bits (y =
- 0..15)
- 30
- 2
-
-
- CTL14
- Port x configuration bits (y =
- 0..15)
- 28
- 2
-
-
- CTL13
- Port x configuration bits (y =
- 0..15)
- 26
- 2
-
-
- CTL12
- Port x configuration bits (y =
- 0..15)
- 24
- 2
-
-
- CTL11
- Port x configuration bits (y =
- 0..15)
- 22
- 2
-
-
- CTL10
- Port x configuration bits (y =
- 0..15)
- 20
- 2
-
-
- CTL9
- Port x configuration bits (y =
- 0..15)
- 18
- 2
-
-
- CTL8
- Port x configuration bits (y =
- 0..15)
- 16
- 2
-
-
- CTL7
- Port x configuration bits (y =
- 0..15)
- 14
- 2
-
-
- CTL6
- Port x configuration bits (y =
- 0..15)
- 12
- 2
-
-
- CTL5
- Port x configuration bits (y =
- 0..15)
- 10
- 2
-
-
- CTL4
- Port x configuration bits (y =
- 0..15)
- 8
- 2
-
-
- CTL3
- Port x configuration bits (y =
- 0..15)
- 6
- 2
-
-
- CTL2
- Port x configuration bits (y =
- 0..15)
- 4
- 2
-
-
- CTL1
- Port x configuration bits (y =
- 0..15)
- 2
- 2
-
-
- CTL0
- Port x configuration bits (y =
- 0..15)
- 0
- 2
-
-
-
-
- OMODE
- OMODE
- GPIO port output type register
- 0x04
- 0x20
- read-write
- 0x00000000
-
-
- OM15
- Port x configuration bit
- 15
- 15
- 1
-
-
- OM14
- Port x configuration bit
- 14
- 14
- 1
-
-
- OM13
- Port x configuration bit
- 13
- 13
- 1
-
-
- OM12
- Port x configuration bit
- 12
- 12
- 1
-
-
- OM11
- Port x configuration bit
- 11
- 11
- 1
-
-
- OM10
- Port x configuration bit
- 10
- 10
- 1
-
-
- OM9
- Port x configuration bit 9
- 9
- 1
-
-
- OM8
- Port x configuration bit 8
- 8
- 1
-
-
- OM7
- Port x configuration bit 7
- 7
- 1
-
-
- OM6
- Port x configuration bit 6
- 6
- 1
-
-
- OM5
- Port x configuration bit 5
- 5
- 1
-
-
- OM4
- Port x configuration bit 4
- 4
- 1
-
-
- OM3
- Port x configuration bit 3
- 3
- 1
-
-
- OM2
- Port x configuration bit 2
- 2
- 1
-
-
- OM1
- Port x configuration bit 1
- 1
- 1
-
-
- OM0
- Port x configuration bit 0
- 0
- 1
-
-
-
-
- OSPD
- OSPD
- GPIO port output speed
- register
- 0x08
- 0x20
- read-write
- 0x00000000
-
-
- OSPD15
- Port x configuration bits (y =
- 0..15)
- 30
- 2
-
-
- OSPD14
- Port x configuration bits (y =
- 0..15)
- 28
- 2
-
-
- OSPD13
- Port x configuration bits (y =
- 0..15)
- 26
- 2
-
-
- OSPD12
- Port x configuration bits (y =
- 0..15)
- 24
- 2
-
-
- OSPD11
- Port x configuration bits (y =
- 0..15)
- 22
- 2
-
-
- OSPD10
- Port x configuration bits (y =
- 0..15)
- 20
- 2
-
-
- OSPD9
- Port x configuration bits (y =
- 0..15)
- 18
- 2
-
-
- OSPD8
- Port x configuration bits (y =
- 0..15)
- 16
- 2
-
-
- OSPD7
- Port x configuration bits (y =
- 0..15)
- 14
- 2
-
-
- OSPD6
- Port x configuration bits (y =
- 0..15)
- 12
- 2
-
-
- OSPD5
- Port x configuration bits (y =
- 0..15)
- 10
- 2
-
-
- OSPD4
- Port x configuration bits (y =
- 0..15)
- 8
- 2
-
-
- OSPD3
- Port x configuration bits (y =
- 0..15)
- 6
- 2
-
-
- OSPD2
- Port x configuration bits (y =
- 0..15)
- 4
- 2
-
-
- OSPD1
- Port x configuration bits (y =
- 0..15)
- 2
- 2
-
-
- OSPD0
- Port x configuration bits (y =
- 0..15)
- 0
- 2
-
-
-
-
- PUD
- PUD
- GPIO port pull-up/pull-down
- register
- 0x0C
- 0x20
- read-write
- 0x00000000
-
-
- PUD15
- Port x configuration bits (y =
- 0..15)
- 30
- 2
-
-
- PUD14
- Port x configuration bits (y =
- 0..15)
- 28
- 2
-
-
- PUD13
- Port x configuration bits (y =
- 0..15)
- 26
- 2
-
-
- PUD12
- Port x configuration bits (y =
- 0..15)
- 24
- 2
-
-
- PUD11
- Port x configuration bits (y =
- 0..15)
- 22
- 2
-
-
- PUD10
- Port x configuration bits (y =
- 0..15)
- 20
- 2
-
-
- PUD9
- Port x configuration bits (y =
- 0..15)
- 18
- 2
-
-
- PUD8
- Port x configuration bits (y =
- 0..15)
- 16
- 2
-
-
- PUD7
- Port x configuration bits (y =
- 0..15)
- 14
- 2
-
-
- PUD6
- Port x configuration bits (y =
- 0..15)
- 12
- 2
-
-
- PUD5
- Port x configuration bits (y =
- 0..15)
- 10
- 2
-
-
- PUD4
- Port x configuration bits (y =
- 0..15)
- 8
- 2
-
-
- PUD3
- Port x configuration bits (y =
- 0..15)
- 6
- 2
-
-
- PUD2
- Port x configuration bits (y =
- 0..15)
- 4
- 2
-
-
- PUD1
- Port x configuration bits (y =
- 0..15)
- 2
- 2
-
-
- PUD0
- Port x configuration bits (y =
- 0..15)
- 0
- 2
-
-
-
-
- ISTAT
- ISTAT
- GPIO port input data register
- 0x10
- 0x20
- read-only
- 0x00000000
-
-
- ISTAT15
- Port input data (y =
- 0..15)
- 15
- 1
-
-
- ISTAT14
- Port input data (y =
- 0..15)
- 14
- 1
-
-
- ISTAT13
- Port input data (y =
- 0..15)
- 13
- 1
-
-
- ISTAT12
- Port input data (y =
- 0..15)
- 12
- 1
-
-
- ISTAT11
- Port input data (y =
- 0..15)
- 11
- 1
-
-
- ISTAT10
- Port input data (y =
- 0..15)
- 10
- 1
-
-
- ISTAT9
- Port input data (y =
- 0..15)
- 9
- 1
-
-
- ISTAT8
- Port input data (y =
- 0..15)
- 8
- 1
-
-
- ISTAT7
- Port input data (y =
- 0..15)
- 7
- 1
-
-
- ISTAT6
- Port input data (y =
- 0..15)
- 6
- 1
-
-
- ISTAT5
- Port input data (y =
- 0..15)
- 5
- 1
-
-
- ISTAT4
- Port input data (y =
- 0..15)
- 4
- 1
-
-
- ISTAT3
- Port input data (y =
- 0..15)
- 3
- 1
-
-
- ISTAT2
- Port input data (y =
- 0..15)
- 2
- 1
-
-
- ISTAT1
- Port input data (y =
- 0..15)
- 1
- 1
-
-
- ISTAT0
- Port input data (y =
- 0..15)
- 0
- 1
-
-
-
-
- OCTL
- OCTL
- GPIO port output data register
- 0x14
- 0x20
- read-write
- 0x00000000
-
-
- OCTL15
- Port output data (y =
- 0..15)
- 15
- 1
-
-
- OCTL14
- Port output data (y =
- 0..15)
- 14
- 1
-
-
- OCTL13
- Port output data (y =
- 0..15)
- 13
- 1
-
-
- OCTL12
- Port output data (y =
- 0..15)
- 12
- 1
-
-
- OCTL11
- Port output data (y =
- 0..15)
- 11
- 1
-
-
- OCTL10
- Port output data (y =
- 0..15)
- 10
- 1
-
-
- OCTL9
- Port output data (y =
- 0..15)
- 9
- 1
-
-
- OCTL8
- Port output data (y =
- 0..15)
- 8
- 1
-
-
- OCTL7
- Port output data (y =
- 0..15)
- 7
- 1
-
-
- OCTL6
- Port output data (y =
- 0..15)
- 6
- 1
-
-
- OCTL5
- Port output data (y =
- 0..15)
- 5
- 1
-
-
- OCTL4
- Port output data (y =
- 0..15)
- 4
- 1
-
-
- OCTL3
- Port output data (y =
- 0..15)
- 3
- 1
-
-
- OCTL2
- Port output data (y =
- 0..15)
- 2
- 1
-
-
- OCTL1
- Port output data (y =
- 0..15)
- 1
- 1
-
-
- OCTL0
- Port output data (y =
- 0..15)
- 0
- 1
-
-
-
-
- BOP
- BOP
- GPIO port bit set/reset
- register
- 0x18
- 0x20
- write-only
- 0x00000000
-
-
- CR15
- Port x reset bit y (y =
- 0..15)
- 31
- 1
-
-
- CR14
- Port x reset bit y (y =
- 0..15)
- 30
- 1
-
-
- CR13
- Port x reset bit y (y =
- 0..15)
- 29
- 1
-
-
- CR12
- Port x reset bit y (y =
- 0..15)
- 28
- 1
-
-
- CR11
- Port x reset bit y (y =
- 0..15)
- 27
- 1
-
-
- CR10
- Port x reset bit y (y =
- 0..15)
- 26
- 1
-
-
- CR9
- Port x reset bit y (y =
- 0..15)
- 25
- 1
-
-
- CR8
- Port x reset bit y (y =
- 0..15)
- 24
- 1
-
-
- CR7
- Port x reset bit y (y =
- 0..15)
- 23
- 1
-
-
- CR6
- Port x reset bit y (y =
- 0..15)
- 22
- 1
-
-
- CR5
- Port x reset bit y (y =
- 0..15)
- 21
- 1
-
-
- CR4
- Port x reset bit y (y =
- 0..15)
- 20
- 1
-
-
- CR3
- Port x reset bit y (y =
- 0..15)
- 19
- 1
-
-
- CR2
- Port x reset bit y (y =
- 0..15)
- 18
- 1
-
-
- CR1
- Port x reset bit y (y =
- 0..15)
- 17
- 1
-
-
- CR0
- Port x reset bit y (y=
- 0..15)
- 16
- 1
-
-
- BOP15
- Port x set bit y (y=
- 0..15)
- 15
- 1
-
-
- BOP14
- Port x set bit y (y=
- 0..15)
- 14
- 1
-
-
- BOP13
- Port x set bit y (y=
- 0..15)
- 13
- 1
-
-
- BOP12
- Port x set bit y (y=
- 0..15)
- 12
- 1
-
-
- BOP11
- Port x set bit y (y=
- 0..15)
- 11
- 1
-
-
- BOP10
- Port x set bit y (y=
- 0..15)
- 10
- 1
-
-
- BOP9
- Port x set bit y (y=
- 0..15)
- 9
- 1
-
-
- BOP8
- Port x set bit y (y=
- 0..15)
- 8
- 1
-
-
- BOP7
- Port x set bit y (y=
- 0..15)
- 7
- 1
-
-
- BOP6
- Port x set bit y (y=
- 0..15)
- 6
- 1
-
-
- BOP5
- Port x set bit y (y=
- 0..15)
- 5
- 1
-
-
- BOP4
- Port x set bit y (y=
- 0..15)
- 4
- 1
-
-
- BOP3
- Port x set bit y (y=
- 0..15)
- 3
- 1
-
-
- BOP2
- Port x set bit y (y=
- 0..15)
- 2
- 1
-
-
- BOP1
- Port x set bit y (y=
- 0..15)
- 1
- 1
-
-
- BOP0
- Port x set bit y (y=
- 0..15)
- 0
- 1
-
-
-
-
- LOCK
- LOCK
- GPIO port configuration lock
- register
- 0x1C
- 0x20
- read-write
- 0x00000000
-
-
- LKK
- Port x lock bit y
-
- 16
- 1
-
-
- LK15
- Port x lock bit y (y=
- 0..15)
- 15
- 1
-
-
- LK14
- Port x lock bit y (y=
- 0..15)
- 14
- 1
-
-
- LK13
- Port x lock bit y (y=
- 0..15)
- 13
- 1
-
-
- LK12
- Port x lock bit y (y=
- 0..15)
- 12
- 1
-
-
- LK11
- Port x lock bit y (y=
- 0..15)
- 11
- 1
-
-
- LK10
- Port x lock bit y (y=
- 0..15)
- 10
- 1
-
-
- LK9
- Port x lock bit y (y=
- 0..15)
- 9
- 1
-
-
- LK8
- Port x lock bit y (y=
- 0..15)
- 8
- 1
-
-
- LK7
- Port x lock bit y (y=
- 0..15)
- 7
- 1
-
-
- LK6
- Port x lock bit y (y=
- 0..15)
- 6
- 1
-
-
- LK5
- Port x lock bit y (y=
- 0..15)
- 5
- 1
-
-
- LK4
- Port x lock bit y (y=
- 0..15)
- 4
- 1
-
-
- LK3
- Port x lock bit y (y=
- 0..15)
- 3
- 1
-
-
- LK2
- Port x lock bit y (y=
- 0..15)
- 2
- 1
-
-
- LK1
- Port x lock bit y (y=
- 0..15)
- 1
- 1
-
-
- LK0
- Port x lock bit y (y=
- 0..15)
- 0
- 1
-
-
-
-
- AFSEL0
- AFSEL0
- GPIO alternate function low
- register
- 0x20
- 0x20
- read-write
- 0x00000000
-
-
- SEL7
- Alternate function selection for port x
- bit y (y = 0..7)
- 28
- 4
-
-
- SEL6
- Alternate function selection for port x
- bit y (y = 0..7)
- 24
- 4
-
-
- SEL5
- Alternate function selection for port x
- bit y (y = 0..7)
- 20
- 4
-
-
- SEL4
- Alternate function selection for port x
- bit y (y = 0..7)
- 16
- 4
-
-
- SEL3
- Alternate function selection for port x
- bit y (y = 0..7)
- 12
- 4
-
-
- SEL2
- Alternate function selection for port x
- bit y (y = 0..7)
- 8
- 4
-
-
- SEL1
- Alternate function selection for port x
- bit y (y = 0..7)
- 4
- 4
-
-
- SEL0
- Alternate function selection for port x
- bit y (y = 0..7)
- 0
- 4
-
-
-
-
- AFSEL1
- AFSEL1
- GPIO alternate function
- register 1
- 0x24
- 0x20
- read-write
- 0x00000000
-
-
- SEL15
- Alternate function selection for port x
- bit y (y = 8..15)
- 28
- 4
-
-
- SEL14
- Alternate function selection for port x
- bit y (y = 8..15)
- 24
- 4
-
-
- SEL13
- Alternate function selection for port x
- bit y (y = 8..15)
- 20
- 4
-
-
- SEL12
- Alternate function selection for port x
- bit y (y = 8..15)
- 16
- 4
-
-
- SEL11
- Alternate function selection for port x
- bit y (y = 8..15)
- 12
- 4
-
-
- SEL10
- Alternate function selection for port x
- bit y (y = 8..15)
- 8
- 4
-
-
- SEL9
- Alternate function selection for port x
- bit y (y = 8..15)
- 4
- 4
-
-
- SEL8
- Alternate function selection for port x
- bit y (y = 8..15)
- 0
- 4
-
-
-
-
- BC
- BC
- Port bit reset register
- 0x28
- 0x20
- write-only
- 0x00000000
-
-
- CR0
- Port cleat bit
- 0
- 1
-
-
- CR1
- Port cleat bit
- 1
- 1
-
-
- CR2
- Port cleat bit
- 2
- 1
-
-
- CR3
- Port cleat bit
- 3
- 1
-
-
- CR4
- Port cleat bit
- 4
- 1
-
-
- CR5
- Port cleat bit
- 5
- 1
-
-
- CR6
- Port cleat bit
- 6
- 1
-
-
- CR7
- Port cleat bit
- 7
- 1
-
-
- CR8
- Port cleat bit
- 8
- 1
-
-
- CR9
- Port cleat bit
- 9
- 1
-
-
- CR10
- Port cleat bit
- 10
- 1
-
-
- CR11
- Port cleat bit
- 11
- 1
-
-
- CR12
- Port cleat bit
- 12
- 1
-
-
- CR13
- Port cleat bit
- 13
- 1
-
-
- CR14
- Port cleat bit
- 14
- 1
-
-
- CR15
- Port cleat bit
- 15
- 1
-
-
-
-
- TG
- TG
- Port bit toggle register
- 0x2C
- 0x20
- write-only
- 0x00000000
-
-
- TG0
- Port toggle bit
- 0
- 1
-
-
- TG1
- Port toggle bit
- 1
- 1
-
-
- TG2
- Port toggle bit
- 2
- 1
-
-
- TG3
- Port toggle bit
- 3
- 1
-
-
- TG4
- Port toggle bit
- 4
- 1
-
-
- TG5
- Port toggle bit
- 5
- 1
-
-
- TG6
- Port toggle bit
- 6
- 1
-
-
- TG7
- Port toggle bit
- 7
- 1
-
-
- TG8
- Port toggle bit
- 8
- 1
-
-
- TG9
- Port toggle bit
- 9
- 1
-
-
- TG10
- Port toggle bit
- 10
- 1
-
-
- TG11
- Port toggle bit
- 11
- 1
-
-
- TG12
- Port toggle bit
- 12
- 1
-
-
- TG13
- Port toggle bit
- 13
- 1
-
-
- TG14
- Port toggle bit
- 14
- 1
-
-
- TG15
- Port toggle bit
- 15
- 1
-
-
-
-
-
-
- GPIOC
- General-purpose I/Os
- GPIO
- 0x48000800
-
- 0x0
- 0x400
- registers
-
-
-
- CTL
- CTL
- GPIO port control register
- 0x0
- 0x20
- read-write
- 0x00000000
-
-
- CTL15
- Port x configuration bits (y =
- 0..15)
- 30
- 2
-
-
- CTL14
- Port x configuration bits (y =
- 0..15)
- 28
- 2
-
-
- CTL13
- Port x configuration bits (y =
- 0..15)
- 26
- 2
-
-
- CTL12
- Port x configuration bits (y =
- 0..15)
- 24
- 2
-
-
- CTL11
- Port x configuration bits (y =
- 0..15)
- 22
- 2
-
-
- CTL10
- Port x configuration bits (y =
- 0..15)
- 20
- 2
-
-
- CTL9
- Port x configuration bits (y =
- 0..15)
- 18
- 2
-
-
- CTL8
- Port x configuration bits (y =
- 0..15)
- 16
- 2
-
-
- CTL7
- Port x configuration bits (y =
- 0..15)
- 14
- 2
-
-
- CTL6
- Port x configuration bits (y =
- 0..15)
- 12
- 2
-
-
- CTL5
- Port x configuration bits (y =
- 0..15)
- 10
- 2
-
-
- CTL4
- Port x configuration bits (y =
- 0..15)
- 8
- 2
-
-
- CTL3
- Port x configuration bits (y =
- 0..15)
- 6
- 2
-
-
- CTL2
- Port x configuration bits (y =
- 0..15)
- 4
- 2
-
-
- CTL1
- Port x configuration bits (y =
- 0..15)
- 2
- 2
-
-
- CTL0
- Port x configuration bits (y =
- 0..15)
- 0
- 2
-
-
-
-
- OMODE
- OMODE
- GPIO port output type register
- 0x04
- 0x20
- read-write
- 0x00000000
-
-
- OM15
- Port x configuration bit
- 15
- 15
- 1
-
-
- OM14
- Port x configuration bit
- 14
- 14
- 1
-
-
- OM13
- Port x configuration bit
- 13
- 13
- 1
-
-
- OM12
- Port x configuration bit
- 12
- 12
- 1
-
-
- OM11
- Port x configuration bit
- 11
- 11
- 1
-
-
- OM10
- Port x configuration bit
- 10
- 10
- 1
-
-
- OM9
- Port x configuration bit 9
- 9
- 1
-
-
- OM8
- Port x configuration bit 8
- 8
- 1
-
-
- OM7
- Port x configuration bit 7
- 7
- 1
-
-
- OM6
- Port x configuration bit 6
- 6
- 1
-
-
- OM5
- Port x configuration bit 5
- 5
- 1
-
-
- OM4
- Port x configuration bit 4
- 4
- 1
-
-
- OM3
- Port x configuration bit 3
- 3
- 1
-
-
- OM2
- Port x configuration bit 2
- 2
- 1
-
-
- OM1
- Port x configuration bit 1
- 1
- 1
-
-
- OM0
- Port x configuration bit 0
- 0
- 1
-
-
-
-
- OSPD
- OSPD
- GPIO port output speed
- register
- 0x08
- 0x20
- read-write
- 0x00000000
-
-
- OSPD15
- Port x configuration bits (y =
- 0..15)
- 30
- 2
-
-
- OSPD14
- Port x configuration bits (y =
- 0..15)
- 28
- 2
-
-
- OSPD13
- Port x configuration bits (y =
- 0..15)
- 26
- 2
-
-
- OSPD12
- Port x configuration bits (y =
- 0..15)
- 24
- 2
-
-
- OSPD11
- Port x configuration bits (y =
- 0..15)
- 22
- 2
-
-
- OSPD10
- Port x configuration bits (y =
- 0..15)
- 20
- 2
-
-
- OSPD9
- Port x configuration bits (y =
- 0..15)
- 18
- 2
-
-
- OSPD8
- Port x configuration bits (y =
- 0..15)
- 16
- 2
-
-
- OSPD7
- Port x configuration bits (y =
- 0..15)
- 14
- 2
-
-
- OSPD6
- Port x configuration bits (y =
- 0..15)
- 12
- 2
-
-
- OSPD5
- Port x configuration bits (y =
- 0..15)
- 10
- 2
-
-
- OSPD4
- Port x configuration bits (y =
- 0..15)
- 8
- 2
-
-
- OSPD3
- Port x configuration bits (y =
- 0..15)
- 6
- 2
-
-
- OSPD2
- Port x configuration bits (y =
- 0..15)
- 4
- 2
-
-
- OSPD1
- Port x configuration bits (y =
- 0..15)
- 2
- 2
-
-
- OSPD0
- Port x configuration bits (y =
- 0..15)
- 0
- 2
-
-
-
-
- PUD
- PUD
- GPIO port pull-up/pull-down
- register
- 0x0C
- 0x20
- read-write
- 0x00000000
-
-
- PUD15
- Port x configuration bits (y =
- 0..15)
- 30
- 2
-
-
- PUD14
- Port x configuration bits (y =
- 0..15)
- 28
- 2
-
-
- PUD13
- Port x configuration bits (y =
- 0..15)
- 26
- 2
-
-
- PUD12
- Port x configuration bits (y =
- 0..15)
- 24
- 2
-
-
- PUD11
- Port x configuration bits (y =
- 0..15)
- 22
- 2
-
-
- PUD10
- Port x configuration bits (y =
- 0..15)
- 20
- 2
-
-
- PUD9
- Port x configuration bits (y =
- 0..15)
- 18
- 2
-
-
- PUD8
- Port x configuration bits (y =
- 0..15)
- 16
- 2
-
-
- PUD7
- Port x configuration bits (y =
- 0..15)
- 14
- 2
-
-
- PUD6
- Port x configuration bits (y =
- 0..15)
- 12
- 2
-
-
- PUD5
- Port x configuration bits (y =
- 0..15)
- 10
- 2
-
-
- PUD4
- Port x configuration bits (y =
- 0..15)
- 8
- 2
-
-
- PUD3
- Port x configuration bits (y =
- 0..15)
- 6
- 2
-
-
- PUD2
- Port x configuration bits (y =
- 0..15)
- 4
- 2
-
-
- PUD1
- Port x configuration bits (y =
- 0..15)
- 2
- 2
-
-
- PUD0
- Port x configuration bits (y =
- 0..15)
- 0
- 2
-
-
-
-
- ISTAT
- ISTAT
- GPIO port input data register
- 0x10
- 0x20
- read-only
- 0x00000000
-
-
- ISTAT15
- Port input data (y =
- 0..15)
- 15
- 1
-
-
- ISTAT14
- Port input data (y =
- 0..15)
- 14
- 1
-
-
- ISTAT13
- Port input data (y =
- 0..15)
- 13
- 1
-
-
- ISTAT12
- Port input data (y =
- 0..15)
- 12
- 1
-
-
- ISTAT11
- Port input data (y =
- 0..15)
- 11
- 1
-
-
- ISTAT10
- Port input data (y =
- 0..15)
- 10
- 1
-
-
- ISTAT9
- Port input data (y =
- 0..15)
- 9
- 1
-
-
- ISTAT8
- Port input data (y =
- 0..15)
- 8
- 1
-
-
- ISTAT7
- Port input data (y =
- 0..15)
- 7
- 1
-
-
- ISTAT6
- Port input data (y =
- 0..15)
- 6
- 1
-
-
- ISTAT5
- Port input data (y =
- 0..15)
- 5
- 1
-
-
- ISTAT4
- Port input data (y =
- 0..15)
- 4
- 1
-
-
- ISTAT3
- Port input data (y =
- 0..15)
- 3
- 1
-
-
- ISTAT2
- Port input data (y =
- 0..15)
- 2
- 1
-
-
- ISTAT1
- Port input data (y =
- 0..15)
- 1
- 1
-
-
- ISTAT0
- Port input data (y =
- 0..15)
- 0
- 1
-
-
-
-
- OCTL
- OCTL
- GPIO port output data register
- 0x14
- 0x20
- read-write
- 0x00000000
-
-
- OCTL15
- Port output data (y =
- 0..15)
- 15
- 1
-
-
- OCTL14
- Port output data (y =
- 0..15)
- 14
- 1
-
-
- OCTL13
- Port output data (y =
- 0..15)
- 13
- 1
-
-
- OCTL12
- Port output data (y =
- 0..15)
- 12
- 1
-
-
- OCTL11
- Port output data (y =
- 0..15)
- 11
- 1
-
-
- OCTL10
- Port output data (y =
- 0..15)
- 10
- 1
-
-
- OCTL9
- Port output data (y =
- 0..15)
- 9
- 1
-
-
- OCTL8
- Port output data (y =
- 0..15)
- 8
- 1
-
-
- OCTL7
- Port output data (y =
- 0..15)
- 7
- 1
-
-
- OCTL6
- Port output data (y =
- 0..15)
- 6
- 1
-
-
- OCTL5
- Port output data (y =
- 0..15)
- 5
- 1
-
-
- OCTL4
- Port output data (y =
- 0..15)
- 4
- 1
-
-
- OCTL3
- Port output data (y =
- 0..15)
- 3
- 1
-
-
- OCTL2
- Port output data (y =
- 0..15)
- 2
- 1
-
-
- OCTL1
- Port output data (y =
- 0..15)
- 1
- 1
-
-
- OCTL0
- Port output data (y =
- 0..15)
- 0
- 1
-
-
-
-
- BOP
- BOP
- GPIO port bit set/reset
- register
- 0x18
- 0x20
- write-only
- 0x00000000
-
-
- CR15
- Port x reset bit y (y =
- 0..15)
- 31
- 1
-
-
- CR14
- Port x reset bit y (y =
- 0..15)
- 30
- 1
-
-
- CR13
- Port x reset bit y (y =
- 0..15)
- 29
- 1
-
-
- CR12
- Port x reset bit y (y =
- 0..15)
- 28
- 1
-
-
- CR11
- Port x reset bit y (y =
- 0..15)
- 27
- 1
-
-
- CR10
- Port x reset bit y (y =
- 0..15)
- 26
- 1
-
-
- CR9
- Port x reset bit y (y =
- 0..15)
- 25
- 1
-
-
- CR8
- Port x reset bit y (y =
- 0..15)
- 24
- 1
-
-
- CR7
- Port x reset bit y (y =
- 0..15)
- 23
- 1
-
-
- CR6
- Port x reset bit y (y =
- 0..15)
- 22
- 1
-
-
- CR5
- Port x reset bit y (y =
- 0..15)
- 21
- 1
-
-
- CR4
- Port x reset bit y (y =
- 0..15)
- 20
- 1
-
-
- CR3
- Port x reset bit y (y =
- 0..15)
- 19
- 1
-
-
- CR2
- Port x reset bit y (y =
- 0..15)
- 18
- 1
-
-
- CR1
- Port x reset bit y (y =
- 0..15)
- 17
- 1
-
-
- CR0
- Port x reset bit y (y=
- 0..15)
- 16
- 1
-
-
- BOP15
- Port x set bit y (y=
- 0..15)
- 15
- 1
-
-
- BOP14
- Port x set bit y (y=
- 0..15)
- 14
- 1
-
-
- BOP13
- Port x set bit y (y=
- 0..15)
- 13
- 1
-
-
- BOP12
- Port x set bit y (y=
- 0..15)
- 12
- 1
-
-
- BOP11
- Port x set bit y (y=
- 0..15)
- 11
- 1
-
-
- BOP10
- Port x set bit y (y=
- 0..15)
- 10
- 1
-
-
- BOP9
- Port x set bit y (y=
- 0..15)
- 9
- 1
-
-
- BOP8
- Port x set bit y (y=
- 0..15)
- 8
- 1
-
-
- BOP7
- Port x set bit y (y=
- 0..15)
- 7
- 1
-
-
- BOP6
- Port x set bit y (y=
- 0..15)
- 6
- 1
-
-
- BOP5
- Port x set bit y (y=
- 0..15)
- 5
- 1
-
-
- BOP4
- Port x set bit y (y=
- 0..15)
- 4
- 1
-
-
- BOP3
- Port x set bit y (y=
- 0..15)
- 3
- 1
-
-
- BOP2
- Port x set bit y (y=
- 0..15)
- 2
- 1
-
-
- BOP1
- Port x set bit y (y=
- 0..15)
- 1
- 1
-
-
- BOP0
- Port x set bit y (y=
- 0..15)
- 0
- 1
-
-
-
-
- AFSEL0
- AFSEL0
- GPIO alternate function low
- register
- 0x20
- 0x20
- read-write
- 0x00000000
-
-
- SEL7
- Alternate function selection for port x
- bit y (y = 0..7)
- 28
- 4
-
-
- SEL6
- Alternate function selection for port x
- bit y (y = 0..7)
- 24
- 4
-
-
- SEL5
- Alternate function selection for port x
- bit y (y = 0..7)
- 20
- 4
-
-
- SEL4
- Alternate function selection for port x
- bit y (y = 0..7)
- 16
- 4
-
-
- SEL3
- Alternate function selection for port x
- bit y (y = 0..7)
- 12
- 4
-
-
- SEL2
- Alternate function selection for port x
- bit y (y = 0..7)
- 8
- 4
-
-
- SEL1
- Alternate function selection for port x
- bit y (y = 0..7)
- 4
- 4
-
-
- SEL0
- Alternate function selection for port x
- bit y (y = 0..7)
- 0
- 4
-
-
-
-
- AFSEL1
- AFSEL1
- GPIO alternate function
- register 1
- 0x24
- 0x20
- read-write
- 0x00000000
-
-
- SEL15
- Alternate function selection for port x
- bit y (y = 8..15)
- 28
- 4
-
-
- SEL14
- Alternate function selection for port x
- bit y (y = 8..15)
- 24
- 4
-
-
- SEL13
- Alternate function selection for port x
- bit y (y = 8..15)
- 20
- 4
-
-
- SEL12
- Alternate function selection for port x
- bit y (y = 8..15)
- 16
- 4
-
-
- SEL11
- Alternate function selection for port x
- bit y (y = 8..15)
- 12
- 4
-
-
- SEL10
- Alternate function selection for port x
- bit y (y = 8..15)
- 8
- 4
-
-
- SEL9
- Alternate function selection for port x
- bit y (y = 8..15)
- 4
- 4
-
-
- SEL8
- Alternate function selection for port x
- bit y (y = 8..15)
- 0
- 4
-
-
-
-
- BC
- BC
- Port bit reset register
- 0x28
- 0x20
- write-only
- 0x00000000
-
-
- CR0
- Port cleat bit
- 0
- 1
-
-
- CR1
- Port cleat bit
- 1
- 1
-
-
- CR2
- Port cleat bit
- 2
- 1
-
-
- CR3
- Port cleat bit
- 3
- 1
-
-
- CR4
- Port cleat bit
- 4
- 1
-
-
- CR5
- Port cleat bit
- 5
- 1
-
-
- CR6
- Port cleat bit
- 6
- 1
-
-
- CR7
- Port cleat bit
- 7
- 1
-
-
- CR8
- Port cleat bit
- 8
- 1
-
-
- CR9
- Port cleat bit
- 9
- 1
-
-
- CR10
- Port cleat bit
- 10
- 1
-
-
- CR11
- Port cleat bit
- 11
- 1
-
-
- CR12
- Port cleat bit
- 12
- 1
-
-
- CR13
- Port cleat bit
- 13
- 1
-
-
- CR14
- Port cleat bit
- 14
- 1
-
-
- CR15
- Port cleat bit
- 15
- 1
-
-
-
-
- TG
- TG
- Port bit toggle register
- 0x2C
- 0x20
- write-only
- 0x00000000
-
-
- TG0
- Port toggle bit
- 0
- 1
-
-
- TG1
- Port toggle bit
- 1
- 1
-
-
- TG2
- Port toggle bit
- 2
- 1
-
-
- TG3
- Port toggle bit
- 3
- 1
-
-
- TG4
- Port toggle bit
- 4
- 1
-
-
- TG5
- Port toggle bit
- 5
- 1
-
-
- TG6
- Port toggle bit
- 6
- 1
-
-
- TG7
- Port toggle bit
- 7
- 1
-
-
- TG8
- Port toggle bit
- 8
- 1
-
-
- TG9
- Port toggle bit
- 9
- 1
-
-
- TG10
- Port toggle bit
- 10
- 1
-
-
- TG11
- Port toggle bit
- 11
- 1
-
-
- TG12
- Port toggle bit
- 12
- 1
-
-
- TG13
- Port toggle bit
- 13
- 1
-
-
- TG14
- Port toggle bit
- 14
- 1
-
-
- TG15
- Port toggle bit
- 15
- 1
-
-
-
-
-
-
- GPIOF
- General-purpose I/Os
- GPIO
- 0x48001400
-
- 0x0
- 0x400
- registers
-
-
-
- CTL
- CTL
- GPIOF port control register
- 0x0
- 0x20
- read-write
- 0x00000000
-
-
- CTL15
- Port x configuration bits (y =
- 0..15)
- 30
- 2
-
-
- CTL14
- Port x configuration bits (y =
- 0..15)
- 28
- 2
-
-
- CTL13
- Port x configuration bits (y =
- 0..15)
- 26
- 2
-
-
- CTL12
- Port x configuration bits (y =
- 0..15)
- 24
- 2
-
-
- CTL11
- Port x configuration bits (y =
- 0..15)
- 22
- 2
-
-
- CTL10
- Port x configuration bits (y =
- 0..15)
- 20
- 2
-
-
- CTL9
- Port x configuration bits (y =
- 0..15)
- 18
- 2
-
-
- CTL8
- Port x configuration bits (y =
- 0..15)
- 16
- 2
-
-
- CTL7
- Port x configuration bits (y =
- 0..15)
- 14
- 2
-
-
- CTL6
- Port x configuration bits (y =
- 0..15)
- 12
- 2
-
-
- CTL5
- Port x configuration bits (y =
- 0..15)
- 10
- 2
-
-
- CTL4
- Port x configuration bits (y =
- 0..15)
- 8
- 2
-
-
- CTL3
- Port x configuration bits (y =
- 0..15)
- 6
- 2
-
-
- CTL2
- Port x configuration bits (y =
- 0..15)
- 4
- 2
-
-
- CTL1
- Port x configuration bits (y =
- 0..15)
- 2
- 2
-
-
- CTL0
- Port x configuration bits (y =
- 0..15)
- 0
- 2
-
-
-
-
- OMODE
- OMODE
- GPIO port output type register
- 0x04
- 0x20
- read-write
- 0x00000000
-
-
- OM15
- Port x configuration bit
- 15
- 15
- 1
-
-
- OM14
- Port x configuration bit
- 14
- 14
- 1
-
-
- OM13
- Port x configuration bit
- 13
- 13
- 1
-
-
- OM12
- Port x configuration bit
- 12
- 12
- 1
-
-
- OM11
- Port x configuration bit
- 11
- 11
- 1
-
-
- OM10
- Port x configuration bit
- 10
- 10
- 1
-
-
- OM9
- Port x configuration bit 9
- 9
- 1
-
-
- OM8
- Port x configuration bit 8
- 8
- 1
-
-
- OM7
- Port x configuration bit 7
- 7
- 1
-
-
- OM6
- Port x configuration bit 6
- 6
- 1
-
-
- OM5
- Port x configuration bit 5
- 5
- 1
-
-
- OM4
- Port x configuration bit 4
- 4
- 1
-
-
- OM3
- Port x configuration bit 3
- 3
- 1
-
-
- OM2
- Port x configuration bit 2
- 2
- 1
-
-
- OM1
- Port x configuration bit 1
- 1
- 1
-
-
- OM0
- Port x configuration bit 0
- 0
- 1
-
-
-
-
- OSPD
- OSPD
- GPIO port output speed
- register
- 0x08
- 0x20
- read-write
- 0x00000000
-
-
- OSPD15
- Port x configuration bits (y =
- 0..15)
- 30
- 2
-
-
- OSPD14
- Port x configuration bits (y =
- 0..15)
- 28
- 2
-
-
- OSPD13
- Port x configuration bits (y =
- 0..15)
- 26
- 2
-
-
- OSPD12
- Port x configuration bits (y =
- 0..15)
- 24
- 2
-
-
- OSPD11
- Port x configuration bits (y =
- 0..15)
- 22
- 2
-
-
- OSPD10
- Port x configuration bits (y =
- 0..15)
- 20
- 2
-
-
- OSPD9
- Port x configuration bits (y =
- 0..15)
- 18
- 2
-
-
- OSPD8
- Port x configuration bits (y =
- 0..15)
- 16
- 2
-
-
- OSPD7
- Port x configuration bits (y =
- 0..15)
- 14
- 2
-
-
- OSPD6
- Port x configuration bits (y =
- 0..15)
- 12
- 2
-
-
- OSPD5
- Port x configuration bits (y =
- 0..15)
- 10
- 2
-
-
- OSPD4
- Port x configuration bits (y =
- 0..15)
- 8
- 2
-
-
- OSPD3
- Port x configuration bits (y =
- 0..15)
- 6
- 2
-
-
- OSPD2
- Port x configuration bits (y =
- 0..15)
- 4
- 2
-
-
- OSPD1
- Port x configuration bits (y =
- 0..15)
- 2
- 2
-
-
- OSPD0
- Port x configuration bits (y =
- 0..15)
- 0
- 2
-
-
-
-
- PUD
- PUD
- GPIO port pull-up/pull-down
- register
- 0x0C
- 0x20
- read-write
- 0x00000000
-
-
- PUD15
- Port x configuration bits (y =
- 0..15)
- 30
- 2
-
-
- PUD14
- Port x configuration bits (y =
- 0..15)
- 28
- 2
-
-
- PUD13
- Port x configuration bits (y =
- 0..15)
- 26
- 2
-
-
- PUD12
- Port x configuration bits (y =
- 0..15)
- 24
- 2
-
-
- PUD11
- Port x configuration bits (y =
- 0..15)
- 22
- 2
-
-
- PUD10
- Port x configuration bits (y =
- 0..15)
- 20
- 2
-
-
- PUD9
- Port x configuration bits (y =
- 0..15)
- 18
- 2
-
-
- PUD8
- Port x configuration bits (y =
- 0..15)
- 16
- 2
-
-
- PUD7
- Port x configuration bits (y =
- 0..15)
- 14
- 2
-
-
- PUD6
- Port x configuration bits (y =
- 0..15)
- 12
- 2
-
-
- PUD5
- Port x configuration bits (y =
- 0..15)
- 10
- 2
-
-
- PUD4
- Port x configuration bits (y =
- 0..15)
- 8
- 2
-
-
- PUD3
- Port x configuration bits (y =
- 0..15)
- 6
- 2
-
-
- PUD2
- Port x configuration bits (y =
- 0..15)
- 4
- 2
-
-
- PUD1
- Port x configuration bits (y =
- 0..15)
- 2
- 2
-
-
- PUD0
- Port x configuration bits (y =
- 0..15)
- 0
- 2
-
-
-
-
- ISTAT
- ISTAT
- GPIO port input data register
- 0x10
- 0x20
- read-only
- 0x00000000
-
-
- ISTAT15
- Port input data (y =
- 0..15)
- 15
- 1
-
-
- ISTAT14
- Port input data (y =
- 0..15)
- 14
- 1
-
-
- ISTAT13
- Port input data (y =
- 0..15)
- 13
- 1
-
-
- ISTAT12
- Port input data (y =
- 0..15)
- 12
- 1
-
-
- ISTAT11
- Port input data (y =
- 0..15)
- 11
- 1
-
-
- ISTAT10
- Port input data (y =
- 0..15)
- 10
- 1
-
-
- ISTAT9
- Port input data (y =
- 0..15)
- 9
- 1
-
-
- ISTAT8
- Port input data (y =
- 0..15)
- 8
- 1
-
-
- ISTAT7
- Port input data (y =
- 0..15)
- 7
- 1
-
-
- ISTAT6
- Port input data (y =
- 0..15)
- 6
- 1
-
-
- ISTAT5
- Port input data (y =
- 0..15)
- 5
- 1
-
-
- ISTAT4
- Port input data (y =
- 0..15)
- 4
- 1
-
-
- ISTAT3
- Port input data (y =
- 0..15)
- 3
- 1
-
-
- ISTAT2
- Port input data (y =
- 0..15)
- 2
- 1
-
-
- ISTAT1
- Port input data (y =
- 0..15)
- 1
- 1
-
-
- ISTAT0
- Port input data (y =
- 0..15)
- 0
- 1
-
-
-
-
- OCTL
- OCTL
- GPIO port output data register
- 0x14
- 0x20
- read-write
- 0x00000000
-
-
- OCTL15
- Port output data (y =
- 0..15)
- 15
- 1
-
-
- OCTL14
- Port output data (y =
- 0..15)
- 14
- 1
-
-
- OCTL13
- Port output data (y =
- 0..15)
- 13
- 1
-
-
- OCTL12
- Port output data (y =
- 0..15)
- 12
- 1
-
-
- OCTL11
- Port output data (y =
- 0..15)
- 11
- 1
-
-
- OCTL10
- Port output data (y =
- 0..15)
- 10
- 1
-
-
- OCTL9
- Port output data (y =
- 0..15)
- 9
- 1
-
-
- OCTL8
- Port output data (y =
- 0..15)
- 8
- 1
-
-
- OCTL7
- Port output data (y =
- 0..15)
- 7
- 1
-
-
- OCTL6
- Port output data (y =
- 0..15)
- 6
- 1
-
-
- OCTL5
- Port output data (y =
- 0..15)
- 5
- 1
-
-
- OCTL4
- Port output data (y =
- 0..15)
- 4
- 1
-
-
- OCTL3
- Port output data (y =
- 0..15)
- 3
- 1
-
-
- OCTL2
- Port output data (y =
- 0..15)
- 2
- 1
-
-
- OCTL1
- Port output data (y =
- 0..15)
- 1
- 1
-
-
- OCTL0
- Port output data (y =
- 0..15)
- 0
- 1
-
-
-
-
- BOP
- BOP
- GPIO port bit set/reset
- register
- 0x18
- 0x20
- write-only
- 0x00000000
-
-
- CR15
- Port x reset bit y (y =
- 0..15)
- 31
- 1
-
-
- CR14
- Port x reset bit y (y =
- 0..15)
- 30
- 1
-
-
- CR13
- Port x reset bit y (y =
- 0..15)
- 29
- 1
-
-
- CR12
- Port x reset bit y (y =
- 0..15)
- 28
- 1
-
-
- CR11
- Port x reset bit y (y =
- 0..15)
- 27
- 1
-
-
- CR10
- Port x reset bit y (y =
- 0..15)
- 26
- 1
-
-
- CR9
- Port x reset bit y (y =
- 0..15)
- 25
- 1
-
-
- CR8
- Port x reset bit y (y =
- 0..15)
- 24
- 1
-
-
- CR7
- Port x reset bit y (y =
- 0..15)
- 23
- 1
-
-
- CR6
- Port x reset bit y (y =
- 0..15)
- 22
- 1
-
-
- CR5
- Port x reset bit y (y =
- 0..15)
- 21
- 1
-
-
- CR4
- Port x reset bit y (y =
- 0..15)
- 20
- 1
-
-
- CR3
- Port x reset bit y (y =
- 0..15)
- 19
- 1
-
-
- CR2
- Port x reset bit y (y =
- 0..15)
- 18
- 1
-
-
- CR1
- Port x reset bit y (y =
- 0..15)
- 17
- 1
-
-
- CR0
- Port x set bit y (y=
- 0..15)
- 16
- 1
-
-
- BOP15
- Port x set bit y (y=
- 0..15)
- 15
- 1
-
-
- BOP14
- Port x set bit y (y=
- 0..15)
- 14
- 1
-
-
- BOP13
- Port x set bit y (y=
- 0..15)
- 13
- 1
-
-
- BOP12
- Port x set bit y (y=
- 0..15)
- 12
- 1
-
-
- BOP11
- Port x set bit y (y=
- 0..15)
- 11
- 1
-
-
- BOP10
- Port x set bit y (y=
- 0..15)
- 10
- 1
-
-
- BOP9
- Port x set bit y (y=
- 0..15)
- 9
- 1
-
-
- BOP8
- Port x set bit y (y=
- 0..15)
- 8
- 1
-
-
- BOP7
- Port x set bit y (y=
- 0..15)
- 7
- 1
-
-
- BOP6
- Port x set bit y (y=
- 0..15)
- 6
- 1
-
-
- BOP5
- Port x set bit y (y=
- 0..15)
- 5
- 1
-
-
- BOP4
- Port x set bit y (y=
- 0..15)
- 4
- 1
-
-
- BOP3
- Port x set bit y (y=
- 0..15)
- 3
- 1
-
-
- BOP2
- Port x set bit y (y=
- 0..15)
- 2
- 1
-
-
- BOP1
- Port x set bit y (y=
- 0..15)
- 1
- 1
-
-
- BOP0
- Port x set bit y (y=
- 0..15)
- 0
- 1
-
-
-
-
- BC
- BC
- Port bit reset register
- 0x28
- 0x20
- write-only
- 0x00000000
-
-
- CR0
- Port x Reset bit y
- 0
- 1
-
-
- CR1
- Port x Reset bit y
- 1
- 1
-
-
- CR2
- Port x Reset bit y
- 2
- 1
-
-
- CR3
- Port x Reset bit y
- 3
- 1
-
-
- CR4
- Port x Reset bit y
- 4
- 1
-
-
- CR5
- Port x Reset bit y
- 5
- 1
-
-
- CR6
- Port x Reset bit y
- 6
- 1
-
-
- CR7
- Port x Reset bit y
- 7
- 1
-
-
- CR8
- Port x Reset bit y
- 8
- 1
-
-
- CR9
- Port x Reset bit y
- 9
- 1
-
-
- CR10
- Port x Reset bit y
- 10
- 1
-
-
- CR11
- Port x Reset bit y
- 11
- 1
-
-
- CR12
- Port x Reset bit y
- 12
- 1
-
-
- CR13
- Port x Reset bit y
- 13
- 1
-
-
- CR14
- Port x Reset bit y
- 14
- 1
-
-
- CR15
- Port x Reset bit y
- 15
- 1
-
-
-
-
- TG
- TG
- Port bit toggle register
- 0x2C
- 0x20
- write-only
- 0x00000000
-
-
- TG0
- Port toggle bit
- 0
- 1
-
-
- TG1
- Port toggle bit
- 1
- 1
-
-
- TG2
- Port toggle bit
- 2
- 1
-
-
- TG3
- Port toggle bit
- 3
- 1
-
-
- TG4
- Port toggle bit
- 4
- 1
-
-
- TG5
- Port toggle bit
- 5
- 1
-
-
- TG6
- Port toggle bit
- 6
- 1
-
-
- TG7
- Port toggle bit
- 7
- 1
-
-
- TG8
- Port toggle bit
- 8
- 1
-
-
- TG9
- Port toggle bit
- 9
- 1
-
-
- TG10
- Port toggle bit
- 10
- 1
-
-
- TG11
- Port toggle bit
- 11
- 1
-
-
- TG12
- Port toggle bit
- 12
- 1
-
-
- TG13
- Port toggle bit
- 13
- 1
-
-
- TG14
- Port toggle bit
- 14
- 1
-
-
- TG15
- Port toggle bit
- 15
- 1
-
-
-
-
-
-
- I2C0
- Inter integrated circuit
- I2C
- 0x40005400
-
- 0x0
- 0x400
- registers
-
-
- I2C0_EV
- 23
-
-
- I2C0_ER
- 32
-
-
-
- CTL0
- CTL0
- Control register 0
- 0x0
- 0x20
- read-write
- 0x0000
-
-
- SRESET
- Software reset
- 15
- 1
-
-
- SALT
- SMBus alert
- 13
- 1
-
-
- PECTRANS
- Packet error checking
- 12
- 1
-
-
- POAP
- Acknowledge/PEC Position (for data
- reception)
- 11
- 1
-
-
- ACKEN
- Acknowledge enable
- 10
- 1
-
-
- STOP
- Stop condition
- 9
- 1
-
-
- START
- Start generation
- 8
- 1
-
-
- SS
- SCL Stretching(Slave
- mode)
- 7
- 1
-
-
- GCEN
- General call enable
- 6
- 1
-
-
- PECEN
- PEC enable
- 5
- 1
-
-
- ARPEN
- ARP enable
- 4
- 1
-
-
- SMBSEL
- SMBus type
- 3
- 1
-
-
- SMBEN
- SMBus mode
- 1
- 1
-
-
- I2CEN
- Peripheral enable
- 0
- 1
-
-
-
-
- CTL1
- CTL1
- Control register 1
- 0x04
- 0x20
- read-write
- 0x0000
-
-
- DMALST
- Flag indicating DMA last transfer
- 12
- 1
-
-
- DMAON
- DMA mode switch
- 11
- 1
-
-
- BUFIE
- Buffer interrupt enable
- 10
- 1
-
-
- EVIE
- Event interrupt enable
- 9
- 1
-
-
- ERRIE
- Error interrupt enable
- 8
- 1
-
-
- I2CCLK
- Peripheral clock frequency
- 0
- 7
-
-
-
-
- SADDR0
- SADDR0
- Own address register 0
- 0x08
- 0x20
- read-write
- 0x0000
-
-
- ADDFORMAT
- Addressing mode (slave
- mode)
- 15
- 1
-
-
- ADDRESS
- Interface address
- 0
- 10
-
-
-
-
- SADDR1
- SADDR1
- Own address register 1
- 0x0C
- 0x20
- read-write
- 0x0000
-
-
- ADDRESS2
- Interface address
- 1
- 7
-
-
- DUADEN
- Dual addressing mode
- enable
- 0
- 1
-
-
-
-
- DATA
- DATA
- Data register
- 0x10
- 0x20
- read-write
- 0x0000
-
-
- TRB
- Transmission or reception data buffer
- 0
- 8
-
-
-
-
- STAT0
- STAT0
- Transfer status register 0
- 0x14
- 0x20
- 0x0000
-
-
- SMBALT
- SMBus alert
- 15
- 1
- read-write
-
-
- SMBTO
- Timeout signal in SMBus mode
- 14
- 1
- read-write
-
-
- PECERR
- PEC error when receiving data
- 12
- 1
- read-write
-
-
- OUERR
- Overrun/Underrun occurs in slave mode
- 11
- 1
- read-write
-
-
- AERR
- Acknowledge error
- 10
- 1
- read-write
-
-
- LOSTARB
- Arbitration lost (master
- mode)
- 9
- 1
- read-write
-
-
- BERR
- Bus error
- 8
- 1
- read-write
-
-
- TBE
- I2C_DATA is Empty during transmitting
- 7
- 1
- read-only
-
-
- RBNE
- I2C_DATA is not Empty during receiving
- 6
- 1
- read-only
-
-
- STPDET
- Stop detection (slave
- mode)
- 4
- 1
- read-only
-
-
- ADD10SEND
- Header of 10-bit address is sent in master mode
- 3
- 1
- read-only
-
-
- BTC
- Byte transmission completed
- 2
- 1
- read-only
-
-
- ADDSEND
- Address sent (master mode)/matched
- (slave mode)
- 1
- 1
- read-only
-
-
- SBSEND
- Start bit (Master mode)
- 0
- 1
- read-only
-
-
-
-
- STAT1
- STAT1
- Transfer status register 1
- 0x18
- 0x20
- read-only
- 0x0000
-
-
- PECV
- Packet error checking
- register
- 8
- 8
-
-
- DUMODF
- Dual flag (Slave mode)
- 7
- 1
-
-
- HSTSMB
- SMBus host header (Slave
- mode)
- 6
- 1
-
-
- DEFSMB
- SMBus device default address (Slave
- mode)
- 5
- 1
-
-
- RXGC
- General call address (Slave
- mode)
- 4
- 1
-
-
- TR
- Transmitter/receiver
- 2
- 1
-
-
- I2CBSY
- Bus busy
- 1
- 1
-
-
- MASTER
- Master/slave
- 0
- 1
-
-
-
-
- CKCFG
- CKCFG
- Clock configure register
- 0x1C
- 0x20
- read-write
- 0x0000
-
-
- FAST
- I2C master mode selection
- 15
- 1
-
-
- DTCY
- Fast mode duty cycle
- 14
- 1
-
-
- CLKC
- Clock control register in Fast/Standard
- mode (Master mode)
- 0
- 12
-
-
-
-
- RT
- RT
- Rise time register
- 0x20
- 0x20
- read-write
- 0x0002
-
-
- RISETIME
- Maximum rise time in master mode
- 0
- 7
-
-
-
-
- SAMCS
- SAMCS
- SAM control and status register
- 0x80
- 0x20
- read-write
- 0x0000
-
-
- RFR
- Rxframe rise flag
- 15
- 1
-
-
- RFF
- Rxframe fall flag
- 14
- 1
-
-
- TFR
- Txframe rise flag
- 13
- 1
-
-
- TFF
- Txframe fall flag
- 12
- 1
-
-
- RXF
- level of rx frame signal
- 9
- 1
-
-
- TXF
- level of tx frame signal
- 8
- 1
-
-
- RFRIE
- Rx frame rise interrupt enable
- 7
- 1
-
-
- RFFIE
- Rx frame fall interrupt enable
- 6
- 1
-
-
- TFRIE
- Tx frame rise interrupt enable
- 5
- 1
-
-
- TFFIE
- Tx frame fall interrupt enable
- 4
- 1
-
-
- STOEN
- SAM_V interface timeout detect enable
- 1
- 1
-
-
- SAMEN
- SAM_V interface enable
- 0
- 1
-
-
-
-
- FMPCFG
- FMPCFG
- Fast-mode-plus configure register
- 0x90
- 0x20
- read-write
- 0x0000
-
-
- FMPEN
- Fast-mode-plus enable
- 0
- 1
-
-
-
-
-
-
- I2C1
- 0x40005800
-
- I2C1_EV
- 24
-
-
- I2C1_ER
- 34
-
-
-
- NVIC
- Nested Vectored Interrupt
- Controller
- NVIC
- 0xE000E100
-
- 0x0
- 0xF00
- registers
-
-
- 0x33D
- 0xC3
- reserved
-
-
-
- ISER0
- ISER0
- Interrupt Set Enable Register
- 0x0
- 0x20
- read-write
- 0x00000000
-
-
- SETENA
- SETENA
- 0
- 32
-
-
-
-
- ISER1
- ISER1
- Interrupt Set Enable Register
- 0x04
- 0x20
- read-write
- 0x00000000
-
-
- SETENA
- SETENA
- 0
- 32
-
-
-
-
- ISER2
- ISER2
- Interrupt Set Enable Register
- 0x08
- 0x20
- read-write
- 0x00000000
-
-
- SETENA
- SETENA
- 0
- 32
-
-
-
-
- ISER3
- ISER3
- Interrupt Set Enable Register
- 0x0C
- 0x20
- read-write
- 0x00000000
-
-
- SETENA
- SETENA
- 0
- 32
-
-
-
-
- ISER4
- ISER4
- Interrupt Set Enable Register
- 0x10
- 0x20
- read-write
- 0x00000000
-
-
- SETENA
- SETENA
- 0
- 32
-
-
-
-
- ISER5
- ISER5
- Interrupt Set Enable Register
- 0x14
- 0x20
- read-write
- 0x00000000
-
-
- SETENA
- SETENA
- 0
- 32
-
-
-
-
- ISER6
- ISER6
- Interrupt Set Enable Register
- 0x18
- 0x20
- read-write
- 0x00000000
-
-
- SETENA
- SETENA
- 0
- 32
-
-
-
-
- ISER7
- ISER7
- Interrupt Set Enable Register
- 0x1C
- 0x20
- read-write
- 0x00000000
-
-
- SETENA
- SETENA
- 0
- 32
-
-
-
-
- ISER8
- ISER8
- Interrupt Set Enable Register
- 0x20
- 0x20
- read-write
- 0x00000000
-
-
- SETENA
- SETENA
- 0
- 32
-
-
-
-
- ISER9
- ISER9
- Interrupt Set Enable Register
- 0x24
- 0x20
- read-write
- 0x00000000
-
-
- SETENA
- SETENA
- 0
- 32
-
-
-
-
- ISER10
- ISER10
- Interrupt Set Enable Register
- 0x28
- 0x20
- read-write
- 0x00000000
-
-
- SETENA
- SETENA
- 0
- 32
-
-
-
-
- ISER11
- ISER11
- Interrupt Set Enable Register
- 0x2C
- 0x20
- read-write
- 0x00000000
-
-
- SETENA
- SETENA
- 0
- 32
-
-
-
-
- ISER12
- ISER12
- Interrupt Set Enable Register
- 0x30
- 0x20
- read-write
- 0x00000000
-
-
- SETENA
- SETENA
- 0
- 32
-
-
-
-
- ISER13
- ISER13
- Interrupt Set Enable Register
- 0x34
- 0x20
- read-write
- 0x00000000
-
-
- SETENA
- SETENA
- 0
- 32
-
-
-
-
- ISER14
- ISER14
- Interrupt Set Enable Register
- 0x38
- 0x20
- read-write
- 0x00000000
-
-
- SETENA
- SETENA
- 0
- 32
-
-
-
-
- ISER15
- ISER15
- Interrupt Set Enable Register
- 0x3C
- 0x20
- read-write
- 0x00000000
-
-
- SETENA
- SETENA
- 0
- 32
-
-
-
-
- ICER0
- ICER0
- Interrupt Clear Enable
- Register
- 0x80
- 0x20
- read-write
- 0x00000000
-
-
- CLRENA
- CLRENA
- 0
- 32
-
-
-
-
- ICER1
- ICER1
- Interrupt Clear Enable
- Register
- 0x84
- 0x20
- read-write
- 0x00000000
-
-
- CLRENA
- CLRENA
- 0
- 32
-
-
-
-
- ICER2
- ICER2
- Interrupt Clear Enable
- Register
- 0x8C
- 0x20
- read-write
- 0x00000000
-
-
- CLRENA
- CLRENA
- 0
- 32
-
-
-
-
- ICER3
- ICER3
- Interrupt Clear Enable
- Register
- 0x90
- 0x20
- read-write
- 0x00000000
-
-
- CLRENA
- CLRENA
- 0
- 32
-
-
-
-
- ICER4
- ICER4
- Interrupt Clear Enable
- Register
- 0x94
- 0x20
- read-write
- 0x00000000
-
-
- CLRENA
- CLRENA
- 0
- 32
-
-
-
-
- ICER5
- ICER5
- Interrupt Clear Enable
- Register
- 0x98
- 0x20
- read-write
- 0x00000000
-
-
- CLRENA
- CLRENA
- 0
- 32
-
-
-
-
- ICER6
- ICER6
- Interrupt Clear Enable
- Register
- 0x9C
- 0x20
- read-write
- 0x00000000
-
-
- CLRENA
- CLRENA
- 0
- 32
-
-
-
-
- ICER7
- ICER7
- Interrupt Clear Enable
- Register
- 0xA0
- 0x20
- read-write
- 0x00000000
-
-
- CLRENA
- CLRENA
- 0
- 32
-
-
-
-
- ICER8
- ICER8
- Interrupt Clear Enable
- Register
- 0xA4
- 0x20
- read-write
- 0x00000000
-
-
- CLRENA
- CLRENA
- 0
- 32
-
-
-
-
- ICER9
- ICER9
- Interrupt Clear Enable
- Register
- 0xA8
- 0x20
- read-write
- 0x00000000
-
-
- CLRENA
- CLRENA
- 0
- 32
-
-
-
-
- ICER10
- ICER10
- Interrupt Clear Enable
- Register
- 0xAC
- 0x20
- read-write
- 0x00000000
-
-
- CLRENA
- CLRENA
- 0
- 32
-
-
-
-
- ICER11
- ICER11
- Interrupt Clear Enable
- Register
- 0xB0
- 0x20
- read-write
- 0x00000000
-
-
- CLRENA
- CLRENA
- 0
- 32
-
-
-
-
- ICER12
- ICER12
- Interrupt Clear Enable
- Register
- 0xB4
- 0x20
- read-write
- 0x00000000
-
-
- CLRENA
- CLRENA
- 0
- 32
-
-
-
-
- ICER13
- ICER13
- Interrupt Clear Enable
- Register
- 0xB8
- 0x20
- read-write
- 0x00000000
-
-
- CLRENA
- CLRENA
- 0
- 32
-
-
-
-
- ICER14
- ICER14
- Interrupt Clear Enable
- Register
- 0xBC
- 0x20
- read-write
- 0x00000000
-
-
- CLRENA
- CLRENA
- 0
- 32
-
-
-
-
- ICER15
- ICER15
- Interrupt Clear Enable
- Register
- 0xC0
- 0x20
- read-write
- 0x00000000
-
-
- CLRENA
- CLRENA
- 0
- 32
-
-
-
-
- ISPR0
- ISPR0
- Interrupt Set-Pending Register
- 0x100
- 0x20
- read-write
- 0x00000000
-
-
- SETPEND
- SETPEND
- 0
- 32
-
-
-
-
- ISPR1
- ISPR1
- Interrupt Set-Pending Register
- 0x104
- 0x20
- read-write
- 0x00000000
-
-
- SETPEND
- SETPEND
- 0
- 32
-
-
-
-
- ISPR2
- ISPR2
- Interrupt Set-Pending Register
- 0x108
- 0x20
- read-write
- 0x00000000
-
-
- SETPEND
- SETPEND
- 0
- 32
-
-
-
-
- ISPR3
- ISPR3
- Interrupt Set-Pending Register
- 0x10C
- 0x20
- read-write
- 0x00000000
-
-
- SETPEND
- SETPEND
- 0
- 32
-
-
-
-
- ISPR4
- ISPR4
- Interrupt Set-Pending Register
- 0x110
- 0x20
- read-write
- 0x00000000
-
-
- SETPEND
- SETPEND
- 0
- 32
-
-
-
-
- ISPR5
- ISPR5
- Interrupt Set-Pending Register
- 0x114
- 0x20
- read-write
- 0x00000000
-
-
- SETPEND
- SETPEND
- 0
- 32
-
-
-
-
- ISPR6
- ISPR6
- Interrupt Set-Pending Register
- 0x118
- 0x20
- read-write
- 0x00000000
-
-
- SETPEND
- SETPEND
- 0
- 32
-
-
-
-
- ISPR7
- ISPR7
- Interrupt Set-Pending Register
- 0x11C
- 0x20
- read-write
- 0x00000000
-
-
- SETPEND
- SETPEND
- 0
- 32
-
-
-
-
- ISPR8
- ISPR8
- Interrupt Set-Pending Register
- 0x120
- 0x20
- read-write
- 0x00000000
-
-
- SETPEND
- SETPEND
- 0
- 32
-
-
-
-
- ISPR9
- ISPR9
- Interrupt Set-Pending Register
- 0x124
- 0x20
- read-write
- 0x00000000
-
-
- SETPEND
- SETPEND
- 0
- 32
-
-
-
-
- ISPR10
- ISPR10
- Interrupt Set-Pending Register
- 0x128
- 0x20
- read-write
- 0x00000000
-
-
- SETPEND
- SETPEND
- 0
- 32
-
-
-
-
- ISPR11
- ISPR11
- Interrupt Set-Pending Register
- 0x12C
- 0x20
- read-write
- 0x00000000
-
-
- SETPEND
- SETPEND
- 0
- 32
-
-
-
-
- ISPR12
- ISPR12
- Interrupt Set-Pending Register
- 0x130
- 0x20
- read-write
- 0x00000000
-
-
- SETPEND
- SETPEND
- 0
- 32
-
-
-
-
- ISPR13
- ISPR13
- Interrupt Set-Pending Register
- 0x134
- 0x20
- read-write
- 0x00000000
-
-
- SETPEND
- SETPEND
- 0
- 32
-
-
-
-
- ISPR14
- ISPR14
- Interrupt Set-Pending Register
- 0x138
- 0x20
- read-write
- 0x00000000
-
-
- SETPEND
- SETPEND
- 0
- 32
-
-
-
-
- ISPR15
- ISPR15
- Interrupt Set-Pending Register
- 0x13C
- 0x20
- read-write
- 0x00000000
-
-
- SETPEND
- SETPEND
- 0
- 32
-
-
-
-
- ICPR0
- ICPR0
- Interrupt Clear-Pending
- Register
- 0x180
- 0x20
- read-write
- 0x00000000
-
-
- CLRPEND
- CLRPEND
- 0
- 32
-
-
-
-
- ICPR1
- ICPR1
- Interrupt Clear-Pending
- Register
- 0x184
- 0x20
- read-write
- 0x00000000
-
-
- CLRPEND
- CLRPEND
- 0
- 32
-
-
-
-
- ICPR2
- ICPR2
- Interrupt Clear-Pending
- Register
- 0x188
- 0x20
- read-write
- 0x00000000
-
-
- CLRPEND
- CLRPEND
- 0
- 32
-
-
-
-
- ICPR3
- ICPR3
- Interrupt Clear-Pending
- Register
- 0x18C
- 0x20
- read-write
- 0x00000000
-
-
- CLRPEND
- CLRPEND
- 0
- 32
-
-
-
-
- ICPR4
- ICPR4
- Interrupt Clear-Pending
- Register
- 0x190
- 0x20
- read-write
- 0x00000000
-
-
- CLRPEND
- CLRPEND
- 0
- 32
-
-
-
-
- ICPR5
- ICPR5
- Interrupt Clear-Pending
- Register
- 0x194
- 0x20
- read-write
- 0x00000000
-
-
- CLRPEND
- CLRPEND
- 0
- 32
-
-
-
-
- ICPR6
- ICPR6
- Interrupt Clear-Pending
- Register
- 0x198
- 0x20
- read-write
- 0x00000000
-
-
- CLRPEND
- CLRPEND
- 0
- 32
-
-
-
-
- ICPR7
- ICPR7
- Interrupt Clear-Pending
- Register
- 0x19C
- 0x20
- read-write
- 0x00000000
-
-
- CLRPEND
- CLRPEND
- 0
- 32
-
-
-
-
- ICPR8
- ICPR8
- Interrupt Clear-Pending
- Register
- 0x1A0
- 0x20
- read-write
- 0x00000000
-
-
- CLRPEND
- CLRPEND
- 0
- 32
-
-
-
-
- ICPR9
- ICPR9
- Interrupt Clear-Pending
- Register
- 0x1A4
- 0x20
- read-write
- 0x00000000
-
-
- CLRPEND
- CLRPEND
- 0
- 32
-
-
-
-
- ICPR10
- ICPR10
- Interrupt Clear-Pending
- Register
- 0x1A8
- 0x20
- read-write
- 0x00000000
-
-
- CLRPEND
- CLRPEND
- 0
- 32
-
-
-
-
- ICPR11
- ICPR11
- Interrupt Clear-Pending
- Register
- 0x1AC
- 0x20
- read-write
- 0x00000000
-
-
- CLRPEND
- CLRPEND
- 0
- 32
-
-
-
-
- ICPR12
- ICPR12
- Interrupt Clear-Pending
- Register
- 0x1B0
- 0x20
- read-write
- 0x00000000
-
-
- CLRPEND
- CLRPEND
- 0
- 32
-
-
-
-
- ICPR13
- ICPR13
- Interrupt Clear-Pending
- Register
- 0x1B4
- 0x20
- read-write
- 0x00000000
-
-
- CLRPEND
- CLRPEND
- 0
- 32
-
-
-
-
- ICPR14
- ICPR14
- Interrupt Clear-Pending
- Register
- 0x1B8
- 0x20
- read-write
- 0x00000000
-
-
- CLRPEND
- CLRPEND
- 0
- 32
-
-
-
-
- ICPR15
- ICPR15
- Interrupt Clear-Pending
- Register
- 0x1BC
- 0x20
- read-write
- 0x00000000
-
-
- CLRPEND
- CLRPEND
- 0
- 32
-
-
-
-
- IABR0
- IABR0
- Interrupt Active bit
- Register
- 0x200
- 0x20
- read-write
- 0x00000000
-
-
- IABR
- IABR
- 0
- 32
-
-
-
-
- IABR1
- IABR1
- Interrupt Active bit
- Register
- 0x204
- 0x20
- read-write
- 0x00000000
-
-
- IABR
- IABR
- 0
- 32
-
-
-
-
- IABR2
- IABR2
- Interrupt Active bit
- Register
- 0x208
- 0x20
- read-write
- 0x00000000
-
-
- IABR
- IABR
- 0
- 32
-
-
-
-
- IABR3
- IABR3
- Interrupt Active bit
- Register
- 0x20C
- 0x20
- read-write
- 0x00000000
-
-
- IABR
- IABR
- 0
- 32
-
-
-
-
- IABR4
- IABR4
- Interrupt Active bit
- Register
- 0x210
- 0x20
- read-write
- 0x00000000
-
-
- IABR
- IABR
- 0
- 32
-
-
-
-
- IABR5
- IABR5
- Interrupt Active bit
- Register
- 0x214
- 0x20
- read-write
- 0x00000000
-
-
- IABR
- IABR
- 0
- 32
-
-
-
-
- IABR6
- IABR6
- Interrupt Active bit
- Register
- 0x218
- 0x20
- read-write
- 0x00000000
-
-
- IABR
- IABR
- 0
- 32
-
-
-
-
- IABR7
- IABR7
- Interrupt Active bit
- Register
- 0x21C
- 0x20
- read-write
- 0x00000000
-
-
- IABR
- IABR
- 0
- 32
-
-
-
-
- IABR8
- IABR8
- Interrupt Active bit
- Register
- 0x220
- 0x20
- read-write
- 0x00000000
-
-
- IABR
- IABR
- 0
- 32
-
-
-
-
- IABR9
- IABR9
- Interrupt Active bit
- Register
- 0x224
- 0x20
- read-write
- 0x00000000
-
-
- IABR
- IABR
- 0
- 32
-
-
-
-
- IABR10
- IABR10
- Interrupt Active bit
- Register
- 0x228
- 0x20
- read-write
- 0x00000000
-
-
- IABR
- IABR
- 0
- 32
-
-
-
-
- IABR11
- IABR11
- Interrupt Active bit
- Register
- 0x22C
- 0x20
- read-write
- 0x00000000
-
-
- IABR
- IABR
- 0
- 32
-
-
-
-
- IABR12
- IABR12
- Interrupt Active bit
- Register
- 0x230
- 0x20
- read-write
- 0x00000000
-
-
- IABR
- IABR
- 0
- 32
-
-
-
-
- IABR13
- IABR13
- Interrupt Active bit
- Register
- 0x234
- 0x20
- read-write
- 0x00000000
-
-
- IABR
- IABR
- 0
- 32
-
-
-
-
- IABR14
- IABR14
- Interrupt Active bit
- Register
- 0x238
- 0x20
- read-write
- 0x00000000
-
-
- IABR
- IABR
- 0
- 32
-
-
-
-
- IABR15
- IABR15
- Interrupt Active bit
- Register
- 0x23C
- 0x20
- read-write
- 0x00000000
-
-
- IABR
- IABR
- 0
- 32
-
-
-
-
- ITNS0
- ITNS0
- Interrupt Active bit
- Register
- 0x280
- 0x20
- read-write
- 0x00000000
-
-
- ITNS
- ITNS
- 0
- 32
-
-
-
-
- ITNS1
- ITNS1
- Interrupt Active bit
- Register
- 0x284
- 0x20
- read-write
- 0x00000000
-
-
- ITNS
- ITNS
- 0
- 32
-
-
-
-
- ITNS2
- ITNS2
- Interrupt Active bit
- Register
- 0x288
- 0x20
- read-write
- 0x00000000
-
-
- ITNS
- ITNS
- 0
- 32
-
-
-
-
- ITNS3
- ITNS3
- Interrupt Active bit
- Register
- 0x28C
- 0x20
- read-write
- 0x00000000
-
-
- ITNS
- ITNS
- 0
- 32
-
-
-
-
- ITNS4
- ITNS4
- Interrupt Active bit
- Register
- 0x290
- 0x20
- read-write
- 0x00000000
-
-
- ITNS
- ITNS
- 0
- 32
-
-
-
-
- ITNS5
- ITNS5
- Interrupt Active bit
- Register
- 0x294
- 0x20
- read-write
- 0x00000000
-
-
- ITNS
- ITNS
- 0
- 32
-
-
-
-
- ITNS6
- ITNS6
- Interrupt Active bit
- Register
- 0x298
- 0x20
- read-write
- 0x00000000
-
-
- ITNS
- ITNS
- 0
- 32
-
-
-
-
- ITNS7
- ITNS7
- Interrupt Active bit
- Register
- 0x29C
- 0x20
- read-write
- 0x00000000
-
-
- ITNS
- ITNS
- 0
- 32
-
-
-
-
- ITNS8
- ITNS8
- Interrupt Active bit
- Register
- 0x2A0
- 0x20
- read-write
- 0x00000000
-
-
- ITNS
- ITNS
- 0
- 32
-
-
-
-
- ITNS9
- ITNS9
- Interrupt Active bit
- Register
- 0x2A4
- 0x20
- read-write
- 0x00000000
-
-
- ITNS
- ITNS
- 0
- 32
-
-
-
-
- ITNS10
- ITNS10
- Interrupt Active bit
- Register
- 0x2A8
- 0x20
- read-write
- 0x00000000
-
-
- ITNS
- ITNS
- 0
- 32
-
-
-
-
- ITNS11
- ITNS11
- Interrupt Active bit
- Register
- 0x2AC
- 0x20
- read-write
- 0x00000000
-
-
- ITNS
- ITNS
- 0
- 32
-
-
-
-
- ITNS12
- ITNS12
- Interrupt Active bit
- Register
- 0x2B0
- 0x20
- read-write
- 0x00000000
-
-
- ITNS
- ITNS
- 0
- 32
-
-
-
-
- ITNS13
- ITNS13
- Interrupt Active bit
- Register
- 0x2B4
- 0x20
- read-write
- 0x00000000
-
-
- ITNS
- ITNS
- 0
- 32
-
-
-
-
- ITNS14
- ITNS14
- Interrupt Active bit
- Register
- 0x2B8
- 0x20
- read-write
- 0x00000000
-
-
- ITNS
- ITNS
- 0
- 32
-
-
-
-
- ITNS15
- ITNS15
- Interrupt Active bit
- Register
- 0x2BC
- 0x20
- read-write
- 0x00000000
-
-
- ITNS
- ITNS
- 0
- 32
-
-
-
-
- IPR0
- IPR0
- Interrupt Priority Register 0
- 0x300
- 0x08
- read-write
- 0x00
-
-
- PRI_00
- PRI_00
- 0
- 8
-
-
-
-
- IPR1
- IPR1
- Interrupt Priority Register 1
- 0x301
- 0x08
- read-write
- 0x00
-
-
- PRI_01
- PRI_01
- 0
- 8
-
-
-
-
- IPR2
- IPR2
- Interrupt Priority Register 2
- 0x302
- 0x08
- read-write
- 0x00
-
-
- PRI_02
- PRI_02
- 0
- 8
-
-
-
-
- IPR3
- IPR3
- Interrupt Priority Register 3
- 0x303
- 0x08
- read-write
- 0x00
-
-
- PRI_03
- PRI_03
- 0
- 8
-
-
-
-
- IPR4
- IPR4
- Interrupt Priority Register 4
- 0x304
- 0x08
- read-write
- 0x00
-
-
- PRI_04
- PRI_04
- 0
- 8
-
-
-
-
- IPR5
- IPR5
- Interrupt Priority Register 5
- 0x305
- 0x08
- read-write
- 0x00
-
-
- PRI_05
- PRI_05
- 0
- 8
-
-
-
-
- IPR6
- IPR6
- Interrupt Priority Register 6
- 0x306
- 0x08
- read-write
- 0x00
-
-
- PRI_06
- PRI_06
- 0
- 8
-
-
-
-
- IPR7
- IPR7
- Interrupt Priority Register 7
- 0x307
- 0x08
- read-write
- 0x00
-
-
- PRI_07
- PRI_07
- 0
- 8
-
-
-
-
- IPR8
- IPR8
- Interrupt Priority Register 8
- 0x308
- 0x08
- read-write
- 0x00
-
-
- PRI_08
- PRI_08
- 0
- 8
-
-
-
-
- IPR9
- IPR9
- Interrupt Priority Register 9
- 0x309
- 0x08
- read-write
- 0x00
-
-
- PRI_09
- PRI_09
- 0
- 8
-
-
-
-
- IPR10
- IPR10
- Interrupt Priority Register 10
- 0x30A
- 0x08
- read-write
- 0x00
-
-
- PRI_10
- PRI_10
- 0
- 8
-
-
-
-
- IPR11
- IPR11
- Interrupt Priority Register 11
- 0x30B
- 0x08
- read-write
- 0x00
-
-
- PRI_11
- PRI_11
- 0
- 8
-
-
-
-
- IPR12
- IPR12
- Interrupt Priority Register 12
- 0x30C
- 0x08
- read-write
- 0x00
-
-
- PRI_12
- PRI_12
- 0
- 8
-
-
-
-
- IPR13
- IPR13
- Interrupt Priority Register 13
- 0x30D
- 0x08
- read-write
- 0x00
-
-
- PRI_13
- PRI_13
- 0
- 8
-
-
-
-
- IPR14
- IPR14
- Interrupt Priority Register 14
- 0x30E
- 0x08
- read-write
- 0x00
-
-
- PRI_14
- PRI_14
- 0
- 8
-
-
-
-
- IPR15
- IPR15
- Interrupt Priority Register 15
- 0x30F
- 0x08
- read-write
- 0x00
-
-
- PRI_15
- PRI_15
- 0
- 8
-
-
-
-
- IPR16
- IPR16
- Interrupt Priority Register 16
- 0x310
- 0x08
- read-write
- 0x00
-
-
- PRI_16
- PRI_16
- 0
- 8
-
-
-
-
- IPR17
- IPR17
- Interrupt Priority Register 17
- 0x311
- 0x08
- read-write
- 0x00
-
-
- PRI_17
- PRI_17
- 0
- 8
-
-
-
-
- IPR18
- IPR18
- Interrupt Priority Register 18
- 0x312
- 0x08
- read-write
- 0x00
-
-
- PRI_18
- PRI_18
- 0
- 8
-
-
-
-
- IPR19
- IPR19
- Interrupt Priority Register 19
- 0x313
- 0x08
- read-write
- 0x00
-
-
- PRI_19
- PRI_19
- 0
- 8
-
-
-
-
- IPR20
- IPR20
- Interrupt Priority Register 20
- 0x314
- 0x08
- read-write
- 0x00
-
-
- PRI_20
- PRI_20
- 0
- 8
-
-
-
-
- IPR21
- IPR21
- Interrupt Priority Register 21
- 0x315
- 0x08
- read-write
- 0x00
-
-
- PRI_21
- PRI_21
- 0
- 8
-
-
-
-
- IPR22
- IPR22
- Interrupt Priority Register 22
- 0x316
- 0x08
- read-write
- 0x00
-
-
- PRI_22
- PRI_22
- 0
- 8
-
-
-
-
- IPR23
- IPR23
- Interrupt Priority Register 23
- 0x317
- 0x08
- read-write
- 0x00
-
-
- PRI_23
- PRI_23
- 0
- 8
-
-
-
-
- IPR24
- IPR24
- Interrupt Priority Register 24
- 0x318
- 0x08
- read-write
- 0x00
-
-
- PRI_24
- PRI_24
- 0
- 8
-
-
-
-
- IPR25
- IPR25
- Interrupt Priority Register 25
- 0x319
- 0x08
- read-write
- 0x00
-
-
- PRI_25
- PRI_25
- 0
- 8
-
-
-
-
- IPR26
- IPR26
- Interrupt Priority Register 26
- 0x31A
- 0x08
- read-write
- 0x00
-
-
- PRI_26
- PRI_26
- 0
- 8
-
-
-
-
- IPR27
- IPR27
- Interrupt Priority Register 27
- 0x31B
- 0x08
- read-write
- 0x00
-
-
- PRI_27
- PRI_27
- 0
- 8
-
-
-
-
- IPR28
- IPR28
- Interrupt Priority Register 28
- 0x31C
- 0x08
- read-write
- 0x00
-
-
- PRI_28
- PRI_28
- 0
- 8
-
-
-
-
- IPR29
- IPR29
- Interrupt Priority Register 29
- 0x31D
- 0x08
- read-write
- 0x00
-
-
- PRI_29
- PRI_29
- 0
- 8
-
-
-
-
- IPR30
- IPR30
- Interrupt Priority Register 30
- 0x31E
- 0x08
- read-write
- 0x00
-
-
- PRI_30
- PRI_30
- 0
- 8
-
-
-
-
- IPR31
- IPR31
- Interrupt Priority Register 31
- 0x31F
- 0x08
- read-write
- 0x00
-
-
- PRI_31
- PRI_31
- 0
- 8
-
-
-
-
-
-
- PMU
- Power management unit
- PMU
- 0x40007000
-
- 0x0
- 0x400
- registers
-
-
-
- CTL
- CTL
- power control register
- 0x0
- 0x20
- read-write
- 0x00004000
-
-
- LDOVS
- LDO output voltage select
- 14
- 2
-
-
- BKPWEN
- Backup Domain Write Enable
- 8
- 1
-
-
- LVDT
- Low Voltage Detector Threshold
- 5
- 3
-
-
- LVDEN
- Low Voltage Detector Enable
- 4
- 1
-
-
- STBRST
- Standby Flag Reset
- 3
- 1
-
-
- WURST
- Wakeup Flag Reset
- 2
- 1
-
-
- STBMOD
- Standby Mode
- 1
- 1
-
-
- LDOLP
- LDO Low Power Mode
- 0
- 1
-
-
-
-
- CS
- CS
- power control/status register
- 0x04
- 0x20
- 0x00000000
-
-
- WUPEN6
- WKUP pin6 Enable
- 14
- 1
- read-write
-
-
- WUPEN5
- WKUP pin5 Enable
- 13
- 1
- read-write
-
-
- WUPEN1
- WKUP pin1 Enable
- 9
- 1
- read-write
-
-
- WUPEN0
- WKUP pin0 Enable
- 8
- 1
- read-write
-
-
- LVDF
- Low Voltage Detector Status Flag
- 2
- 1
- read-only
-
-
- STBF
- Standby flag
- 1
- 1
- read-only
-
-
- WUF
- Wakeup flag
- 0
- 1
- read-only
-
-
-
-
-
-
- RCU
- Reset and clock unit
- RCU
- 0x40021000
-
- 0x0
- 0x400
- registers
-
-
- RCU
- 4
-
-
-
- CTL0
- CTL0
- Control register 0
- 0x0
- 0x20
- 0x00000083
-
-
- PLLSTB
- PLL Clock Stabilization Flag
- 25
- 1
- read-only
-
-
- PLLEN
- PLL enable
- 24
- 1
- read-write
-
-
- CKMEN
- HXTAL Clock Monitor Enable
- 19
- 1
- read-write
-
-
- HXTALBPS
- External crystal oscillator (HXTAL) clock bypass mode enable
- 18
- 1
- read-write
-
-
- HXTALSTB
- External crystal oscillator (HXTAL) clock stabilization flag
- 17
- 1
- read-only
-
-
- HXTALEN
- External High Speed oscillator Enable
- 16
- 1
- read-write
-
-
- IRC8MCALIB
- High Speed Internal Oscillator calibration value register
- 8
- 8
- read-only
-
-
- IRC8MADJ
- High Speed Internal Oscillator clock trim adjust value
- 3
- 5
- read-write
-
-
- IRC8MSTB
- IRC8M High Speed Internal Oscillator stabilization Flag
- 1
- 1
- read-only
-
-
- IRC8MEN
- Internal High Speed oscillator Enable
- 0
- 1
- read-write
-
-
-
-
- CFG0
- CFG0
- Clock configuration register 0
- (RCU_CFG0)
- 0x04
- 0x20
- 0x00000000
-
-
- PLLDV
- The CK_PLL divide by 1 or 2 for CK_OUT
-
- 31
- 1
- read-write
-
-
- CKOUTDIV
- The CK_OUT divider which the CK_OUT frequency can be reduced
- 28
- 3
- read-write
-
-
- PLLMF_MSB
- Bit 4 of PLLMF register
- 27
- 1
- read-write
-
-
- CKOUTSEL
- CK_OUT Clock Source Selection
- 24
- 3
- read-write
-
-
- PLLMF
- PLL multiply factor
- 18
- 4
- read-write
-
-
- PLLPREDV
- HXTAL divider for PLL source clock selection.
- 17
- 1
- read-write
-
-
- PLLSEL
- PLL Clock Source Selection
- 16
- 1
- read-write
-
-
- ADCPSC
- ADC clock prescaler selection
- 14
- 2
- read-write
-
-
- APB2PSC
- APB2 prescaler selection
- 11
- 3
- read-write
-
-
- APB1PSC
- APB1 prescaler selection
- 8
- 3
- read-write
-
-
- AHBPSC
- AHB prescaler selection
- 4
- 4
- read-write
-
-
- SCSS
- System clock switch status
- 2
- 2
- read-only
-
-
- SCS
- System clock switch
- 0
- 2
- read-write
-
-
-
-
- INT
- INT
- Clock interrupt register
- (RCU_INT)
- 0x08
- 0x20
- 0x00000000
-
-
- CKMIC
- HXTAL Clock Stuck Interrupt Clear
- 23
- 1
- write-only
-
-
- IRC28MSTBIC
- IRC28M stabilization Interrupt Clear
- 21
- 1
- write-only
-
-
- PLLSTBIC
- PLL stabilization Interrupt Clear
- 20
- 1
- write-only
-
-
- HXTALSTBIC
- HXTAL Stabilization Interrupt Clear
- 19
- 1
- write-only
-
-
- IRC8MSTBIC
- IRC8M Stabilization Interrupt Clear
- 18
- 1
- write-only
-
-
- LXTALSTBIC
- LXTAL Stabilization Interrupt Clear
- 17
- 1
- write-only
-
-
- IRC40KSTBIC
- IRC40K Stabilization Interrupt Clear
- 16
- 1
- write-only
-
-
- IRC28MSTBIE
- IRC28M Stabilization Interrupt Enable
- 13
- 1
- read-write
-
-
- PLLSTBIE
- PLL Stabilization Interrupt Enable
- 12
- 1
- read-write
-
-
- HXTALSTBIE
- HXTAL Stabilization Interrupt Enable
- 11
- 1
- read-write
-
-
- IRC8MSTBIE
- IRC8M Stabilization Interrupt Enable
- 10
- 1
- read-write
-
-
- LXTALSTBIE
- LXTAL Stabilization Interrupt Enable
- 9
- 1
- read-write
-
-
- IRC40KSTBIE
- IRC40K Stabilization interrupt enable
- 8
- 1
- read-write
-
-
- CKMIF
- HXTAL Clock Stuck Interrupt Flag
- 7
- 1
- read-only
-
-
- IRC28MSTBIF
- IRC28M stabilization interrupt flag
- 5
- 1
- read-only
-
-
- PLLSTBIF
- PLL stabilization interrupt flag
- 4
- 1
- read-only
-
-
- HXTALSTBIF
- HXTAL stabilization interrupt flag
- 3
- 1
- read-only
-
-
- IRC8MSTBIF
- IRC8M stabilization interrupt flag
- 2
- 1
- read-only
-
-
- LXTALSTBIF
- LXTAL stabilization interrupt flag
- 1
- 1
- read-only
-
-
- IRC40KSTBIF
- IRC40K stabilization interrupt flag
- 0
- 1
- read-only
-
-
-
-
- APB2RST
- APB2RST
- APB2 reset register
- (RCU_APB2RST)
- 0x0C
- 0x20
- read-write
- 0x00000000
-
-
- TIMER16RST
- TIMER16 reset
- 18
- 1
-
-
- TIMER15RST
- TIMER15 reset
- 17
- 1
-
-
- TIMER14RST
- TIMER14 reset
- 16
- 1
-
-
- USART0RST
- USART0 Reset
- 14
- 1
-
-
- SPI0RST
- SPI0 Reset
- 12
- 1
-
-
- TIMER0RST
- TIMER0 reset
- 11
- 1
-
-
- ADCRST
- ADC reset
- 9
- 1
-
-
- CFGCMPRST
- System configuration and comparator reset
- 0
- 1
-
-
-
-
- APB1RST
- APB1RST
- APB1 reset register
- (RCU_APB1RST)
- 0x10
- 0x20
- read-write
- 0x00000000
-
-
- PMURST
- Power control reset
- 28
- 1
-
-
- I2C1RST
- I2C1 reset
- 22
- 1
-
-
- I2C0RST
- I2C0 reset
- 21
- 1
-
-
- USART1RST
- USART1 reset
- 17
- 1
-
-
- SPI1RST
- SPI1 reset
- 14
- 1
-
-
- WWDGTRST
- Window watchdog timer reset
- 11
- 1
-
-
- TIMER13RST
- TIMER13 timer reset
- 8
- 1
-
-
- TIMER5RST
- TIMER5 timer reset
- 4
- 1
-
-
- TIMER2RST
- TIMER2 timer reset
- 1
- 1
-
-
-
-
- AHBEN
- AHBEN
- AHB enable register
- (RCU_AHBEN)
- 0x14
- 0x20
- read-write
- 0x00000014
-
-
- PFEN
- GPIO port F clock enable
- 22
- 1
-
-
- PCEN
- GPIO port C clock enable
- 19
- 1
-
-
- PBEN
- GPIO port B clock enable
- 18
- 1
-
-
- PAEN
- GPIO port A clock enable
- 17
- 1
-
-
- CRCEN
- CRC clock enable
- 6
- 1
-
-
- FMCSPEN
- FMC clock during sleep mode enable
- 4
- 1
-
-
- SRAMSPEN
- SRAM interface clock during sleep mode enable
- 2
- 1
-
-
- DMAEN
- DMA clock enable
- 0
- 1
-
-
-
-
- APB2EN
- APB2EN
- APB2 enable register
- (RCU_APB2EN)
- 0x18
- 0x20
- read-write
- 0x00000000
-
-
- DBGMCUEN
- DBGMCU clock enable
- 22
- 1
-
-
- TIMER16EN
- TIMER16 timer clock enable
- 18
- 1
-
-
- TIMER15EN
- TIMER15 timer clock enable
- 17
- 1
-
-
- TIMER14EN
- TIMER14 timer clock enable
- 16
- 1
-
-
- USART0EN
- USART0 clock enable
- 14
- 1
-
-
- SPI0EN
- SPI0 clock enable
- 12
- 1
-
-
- TIMER0EN
- TIMER0 timer clock enable
- 11
- 1
-
-
- ADCEN
- ADC interface clock enable
- 9
- 1
-
-
- CFGCMPEN
- System configuration and comparator clock enable
- 0
- 1
-
-
-
-
- APB1EN
- APB1EN
- APB1 enable register
- (RCU_APB1EN)
- 0x1C
- 0x20
- read-write
- 0x00000000
-
-
- PMUEN
- Power interface clock enable
- 28
- 1
-
-
- I2C1EN
- I2C1 clock enable
- 22
- 1
-
-
- I2C0EN
- I2C0 clock enable
- 21
- 1
-
-
- USART1EN
- USART1 clock enable
- 17
- 1
-
-
- SPI1EN
- SPI1 clock enable
- 14
- 1
-
-
- WWDGTEN
- Window watchdog timer clock enable
- 11
- 1
-
-
- TIMER13EN
- TIMER13 timer clock enable
- 8
- 1
-
-
- TIMER5EN
- TIMER5 timer clock enable
- 4
- 1
-
-
- TIMER2EN
- TIMER2 timer clock enable
- 1
- 1
-
-
-
-
- BDCTL
- BDCTL
- Backup domain control register
- (RCU_BDCTL)
- 0x20
- 0x20
- 0x00000018
-
-
- BKPRST
- Backup domain reset
- 16
- 1
- read-write
-
-
- RTCEN
- RTC clock enable
- 15
- 1
- read-write
-
-
- RTCSRC
- RTC clock entry selection
- 8
- 2
- read-write
-
-
- LXTALDRI
- LXTAL drive capability
- 3
- 2
- read-write
-
-
- LXTALBPS
- LXTAL bypass mode enable
- 2
- 1
- read-write
-
-
- LXTALSTB
- External low-speed oscillator stabilization
- 1
- 1
- read-only
-
-
- LXTALEN
- LXTAL enable
- 0
- 1
- read-write
-
-
-
-
- RSTSCK
- RSTSCK
- Reset source /clock register
- (RCU_RSTSCK)
- 0x24
- 0x20
- 0x0C000000
-
-
- LPRSTF
- Low-power reset flag
- 31
- 1
- read-write
-
-
- WWDGTRSTF
- Window watchdog timer reset flag
- 30
- 1
- read-write
-
-
- FWDGTRSTF
- Free Watchdog timer reset flag
- 29
- 1
- read-write
-
-
- SWRSTF
- Software reset flag
- 28
- 1
- read-write
-
-
- PORRSTF
- Power reset flag
- 27
- 1
- read-write
-
-
- EPRSTF
- External PIN reset flag
- 26
- 1
- read-write
-
-
- OBLRSTF
- Option byte loader reset flag
- 25
- 1
- read-write
-
-
- RSTFC
- Reset flag clear
- 24
- 1
- read-write
-
-
- V12RSTF
- V12 domain Power reset flag
- 23
- 1
- read-write
-
-
- IRC40KSTB
- IRC40K stabilization
- 1
- 1
- read-only
-
-
- IRC40KEN
- IRC40K enable
- 0
- 1
- read-write
-
-
-
-
- AHBRST
- AHBRST
- AHB reset register
- 0x28
- 0x20
- read-write
- 0x00000000
-
-
- PFRST
- GPIO port F reset
- 22
- 1
-
-
- PCRST
- GPIO port C reset
- 19
- 1
-
-
- PBRST
- GPIO port B reset
- 18
- 1
-
-
- PARST
- GPIO port A reset
- 17
- 1
-
-
-
-
- CFG1
- CFG1
- Configuration register 1
- 0x2C
- 0x20
- read-write
- 0x00000000
-
-
- PREDV
- CK_HXTAL or CK_IRC48M divider previous PLL
- 0
- 4
-
-
-
-
- CFG2
- CFG2
- Configuration register 2
- 0x30
- 0x20
- read-write
- 0x00000000
-
-
- ADCPSC
- Bit 2 of ADCPSC
- 31
- 1
-
-
- IRC28MDIV
- CK_IRC28M divider 2 or not
- 16
- 1
-
-
- ADCSEL
- CK_ADC clock source selection
- 8
- 1
-
-
- USART0SEL
- CK_USART0 clock source selection
- 0
- 2
-
-
-
-
- CTL1
- CTL1
- Control register 1
- 0x34
- 0x20
- 0x00000080
-
-
- IRC28MCALIB
- Internal 28M RC Oscillator calibration value register
- 8
- 8
- read-only
-
-
- IRC28MADJ
- Internal 28M RC Oscillator clock trim adjust value
- 3
- 5
- read-write
-
-
- IRC28MSTB
- IRC28M Internal 28M RC Oscillator stabilization Flag
- 1
- 1
- read-only
-
-
- IRC28MEN
- IRC28M Internal 28M RC oscillator Enable
- 0
- 1
- read-write
-
-
-
-
- VKEY
- VKEY
- Voltage key register
- 0x100
- 0x20
- 0x00000000
-
-
- KEY
- The key of RCU_DSV register
- 0
- 32
- write
-
-
-
-
- DSV
- DSV
- Deep-sleep mode voltage register
- 0x134
- 0x20
- 0x00000000
-
-
- DSLPVS
- Deep-sleep mode voltage select
- 0
- 2
- read-write
-
-
-
-
-
-
- RTC
- Real-time clock
- RTC
- 0x40002800
-
- 0x0
- 0x400
- registers
-
-
- RTC
- 2
-
-
-
- TIME
- TIME
- time register
- 0x0
- 0x20
- read-write
- 0x00000000
-
-
- PM
- AM/PM mark
- 22
- 1
-
-
- HRT
- Hour tens in BCD code
- 20
- 2
-
-
- HRU
- Hour units in BCD format
- 16
- 4
-
-
- MNT
- Minute tens in BCD code
- 12
- 3
-
-
- MNU
- Minute units in BCD code
- 8
- 4
-
-
- SCT
- Second tens in BCD code
- 4
- 3
-
-
- SCU
- Second units in BCD code
- 0
- 4
-
-
-
-
- DATE
- DATE
- date register
- 0x4
- 0x20
- read-write
- 0x00002101
-
-
- YRT
- Year tens in BCD code
- 20
- 4
-
-
- YRU
- Year units in BCD code
- 16
- 4
-
-
- DOW
- Days of the week
- 13
- 3
-
-
- MONT
- Month tens in BCD code
- 12
- 1
-
-
- MONU
- Month units in BCD code
- 8
- 4
-
-
- DAYT
- Date tens in BCD code
- 4
- 2
-
-
- DAYU
- Date units in BCD code
- 0
- 4
-
-
-
-
- CTL
- CTL
- control register
- 0x8
- 0x20
- 0x00000000
-
-
- COEN
- Calibration output enable
- 23
- 1
- read-write
-
-
- OS
- Output selection
- 21
- 2
- read-write
-
-
- OPOL
- Output polarity
- 20
- 1
- read-write
-
-
- COS
- Calibration output
- selection
- 19
- 1
- read-write
-
-
- DSM
- Backup
- 18
- 1
- read-write
-
-
- S1H
- Subtract 1 hour (winter time
- change)
- 17
- 1
- write-only
-
-
- A1H
- Add 1 hour (summer time
- change)
- 16
- 1
- write-only
-
-
- TSIE
- Time-stamp interrupt
- enable
- 15
- 1
- read-write
-
-
- ALRM0IE
- Alarm A interrupt enable
- 12
- 1
- read-write
-
-
- TSEN
- timestamp enable
- 11
- 1
- read-write
-
-
- ALRM0EN
- Alarm A enable
- 8
- 1
- read-write
-
-
- CS
- Hour format
- 6
- 1
- read-write
-
-
- BPSHAD
- Bypass the shadow
- registers
- 5
- 1
- read-write
-
-
- REFEN
- RTC_REFIN reference clock detection
- enable (50 or 60 Hz)
- 4
- 1
- read-write
-
-
- TSEG
- Time-stamp event active
- edge
- 3
- 1
- read-write
-
-
-
-
- STAT
- STAT
- initialization and status
- register
- 0xC
- 0x20
- 0x00000007
-
-
- SCPF
- Recalibration pending Flag
- 16
- 1
- read-only
-
-
- TP1F
- RTC_TAMP1 detection flag
- 14
- 1
- read-write
-
-
- TP0F
- RTC_TAMP0 detection flag
- 13
- 1
- read-write
-
-
- TSOVRF
- Time-stamp overflow flag
- 12
- 1
- read-write
-
-
- TSF
- Time-stamp flag
- 11
- 1
- read-write
-
-
- ALRM0F
- Alarm A flag
- 8
- 1
- read-write
-
-
- INITM
- Initialization mode
- 7
- 1
- read-write
-
-
- INITF
- Initialization flag
- 6
- 1
- read-only
-
-
- RSYNF
- Registers synchronization
- flag
- 5
- 1
- read-write
-
-
- YCM
- Initialization status flag
- 4
- 1
- read-only
-
-
- SOPF
- Shift operation pending
- 3
- 1
- read-only
-
-
- ALRM0WF
- Alarm A write flag
- 0
- 1
- read-only
-
-
-
-
- PSC
- PSC
- prescaler register
- 0x10
- 0x20
- read-write
- 0x007F00FF
-
-
- FACTOR_A
- Asynchronous prescaler
- factor
- 16
- 7
-
-
- FACTOR_S
- Synchronous prescaler
- factor
- 0
- 15
-
-
-
-
- ALRM0TD
- ALRM0TD
- alarm A register
- 0x1C
- 0x20
- read-write
- 0x00000000
-
-
- MSKD
- Alarm date mask
- 31
- 1
-
-
- DOWS
- Week day selection
- 30
- 1
-
-
- DAYT
- Date tens in BCD format.
- 28
- 2
-
-
- DAYU
- Date units or day in BCD
- format.
- 24
- 4
-
-
- MSKH
- Alarm hours mask
- 23
- 1
-
-
- PM
- AM/PM notation
- 22
- 1
-
-
- HRT
- Hour tens in BCD format.
- 20
- 2
-
-
- HRU
- Hour units in BCD format.
- 16
- 4
-
-
- MSKM
- Alarm minutes mask
- 15
- 1
-
-
- MNT
- Minute tens in BCD format.
- 12
- 3
-
-
- MNU
- Minute units in BCD
- format.
- 8
- 4
-
-
- MSKS
- Alarm seconds mask
- 7
- 1
-
-
- SCT
- Second tens in BCD format.
- 4
- 3
-
-
- SCU
- Second units in BCD
- format.
- 0
- 4
-
-
-
-
- WPK
- WPK
- write protection register
- 0x24
- 0x20
- write-only
- 0x00000000
-
-
- WPK
- Write protection key
- 0
- 8
-
-
-
-
- SS
- SS
- sub second register
- 0x28
- 0x20
- read-only
- 0x00000000
-
-
- SSC
- Sub second value
- 0
- 16
-
-
-
-
- SHIFTCTL
- SHIFTCTL
- shift control register
- 0x2C
- 0x20
- write-only
- 0x00000000
-
-
- A1S
- One second add
- 31
- 1
-
-
- SFS
- Subtract a fraction of a
- second
- 0
- 15
-
-
-
-
- TTS
- TTS
- timestamp time register
- 0x30
- 0x20
- read-only
- 0x00000000
-
-
- PM
- AM/PM mark
- 22
- 1
-
-
- HRT
- Hour tens in BCD code
- 20
- 2
-
-
- HRU
- Hour units in BCD code
- 16
- 4
-
-
- MNT
- Minute tens in BCD code
- 12
- 3
-
-
- MNU
- Minute units in BCD code
- 8
- 4
-
-
- SCT
- Second tens in BCD code
- 4
- 3
-
-
- SCU
- Second units in BCD code
- 0
- 4
-
-
-
-
- DTS
- DTS
- Date of time stamp register
- 0x34
- 0x20
- read-only
- 0x00000000
-
-
- DOW
- Week day units
- 13
- 3
-
-
- MONT
- Month tens in BCD code
- 12
- 1
-
-
- MONU
- Month units in BCD code
- 8
- 4
-
-
- DAYT
- Date tens in BCD code
- 5
- 2
-
-
- DAYU
- Date units in BCD code
- 0
- 5
-
-
-
-
- SSTS
- SSTS
- time-stamp sub second register
- 0x38
- 0x20
- read-only
- 0x00000000
-
-
- SSC
- Sub second value
- 0
- 16
-
-
-
-
- HRFC
- HRFC
- High resolution frequency compensation register
- 0x3C
- 0x20
- read-write
- 0x00000000
-
-
- FREQI
- Increase RTC frequency by 488.5PPM
- 15
- 1
-
-
- CWND8
- Frequency compensation window 8 second selected
- 14
- 1
-
-
- CWND16
- Frequency compensation window 16 second selected
- 13
- 1
-
-
- CMSK
- Calibration mask number
- 0
- 9
-
-
-
-
- TAMP
- TAMP
- tamper and alternate function configuration
- register
- 0x40
- 0x20
- read-write
- 0x00000000
-
-
- PC15MDE
- PC15 mode
- 23
- 1
-
-
- PC15VAL
- PC15 value
- 22
- 1
-
-
- PC14MDE
- PC14 mode
- 21
- 1
-
-
- PC14VAL
- PC14 value
- 20
- 1
-
-
- PC13MDE
- PC13 mode
- 19
- 1
-
-
- PC13VAL
- RTC_ALARM output type/PC13
- value
- 18
- 1
-
-
- DISPU
- RTC_TAMPx pull-up disable
- 15
- 1
-
-
- PRCH
- RTC_TAMPx precharge
- duration
- 13
- 2
-
-
- FLT
- RTC_TAMPx filter count
- 11
- 2
-
-
- FREQ
- Tamper sampling frequency
- 8
- 3
-
-
- TPTS
- Activate timestamp on tamper detection
- event
- 7
- 1
-
-
- TP1EG
- Tamper 1 event trigger edge
- 4
- 1
-
-
- TP1EN
- Tamper 1 detection enable
- 3
- 1
-
-
- TPIE
- Tamper detection interrupt enable
- 2
- 1
-
-
- TP0EG
- Active level for RTC_TAMP1
- input
- 1
- 1
-
-
- TP0EN
- Tamper 0 event trigger edge
- 0
- 1
-
-
-
-
- ALRM0SS
- ALRM0SS
- alarm 0 sub second register
- 0x44
- 0x20
- read-write
- 0x00000000
-
-
- MSKSSC
- Mask control bit of SSC
- 24
- 4
-
-
- SSC
- Alarm sub second value
- 0
- 15
-
-
-
-
- BKP0
- BKP0
- backup register
- 0x50
- 0x20
- read-write
- 0x00000000
-
-
- DATA
- BKP data
- 0
- 32
-
-
-
-
- BKP1
- BKP1
- backup register
- 0x54
- 0x20
- read-write
- 0x00000000
-
-
- DATA
- BKP data
- 0
- 32
-
-
-
-
- BKP2
- BKP2
- backup register
- 0x58
- 0x20
- read-write
- 0x00000000
-
-
- DATA
- BKP data
- 0
- 32
-
-
-
-
- BKP3
- BKP3
- backup register
- 0x5C
- 0x20
- read-write
- 0x00000000
-
-
- DATA
- BKP data
- 0
- 32
-
-
-
-
- BKP4
- BKP4
- backup register
- 0x60
- 0x20
- read-write
- 0x00000000
-
-
- DATA
- BKP data
- 0
- 32
-
-
-
-
-
-
- SPI0
- Serial peripheral interface
- SPI
- 0x40013000
-
- 0x0
- 0x400
- registers
-
-
- SPI0
- 25
-
-
-
- CTL0
- CTL0
- control register 0
- 0x0
- 0x20
- read-write
- 0x0000
-
-
- BDEN
- Bidirectional enable
- 15
- 1
-
-
- BDOEN
- Bidirectional Transmit output enable
- 14
- 1
-
-
- CRCEN
- Hardware CRC calculation enable
- 13
- 1
-
-
- CRCNT
- CRC transfer next
- 12
- 1
-
-
- FF16
- Data frame format
- 11
- 1
-
-
- RO
- Receive only
- 10
- 1
-
-
- SWNSSEN
- NSS Software Mode Selection
- 9
- 1
-
-
- SWNSS
- NSS Pin Selection In NSS Software Mode
- 8
- 1
-
-
- LF
- LSB First Mode
- 7
- 1
-
-
- SPIEN
- SPI enable
- 6
- 1
-
-
- PSC
- Master Clock Prescaler Selection
- 3
- 3
-
-
- MSTMOD
- Master Mode Enable
- 2
- 1
-
-
- CKPL
- Clock Polarity Selection
- 1
- 1
-
-
- CKPH
- Clock Phase Selection
- 0
- 1
-
-
-
-
- CTL1
- CTL1
- control register 1
- 0x04
- 0x20
- read-write
- 0x0000
-
-
- TBEIE
- Transmit Buffer Empty Interrupt Enable
- 7
- 1
-
-
- RBNEIE
- Receive Buffer Not Empty Interrupt Enable
- 6
- 1
-
-
- ERRIE
- Error interrupt enable
- 5
- 1
-
-
- TMOD
- SPI TI Mode Enable
- 4
- 1
-
-
- NSSP
- SPI NSS Pulse Mode Enable
- 3
- 1
-
-
- NSSDRV
- NSS output enable
- 2
- 1
-
-
- DMATEN
- Tx buffer DMA enable
- 1
- 1
-
-
- DMAREN
- Rx buffer DMA enable
- 0
- 1
-
-
-
-
- STAT
- STAT
- status register
- 0x08
- 0x20
- 0x0002
-
-
- FERR
- Format Error
- 8
- 1
- read-write
-
-
- TRANS
- Transmitting On-going Bit
- 7
- 1
- read-only
-
-
- RXORERR
- Reception Overrun Error Bit
- 6
- 1
- read-only
-
-
- CONFERR
- SPI Configuration error
- 5
- 1
- read-only
-
-
- CRCERR
- SPI CRC Error Bit
- 4
- 1
- read-write
-
-
- TXURERR
- Transmission underrun error bit
- 3
- 1
- read-only
-
-
- I2SCH
- I2S channel side
- 2
- 1
- read-only
-
-
- TBE
- Transmit Buffer Empty
- 1
- 1
- read-only
-
-
- RBNE
- Receive Buffer Not Empty
- 0
- 1
- read-only
-
-
-
-
- DATA
- DATA
- data register
- 0x0C
- 0x20
- read-write
- 0x0000
-
-
- DATA
- Data register
- 0
- 16
-
-
-
-
- CPCPOLY
- CPCPOLY
- CRC polynomial register
- 0x10
- 0x20
- read-write
- 0x0007
-
-
- CRCPOLY
- CRC polynomial register
- 0
- 16
-
-
-
-
- RCRC
- RCRC
- RX CRC register
- 0x14
- 0x20
- read-only
- 0x0000
-
-
- RCRC
- RX RCR register
- 0
- 16
-
-
-
-
- TCRC
- TCRC
- TX CRC register
- 0x18
- 0x20
- read-only
- 0x0000
-
-
- TCRC
- Tx CRC register
- 0
- 16
-
-
-
-
- I2SCTL
- I2SCTL
- I2S configuration register
- 0x1C
- 0x20
- read-write
- 0x0000
-
-
- I2SSEL
- I2S mode selection
- 11
- 1
-
-
- I2SEN
- I2S Enable
- 10
- 1
-
-
- I2SOPMOD
- I2S configuration mode
- 8
- 2
-
-
- PCMSMOD
- PCM frame synchronization
- 7
- 1
-
-
- I2SSTD
- I2S standard selection
- 4
- 2
-
-
- CKPL
- Idle state clock polarity
- 3
- 1
-
-
- DTLEN
- Data length to be
- transferred
- 1
- 2
-
-
- CHLEN
- Channel length (number of bits per audio
- channel)
- 0
- 1
-
-
-
-
- I2SPSC
- I2SPSC
- I2S prescaler register
- 0x20
- 0x20
- read-write
- 0x0002
-
-
- MCKOEN
- I2S_MCK output enable
- 9
- 1
-
-
- OF
- Odd factor for the
- prescaler
- 8
- 1
-
-
- DIV
- Dividing factor for the prescaler
- 0
- 8
-
-
-
-
-
-
- SPI1
- Serial Peripheral Interface 1
- 0x40003800
-
- 0x0
- 0x400
- registers
-
-
- SPI1
- 26
-
-
-
- CTL0
- CTL0
- control register 0
- 0x0
- 0x20
- read-write
- 0x0000
-
-
- BDEN
- Bidirectional enable
- 15
- 1
-
-
- BDOEN
- Bidirectional Transmit output enable
- 14
- 1
-
-
- CRCEN
- Hardware CRC calculation enable
- 13
- 1
-
-
- CRCNT
- CRC transfer next
- 12
- 1
-
-
- CRCL
- CRC length
- 11
- 1
-
-
- RO
- Receive only
- 10
- 1
-
-
- SWNSSEN
- NSS Software Mode Selection
- 9
- 1
-
-
- SWNSS
- NSS Pin Selection In NSS Software Mode
- 8
- 1
-
-
- LF
- LSB First Mode
- 7
- 1
-
-
- SPIEN
- SPI enable
- 6
- 1
-
-
- PSC
- Master Clock Prescaler Selection
- 3
- 3
-
-
- MSTMOD
- Master Mode Enable
- 2
- 1
-
-
- CKPL
- Clock Polarity Selection
- 1
- 1
-
-
- CKPH
- Clock Phase Selection
- 0
- 1
-
-
-
-
- CTL1
- CTL1
- control register 1
- 0x04
- 0x20
- read-write
- 0x0000
-
-
- TXDMA_ODD
- Odd bytes in TX DMA channel
- 14
- 1
-
-
- RXDMA_ODD
- Odd bytes in RX DMA channel
- 13
- 1
-
-
- BYTEN
- Byte access enable
- 12
- 1
-
-
- DZ
- Date size
- 8
- 4
-
-
- TBEIE
- Transmit Buffer Empty Interrupt Enable
- 7
- 1
-
-
- RBNEIE
- Receive Buffer Not Empty Interrupt Enable
- 6
- 1
-
-
- ERRIE
- Error interrupt enable
- 5
- 1
-
-
- TMOD
- SPI TI Mode Enable
- 4
- 1
-
-
- NSSP
- SPI NSS Pulse Mode Enable
- 3
- 1
-
-
- NSSDRV
- NSS output enable
- 2
- 1
-
-
- DMATEN
- Tx buffer DMA enable
- 1
- 1
-
-
- DMAREN
- Rx buffer DMA enable
- 0
- 1
-
-
-
-
- STAT
- STAT
- status register
- 0x08
- 0x20
- 0x0002
-
-
- TXLVL
- Tx FIFO level
- 11
- 2
- read-only
-
-
- RXLVL
- Rx FIFO level
- 9
- 2
- read-only
-
-
- FERR
- Format Error
- 8
- 1
- read-write
-
-
- TRANS
- Transmitting On-going Bit
- 7
- 1
- read-only
-
-
- RXORERR
- Reception Overrun Error Bit
- 6
- 1
- read-only
-
-
- CONFERR
- SPI Configuration error
- 5
- 1
- read-only
-
-
- CRCERR
- SPI CRC Error Bit
- 4
- 1
- read-write
-
-
- TBE
- Transmit Buffer Empty
- 1
- 1
- read-only
-
-
- RBNE
- Receive Buffer Not Empty
- 0
- 1
- read-only
-
-
-
-
- DATA
- DATA
- data register
- 0x0C
- 0x20
- read-write
- 0x0000
-
-
- DATA
- Data register
- 0
- 16
-
-
-
-
- CPCPOLY
- CPCPOLY
- CRC polynomial register
- 0x10
- 0x20
- read-write
- 0x0007
-
-
- CRCPOLY
- CRC polynomial register
- 0
- 16
-
-
-
-
- RCRC
- RCRC
- RX CRC register
- 0x14
- 0x20
- read-only
- 0x0000
-
-
- RCRC
- RX RCR register
- 0
- 16
-
-
-
-
- TCRC
- TCRC
- TX CRC register
- 0x18
- 0x20
- read-only
- 0x0000
-
-
- TCRC
- Tx CRC register
- 0
- 16
-
-
-
-
- I2SCTL
- I2SCTL
- I2S configuration register
- 0x1C
- 0x20
- read-write
- 0x0000
-
-
- I2SSEL
- I2S mode selection
- 11
- 1
-
-
- I2SEN
- I2S Enable
- 10
- 1
-
-
- I2SOPMOD
- I2S configuration mode
- 8
- 2
-
-
- PCMSMOD
- PCM frame synchronization
- 7
- 1
-
-
- I2SSTD
- I2S standard selection
- 4
- 2
-
-
- CKPL
- Idle state clock polarity
- 3
- 1
-
-
- DTLEN
- Data length to be
- transferred
- 1
- 2
-
-
- CHLEN
- Channel length (number of bits per audio
- channel)
- 0
- 1
-
-
-
-
- I2SPSC
- I2SPSC
- I2S prescaler register
- 0x20
- 0x20
- read-write
- 0x0002
-
-
- MCKOEN
- I2S_MCK output enable
- 9
- 1
-
-
- OF
- Odd factor for the
- prescaler
- 8
- 1
-
-
- DIV
- Dividing factor for the prescaler
- 0
- 8
-
-
-
-
- QCTL
- QCTL
- SPI quad wird control register
- 0x80
- 0x20
- read-write
- 0000
-
-
- IO23_DRV
- Drive IO2 and IO3 enable
- 2
- 1
-
-
- QRD
- Quad wire read select
- 1
- 1
-
-
- QMOD
- Quad wire mode enable
- 0
- 1
-
-
-
-
-
-
-
- SYSCFG
- System configuration controller
- SYSCFG
- 0x40010000
-
- 0x0
- 0x0400
- registers
-
-
-
- CFG0
- CFG0
- System configuration register 0
- 0x0
- 0x20
- read-write
- 0x00000000
-
-
- PB9_HCCE
- PB9 pin high current capability enable
- 19
- 1
-
-
- TIMER16_DMA_RMP
- Timer 16 DMA request remapping enable
- 12
- 1
-
-
- TIMER15_DMA_RMP
- Timer 15 DMA request remapping enable
- 11
- 1
-
-
- USART0_RX_DMA_RMP
- USART0_RX DMA request remapping enable
- 10
- 1
-
-
- USART0_TX_DMA_RMP
- USART0_TX DMA request remapping enable
- 9
- 1
-
-
- ADC_DMA_RMP
- ADC DMA request remapping enable
- 8
- 1
-
-
- PA11_PA12_RMP
- PA11 and PA12 remapping bit for small packages
- 4
- 1
-
-
- BOOT_MODE
- Boot mode
- 0
- 2
- read-only
-
-
-
-
- EXTISS0
- EXTISS0
- EXTI sources selection register
- 0
- 0x8
- 0x20
- read-write
- 0x00000000
-
-
- EXTI3_SS
- EXTI 3 sources selection
- 12
- 4
-
-
- EXTI2_SS
- EXTI 2 sources selection
- 8
- 4
-
-
- EXTI1_SS
- EXTI 1 sources selection
- 4
- 4
-
-
- EXTI0_SS
- EXTI 0 sources selection
- 0
- 4
-
-
-
-
- EXTISS1
- EXTISS1
- EXTI sources selection register
- 1
- 0xC
- 0x20
- read-write
- 0x00000000
-
-
- EXTI7_SS
- EXTI 7 sources selection
- 12
- 4
-
-
- EXTI6_SS
- EXTI 6 sources selection
- 8
- 4
-
-
- EXTI5_SS
- EXTI 5 sources selection
- 4
- 4
-
-
- EXTI4_SS
- EXTI 4 sources selection
- 0
- 4
-
-
-
-
- EXTISS2
- EXTISS2
- EXTI sources selection register
- 2
- 0x10
- 0x20
- read-write
- 0x00000000
-
-
- EXTI11_SS
- EXTI 11 sources selection
- 12
- 4
-
-
- EXTI10_SS
- EXTI 10 sources selection
- 8
- 4
-
-
- EXTI9_SS
- EXTI 9 sources selection
- 4
- 4
-
-
- EXTI8_SS
- EXTI 8 sources selection
- 0
- 4
-
-
-
-
- EXTISS3
- EXTISS3
- EXTI sources selection register
- 3
- 0x14
- 0x20
- read-write
- 0x00000000
-
-
- EXTI15_SS
- EXTI 15 sources selection
- 12
- 4
-
-
- EXTI14_SS
- EXTI 14 sources selection
- 8
- 4
-
-
- EXTI13_SS
- EXTI 13 sources selection
- 4
- 4
-
-
- EXTI12_SS
- EXTI 12 sources selection
- 0
- 4
-
-
-
-
- CFG2
- CFG2
- System configuration register 2
- 0x18
- 0x20
- read-write
- 0x00000000
-
-
- SRAM_PCEF
- SRAM parity check error flag
- 8
- 1
-
-
- LVD_LOCK
- LVD lock
- 2
- 1
-
-
- SRAM_PARITY_ERROR_LOCK
- SRAM parity check error lock
- 1
- 1
-
-
- LOCKUP_LOCK
- Cortex-M4 LOCKUP output lock
- 0
- 1
-
-
-
-
- CPU_IRQ_LAT
- CPU_IRQ_LAT
- IRQ Latency register
- 0x100
- 0x20
- read-write
- 0x00000000
-
-
- IRQ_LATENCY
- specifies the minimum number of cycles between an interrupt
- 0
- 8
-
-
-
-
-
-
- TIMER0
- Advanced-timers
- TIMER
- 0x40012C00
-
- 0x0
- 0x400
- registers
-
-
- TIMER0_BRK_UP_TRG_COM
- 13
-
-
- TIMER0_CC
- 14
-
-
-
- CTL0
- CTL0
- control register 0
- 0x0
- 0x20
- read-write
- 0x0000
-
-
- CKDIV
- Clock division
- 8
- 2
-
-
- ARSE
- Auto-reload preload enable
- 7
- 1
-
-
- CAM
- Center-aligned mode
- selection
- 5
- 2
-
-
- DIR
- Direction
- 4
- 1
-
-
- SPM
- One-pulse mode
- 3
- 1
-
-
- UPS
- Update request source
- 2
- 1
-
-
- UPDIS
- Update disable
- 1
- 1
-
-
- CEN
- Counter enable
- 0
- 1
-
-
-
-
- CTL1
- CTL1
- control register 1
- 0x04
- 0x20
- read-write
- 0x0000
-
-
- ISO3
- Idle state of channel 3 output
- 14
- 1
-
-
- ISO2N
- Idle state of channel 2 complementary output
- 13
- 1
-
-
- ISO2
- Idle state of channel 2 output
- 12
- 1
-
-
- ISO1N
- Idle state of channel 1 complementary output
- 11
- 1
-
-
- ISO1
- Idle state of channel 1 output
- 10
- 1
-
-
- ISO0N
- Idle state of channel 0 complementary output
- 9
- 1
-
-
- ISO0
- Idle state of channel 0 output
- 8
- 1
-
-
- TI0S
- Channel 0 trigger input selection
- 7
- 1
-
-
- MMC
- Master mode control
- 4
- 3
-
-
- DMAS
- DMA request source selection
- 3
- 1
-
-
- CCUC
- Commutation control shadow register update control
- 2
- 1
-
-
- CCSE
- Commutation control shadow enable
- 0
- 1
-
-
-
-
- SMCFG
- SMCFG
- slave mode configuration register
- 0x08
- 0x20
- read-write
- 0x0000
-
-
- ETP
- External trigger polarity
- 15
- 1
-
-
- SCM1
- Part of SMC for enable External clock mode1
- 14
- 1
-
-
- ETPSC
- External trigger prescaler
- 12
- 2
-
-
- ETFC
- External trigger filter
- 8
- 4
-
-
- MSM
- Master/Slave mode
- 7
- 1
-
-
- TRGS
- Trigger selection
- 4
- 3
-
-
- OCRC
- Trigger selection
- 3
- 1
-
-
- SMC
- Slave mode selection
- 0
- 3
-
-
-
-
- DMAINTEN
- DMAINTEN
- DMA/Interrupt enable register
- 0x0C
- 0x20
- read-write
- 0x0000
-
-
- TRGDEN
- Trigger DMA request enable
- 14
- 1
-
-
- CMTDEN
- Reserved
- 13
- 1
-
-
- CH3DEN
- Capture/Compare 3 DMA request
- enable
- 12
- 1
-
-
- CH2DEN
- Capture/Compare 2 DMA request
- enable
- 11
- 1
-
-
- CH1DEN
- Capture/Compare 1 DMA request
- enable
- 10
- 1
-
-
- CH0DEN
- Capture/Compare 0 DMA request
- enable
- 9
- 1
-
-
- UPDEN
- Update DMA request enable
- 8
- 1
-
-
- BRKIE
- Break interrupt enable
- 7
- 1
-
-
- TRGIE
- Trigger interrupt enable
- 6
- 1
-
-
- CMTIE
- COM interrupt enable
- 5
- 1
-
-
- CH3IE
- Capture/Compare 3 interrupt
- enable
- 4
- 1
-
-
- CH2IE
- Capture/Compare 2 interrupt
- enable
- 3
- 1
-
-
- CH1IE
- Capture/Compare 1 interrupt
- enable
- 2
- 1
-
-
- CH0IE
- Capture/Compare 0 interrupt
- enable
- 1
- 1
-
-
- UPIE
- Update interrupt enable
- 0
- 1
-
-
-
-
- INTF
- INTF
- status register
- 0x10
- 0x20
- read-write
- 0x0000
-
-
- CH3OF
- Channel 3 over capture flag
- 12
- 1
-
-
- CH2OF
- Channel 2 over capture flag
- 11
- 1
-
-
- CH1OF
- Channel 1 over capture flag
- 10
- 1
-
-
- CH0OF
- Channel 0 over capture flag
- 9
- 1
-
-
- BRKIF
- Break interrupt flag
- 7
- 1
-
-
- TRGIF
- Trigger interrupt flag
- 6
- 1
-
-
- CMTIF
- COM interrupt flag
- 5
- 1
-
-
- CH3IF
- Capture/Compare 3 interrupt
- flag
- 4
- 1
-
-
- CH2IF
- Capture/Compare 2 interrupt
- flag
- 3
- 1
-
-
- CH1IF
- Capture/Compare 1 interrupt
- flag
- 2
- 1
-
-
- CH0IF
- Capture/compare 0 interrupt
- flag
- 1
- 1
-
-
- UPIF
- Update interrupt flag
- 0
- 1
-
-
-
-
- SWEVG
- SWEVG
- Software event generation register
- 0x14
- 0x20
- write-only
- 0x0000
-
-
- BRKG
- Break event generation
- 7
- 1
-
-
- TRGG
- Trigger event generation
- 6
- 1
-
-
- CMTG
- Channel commutation event generation
- 5
- 1
-
-
- CH3G
- Channel 3's capture or compare event generation
- 4
- 1
-
-
- CH2G
- Channel 2's capture or compare event generation
- 3
- 1
-
-
- CH1G
- Channel 1's capture or compare event generation
- 2
- 1
-
-
- CH0G
- Channel 0's capture or compare event generation
- 1
- 1
-
-
- UPG
- Update event generation
- 0
- 1
-
-
-
-
- CHCTL0_Output
- CHCTL0_Output
- capture/compare mode register (output
- mode)
- 0x18
- 0x20
- read-write
- 0x0000
-
-
- CH1COMCEN
- Channel 1 output compare clear enable
- 15
- 1
-
-
- CH1COMCTL
- Channel 1 compare output control
- 12
- 3
-
-
- CH1COMSEN
- Channel 1 output compare shadow enable
- 11
- 1
-
-
- CH1COMFEN
- Channel 1 output compare fast enable
- 10
- 1
-
-
- CH1MS
- Channel 1 mode selection
- 8
- 2
-
-
- CH0COMCEN
- Channel 0 output compare clear enable
- 7
- 1
-
-
- CH0COMCTL
- Channel 0 compare output control
- 4
- 3
-
-
- CH0COMSEN
- Channel 0 compare output shadow enable
- 3
- 1
-
-
- CH0COMFEN
- Channel 0 output compare fast enable
- 2
- 1
-
-
- CH0MS
- Channel 0 I/O mode selection
- 0
- 2
-
-
-
-
- CHCTL0_Input
- CHCTL0_Input
- capture/compare mode register 0 (input
- mode)
- CHCTL0_Output
- 0x18
- 0x20
- read-write
- 0x0000
-
-
- CH1CAPFLT
- Channel 1 input capture filter control
- 12
- 4
-
-
- CH1CAPPSC
- Channel 1 input capture prescaler
- 10
- 2
-
-
- CH1MS
- Channel 1 mode selection
- 8
- 2
-
-
- CH0CAPFLT
- Channel 0 input capture filter control
- 4
- 4
-
-
- CH0CAPPSC
- Channel 0 input capture prescaler
- 2
- 2
-
-
- CH0MS
- Channel 0 mode selection
- 0
- 2
-
-
-
-
- CHCTL1_Output
- CHCTL1_Output
- capture/compare mode register (output
- mode)
- 0x1C
- 0x20
- read-write
- 0x0000
-
-
- CH3COMCEN
- Channel 3 output compare clear enable
- 15
- 1
-
-
- CH3COMCTL
- Channel 3 compare output control
- 12
- 3
-
-
- CH3COMSEN
- Channel 3 output compare shadow enable
- 11
- 1
-
-
- CH3COMFEN
- Channel 3 output compare fast enable
- 10
- 1
-
-
- CH3MS
- Channel 3 mode selection
- 8
- 2
-
-
- CH2COMCEN
- Channel 2 output compare clear enable
- 7
- 1
-
-
- CH2COMCTL
- Channel 2 compare output control
- 4
- 3
-
-
- CH2COMSEN
- Channel 2 compare output shadow enable
- 3
- 1
-
-
- CH2COMFEN
- Channel 2 output compare fast enable
- 2
- 1
-
-
- CH2MS
- Channel 2 I/O mode selection
- 0
- 2
-
-
-
-
- CHCTL1_Input
- CHCTL1_Input
- capture/compare mode register 1 (input
- mode)
- CHCTL1_Output
- 0x1C
- 0x20
- read-write
- 0x0000
-
-
- CH3CAPFLT
- Channel 3 input capture filter control
- 12
- 4
-
-
- CH3CAPPSC
- Channel 3 input capture prescaler
- 10
- 2
-
-
- CH3MS
- Channel 3 mode selection
- 8
- 2
-
-
- CH2CAPFLT
- Input capture 2 filter
- 4
- 4
-
-
- CH2CAPPSC
- Input capture 2 prescaler
- 2
- 2
-
-
- CH2MS
- Capture/compare 2
- selection
- 0
- 2
-
-
-
-
- CHCTL2
- CHCTL2
- capture/compare enable
- register
- 0x20
- 0x20
- read-write
- 0x0000
-
-
- CH3P
- Capture/Compare 3 output
- Polarity
- 13
- 1
-
-
- CH3EN
- Capture/Compare 3 output
- enable
- 12
- 1
-
-
- CH2NP
- Capture/Compare 2 output
- Polarity
- 11
- 1
-
-
- CH2NEN
- Capture/Compare 2 complementary output
- enable
- 10
- 1
-
-
- CH2P
- Capture/Compare 2 output
- Polarity
- 9
- 1
-
-
- CH2EN
- Capture/Compare 2 output
- enable
- 8
- 1
-
-
- CH1NP
- Capture/Compare 1 output
- Polarity
- 7
- 1
-
-
- CH1NEN
- Capture/Compare 1 complementary output
- enable
- 6
- 1
-
-
- CH1P
- Capture/Compare 1 output
- Polarity
- 5
- 1
-
-
- CH1EN
- Capture/Compare 1 output
- enable
- 4
- 1
-
-
- CH0NP
- Capture/Compare 0 output
- Polarity
- 3
- 1
-
-
- CH0NEN
- Capture/Compare 0 complementary output
- enable
- 2
- 1
-
-
- CH0P
- Capture/Compare 0 output
- Polarity
- 1
- 1
-
-
- CH0EN
- Capture/Compare 1 output
- enable
- 0
- 1
-
-
-
-
- CNT
- CNT
- counter
- 0x24
- 0x20
- read-write
- 0x0000
-
-
- CNT
- counter value
- 0
- 16
-
-
-
-
- PSC
- PSC
- prescaler
- 0x28
- 0x20
- read-write
- 0x0000
-
-
- PSC
- Prescaler value
- 0
- 16
-
-
-
-
- CAR
- CAR
- auto-reload register
- 0x2C
- 0x20
- read-write
- 0x0000
-
-
- CARL
- Counter auto reload value
- 0
- 16
-
-
-
-
- CREP
- CREP
- repetition counter register
- 0x30
- 0x20
- read-write
- 0x0000
-
-
- CREP
- Repetition counter value
- 0
- 8
-
-
-
-
- CH0CV
- CH0CV
- capture/compare register 0
- 0x34
- 0x20
- read-write
- 0x0000
-
-
- CH0VAL
- Capture/Compare 0 value
- 0
- 16
-
-
-
-
- CH1CV
- CH1CV
- capture/compare register 1
- 0x38
- 0x20
- read-write
- 0x0000
-
-
- CH1VAL
- Capture/Compare 1 value
- 0
- 16
-
-
-
-
- CH2CV
- CH2CV
- capture/compare register 2
- 0x3C
- 0x20
- read-write
- 0x0000
-
-
- CH2VAL
- Capture/Compare 2 value
- 0
- 16
-
-
-
-
- CH3CV
- CH3CV
- capture/compare register 3
- 0x40
- 0x20
- read-write
- 0x0000
-
-
- CH3VAL
- Capture/Compare 3 value
- 0
- 16
-
-
-
-
- CCHP
- CCHP
- channel complementary protection register
- 0x44
- 0x20
- read-write
- 0x0000
-
-
- POEN
- Main output enable
- 15
- 1
-
-
- OAEN
- Automatic output enable
- 14
- 1
-
-
- BRKP
- Break polarity
- 13
- 1
-
-
- BRKEN
- Break enable
- 12
- 1
-
-
- ROS
- Off-state selection for Run
- mode
- 11
- 1
-
-
- IOS
- Off-state selection for Idle
- mode
- 10
- 1
-
-
- PROT
- Lock configuration
- 8
- 2
-
-
- DTCFG
- Dead-time generator setup
- 0
- 8
-
-
-
-
- DMACFG
- DMACFG
- DMA configuration register
- 0x48
- 0x20
- read-write
- 0x0000
-
-
- DMATC
- DMA transfer count
- 8
- 5
-
-
- DMATA
- DMA transfer access start address
- 0
- 5
-
-
-
-
- DMATB
- DMATB
- DMA address for full transfer
- 0x4C
- 0x20
- read-write
- 0x0000
-
-
- DMATB
- DMA register for burst
- accesses
- 0
- 16
-
-
-
-
- CFG
- CFG
- Configuration register
- 0xFC
- 0x20
- read-write
- 0x0000
-
-
- CHVSEL
- Write CHxVAL register selection
- 1
- 1
-
-
- OUTSEL
- The output value selection
- 0
- 1
-
-
-
-
-
-
- TIMER2
- General-purpose-timers
- TIMER
- 0x40000400
-
- 0x0
- 0x400
- registers
-
-
- TIMER2
- 16
-
-
-
- CTL0
- CTL0
- control register 0
- 0x0
- 0x20
- read-write
- 0x0000
-
-
- CKDIV
- Clock division
- 8
- 2
-
-
- ARSE
- Auto-reload preload enable
- 7
- 1
-
-
- CAM
- Center-aligned mode
- selection
- 5
- 2
-
-
- DIR
- Direction
- 4
- 1
-
-
- SPM
- One-pulse mode
- 3
- 1
-
-
- UPS
- Update request source
- 2
- 1
-
-
- UPDIS
- Update disable
- 1
- 1
-
-
- CEN
- Counter enable
- 0
- 1
-
-
-
-
- CTL1
- CTL1
- control register 1
- 0x04
- 0x20
- read-write
- 0x0000
-
-
- TI0S
- TI0 selection
- 7
- 1
-
-
- MMC
- Master mode selection
- 4
- 3
-
-
- DMAS
- Capture/compare DMA
- selection
- 3
- 1
-
-
-
-
- SMCFG
- SMCFG
- slave mode control register
- 0x08
- 0x20
- read-write
- 0x0000
-
-
- ETP
- External trigger polarity
- 15
- 1
-
-
- SMC1
- External clock enable
- 14
- 1
-
-
- ETPSC
- External trigger prescaler
- 12
- 2
-
-
- ETFC
- External trigger filter
- 8
- 4
-
-
- MSM
- Master/Slave mode
- 7
- 1
-
-
- TRGS
- Trigger selection
- 4
- 3
-
-
- OCRC
- OCREF clear source selection
- 3
- 1
-
-
- SMC
- Slave mode selection
- 0
- 3
-
-
-
-
- DMAINTEN
- DMAINTEN
- DMA/Interrupt enable register
- 0x0C
- 0x20
- read-write
- 0x0000
-
-
- TRGDEN
- Trigger DMA request enable
- 14
- 1
-
-
- CH3DEN
- Capture/Compare 3 DMA request
- enable
- 12
- 1
-
-
- CH2DEN
- Capture/Compare 2 DMA request
- enable
- 11
- 1
-
-
- CH1DEN
- Capture/Compare 1 DMA request
- enable
- 10
- 1
-
-
- CH0DEN
- Capture/Compare 1 DMA request
- enable
- 9
- 1
-
-
- UPDEN
- Update DMA request enable
- 8
- 1
-
-
- TRGIE
- Trigger interrupt enable
- 6
- 1
-
-
- CH3IE
- Capture/Compare 3 interrupt
- enable
- 4
- 1
-
-
- CH2IE
- Capture/Compare 2 interrupt
- enable
- 3
- 1
-
-
- CH1IE
- Capture/Compare 1 interrupt
- enable
- 2
- 1
-
-
- CH0IE
- Capture/Compare 0 interrupt
- enable
- 1
- 1
-
-
- UPIE
- Update interrupt enable
- 0
- 1
-
-
-
-
- INTF
- INTF
- interrupt flag register
- 0x10
- 0x20
- read-write
- 0x0000
-
-
- CH3OF
- Capture/Compare 3 overcapture
- flag
- 12
- 1
-
-
- CH2OF
- Capture/Compare 2 overcapture
- flag
- 11
- 1
-
-
- CH1OF
- Capture/compare 1 overcapture
- flag
- 10
- 1
-
-
- CH0OF
- Capture/Compare 0 overcapture
- flag
- 9
- 1
-
-
- TRGIF
- Trigger interrupt flag
- 6
- 1
-
-
- CH3IF
- Capture/Compare 3 interrupt
- flag
- 4
- 1
-
-
- CH2IF
- Capture/Compare 2 interrupt
- flag
- 3
- 1
-
-
- CH1IF
- Capture/Compare 1 interrupt
- flag
- 2
- 1
-
-
- CH0IF
- Capture/compare 0 interrupt
- flag
- 1
- 1
-
-
- UPIF
- Update interrupt flag
- 0
- 1
-
-
-
-
- SWEVG
- SWEVG
- event generation register
- 0x14
- 0x20
- write-only
- 0x0000
-
-
- TRGG
- Trigger generation
- 6
- 1
-
-
- CH3G
- Capture/compare 3
- generation
- 4
- 1
-
-
- CH2G
- Capture/compare 2
- generation
- 3
- 1
-
-
- CH1G
- Capture/compare 1
- generation
- 2
- 1
-
-
- CH0G
- Capture/compare 0
- generation
- 1
- 1
-
-
- UPG
- Update generation
- 0
- 1
-
-
-
-
- CHCTL0_Output
- CHCTL0_Output
- capture/compare mode register 0 (output
- mode)
- 0x18
- 0x20
- read-write
- 0x0000
-
-
- CH1COMCEN
- Output compare 1 clear
- enable
- 15
- 1
-
-
- CH1COMCTL
- Output compare 1 mode
- 12
- 3
-
-
- CH1COMSEN
- Output compare 1 preload
- enable
- 11
- 1
-
-
- CH1COMFEN
- Output compare 1 fast
- enable
- 10
- 1
-
-
- CH1MS
- Capture/Compare 1
- selection
- 8
- 2
-
-
- CH0COMCEN
- Output compare 0 clear
- enable
- 7
- 1
-
-
- CH0COMCTL
- Output compare 0 mode
- 4
- 3
-
-
- CH0COMSEN
- Output compare 0 preload
- enable
- 3
- 1
-
-
- CH0COMFEN
- Output compare 0 fast
- enable
- 2
- 1
-
-
- CH0MS
- Capture/Compare 0
- selection
- 0
- 2
-
-
-
-
- CHCTL0_Input
- CHCTL0_Input
- capture/compare mode register 0 (input
- mode)
- CHCTL0_Output
- 0x18
- 0x20
- read-write
- 0x00000000
-
-
- CH1CAPFLT
- Input capture 1 filter
- 12
- 4
-
-
- CH1CAPPSC
- Input capture 1 prescaler
- 10
- 2
-
-
- CH1MS
- Capture/compare 1
- selection
- 8
- 2
-
-
- CH0CAPFLT
- Input capture 0 filter
- 4
- 4
-
-
- CH0CAPPSC
- Input capture 0 prescaler
- 2
- 2
-
-
- CH0MS
- Capture/Compare 0
- selection
- 0
- 2
-
-
-
-
- CHCTL1_Output
- CHCTL1_Output
- capture/compare mode register 1 (output
- mode)
- 0x1C
- 0x20
- read-write
- 0x0000
-
-
- CH3COMCEN
- Output compare 3 clear
- enable
- 15
- 1
-
-
- CH3COMCTL
- Output compare 3 mode
- 12
- 3
-
-
- CH3COMSEN
- Output compare 3 preload
- enable
- 11
- 1
-
-
- CH3COMFEN
- Output compare 3 fast
- enable
- 10
- 1
-
-
- CH3MS
- Capture/Compare 3
- selection
- 8
- 2
-
-
- CH2COMCEN
- Output compare 2 clear
- enable
- 7
- 1
-
-
- CH2COMCTL
- Output compare 2 mode
- 4
- 3
-
-
- CH2COMSEN
- Output compare 2 preload
- enable
- 3
- 1
-
-
- CH2COMFEN
- Output compare 2 fast
- enable
- 2
- 1
-
-
- CH2MS
- Capture/Compare 2
- selection
- 0
- 2
-
-
-
-
- CHCTL1_Input
- CHCTL1_Input
- capture/compare mode register 1 (input
- mode)
- CHCTL1_Output
- 0x1C
- 0x20
- read-write
- 0x0000
-
-
- CH3CAPFLT
- Input capture 3 filter
- 12
- 4
-
-
- CH3CAPPSC
- Input capture 3 prescaler
- 10
- 2
-
-
- CH3MS
- Capture/Compare 3
- selection
- 8
- 2
-
-
- CH2CAPFLT
- Input capture 2 filter
- 4
- 4
-
-
- CH2CAPPSC
- Input capture 2 prescaler
- 2
- 2
-
-
- CH2MS
- Capture/Compare 2
- selection
- 0
- 2
-
-
-
-
- CHCTL2
- CHCTL2
- capture/compare enable
- register
- 0x20
- 0x20
- read-write
- 0x0000
-
-
- CH3NP
- Capture/Compare 3 output
- Polarity
- 15
- 1
-
-
- CH3P
- Capture/Compare 3 output
- Polarity
- 13
- 1
-
-
- CH3EN
- Capture/Compare 3 output
- enable
- 12
- 1
-
-
- CH2NP
- Capture/Compare 2 output
- Polarity
- 11
- 1
-
-
- CH2P
- Capture/Compare 2 output
- Polarity
- 9
- 1
-
-
- CH2EN
- Capture/Compare 2 output
- enable
- 8
- 1
-
-
- CH1NP
- Capture/Compare 1 output
- Polarity
- 7
- 1
-
-
- CH1P
- Capture/Compare 1 output
- Polarity
- 5
- 1
-
-
- CH1EN
- Capture/Compare 1 output
- enable
- 4
- 1
-
-
- CH0NP
- Capture/Compare 0 output
- Polarity
- 3
- 1
-
-
- CH0P
- Capture/Compare 0 output
- Polarity
- 1
- 1
-
-
- CH0EN
- Capture/Compare 0 output
- enable
- 0
- 1
-
-
-
-
- CNT
- CNT
- counter
- 0x24
- 0x20
- read-write
- 0x00000000
-
-
- CNT
- counter value
- 0
- 16
-
-
-
-
- PSC
- PSC
- prescaler
- 0x28
- 0x20
- read-write
- 0x0000
-
-
- PSC
- Prescaler value
- 0
- 16
-
-
-
-
- CAR
- CAR
- auto-reload register
- 0x2C
- 0x20
- read-write
- 0x0000
-
-
- CARL
- Low Auto-reload value
- 0
- 16
-
-
-
-
- CH0CV
- CH0CV
- capture/compare register 1
- 0x34
- 0x20
- read-write
- 0x00000000
-
-
- CH0VAL
- Low Capture/Compare 1
- value
- 0
- 16
-
-
-
-
- CH1CV
- CH1CV
- capture/compare register 2
- 0x38
- 0x20
- read-write
- 0x00000000
-
-
- CH1VAL
- Low Capture/Compare 2
- value
- 0
- 16
-
-
-
-
- CH2CV
- CH2CV
- capture/compare register 2
- 0x3C
- 0x20
- read-write
- 0x00000000
-
-
- CH2VAL
- High Capture/Compare value (TIM2
- only)
- 0
- 16
-
-
-
-
- CH3CV
- CH3CV
- capture/compare register 3
- 0x40
- 0x20
- read-write
- 0x00000000
-
-
- CH3VAL
- High Capture/Compare value (TIM2
- only)
- 0
- 16
-
-
-
-
- DMACFG
- DMACFG
- DMA control register
- 0x48
- 0x20
- read-write
- 0x0000
-
-
- DMATC
- DMA burst length
- 8
- 5
-
-
- DMATA
- DMA base address
- 0
- 5
-
-
-
-
- DMATB
- DMATB
- DMA address for full transfer
- 0x4C
- 0x20
- read-write
- 0x0000
-
-
- DMATB
- DMA register for burst
- accesses
- 0
- 16
-
-
-
-
- CFG
- CFG
- Configuration
- 0xFC
- 0x20
- read-write
- 0x0000
-
-
- CHVSEL
- Write CHxVAL register selection
- 1
- 1
-
-
-
-
-
-
- TIMER5
- Basic-timers
- TIMER
- 0x40001000
-
- 0x0
- 0x400
- registers
-
-
- TIMER5
- 17
-
-
-
- CTL0
- CTL0
- control register 0
- 0x0
- 0x20
- read-write
- 0x0000
-
-
- ARSE
- Auto-reload preload enable
- 7
- 1
-
-
- SPM
- One-pulse mode
- 3
- 1
-
-
- UPS
- Update request source
- 2
- 1
-
-
- UPDIS
- Update disable
- 1
- 1
-
-
- CEN
- Counter enable
- 0
- 1
-
-
-
-
- CTL1
- CTL1
- control register 1
- 0x04
- 0x20
- read-write
- 0x0000
-
-
- MMC
- Master mode selection
- 4
- 3
-
-
-
-
- DMAINTEN
- DMAINTEN
- DMA/Interrupt enable register
- 0x0C
- 0x20
- read-write
- 0x0000
-
-
- UPDEN
- Update DMA request enable
- 8
- 1
-
-
- UPIE
- Update interrupt enable
- 0
- 1
-
-
-
-
- INTF
- INTF
- status register
- 0x10
- 0x20
- read-write
- 0x0000
-
-
- UPIF
- Update interrupt flag
- 0
- 1
-
-
-
-
- SWEVG
- SWEVG
- event generation register
- 0x14
- 0x20
- write-only
- 0x0000
-
-
- UPG
- Update generation
- 0
- 1
-
-
-
-
- CNT
- CNT
- counter
- 0x24
- 0x20
- read-write
- 0x00000000
-
-
- CNT
- Low counter value
- 0
- 16
-
-
-
-
- PSC
- PSC
- prescaler
- 0x28
- 0x20
- read-write
- 0x0000
-
-
- PSC
- Prescaler value
- 0
- 16
-
-
-
-
- CAR
- CAR
- auto-reload register
- 0x2C
- 0x20
- read-write
- 0x00000000
-
-
- CARL
- Low Auto-reload value
- 0
- 16
-
-
-
-
-
-
- TIMER13
- General-purpose-timers
- TIMER
- 0x40002000
-
- 0x0
- 0x400
- registers
-
-
- TIMER13
- 19
-
-
-
- CTL0
- CTL0
- control register 1
- 0x00
- 0x20
- read-write
- 0x0000
-
-
- CKDIV
- Clock division
- 8
- 2
-
-
- ARSE
- Auto-reload preload enable
- 7
- 1
-
-
- UPS
- Update request source
- 2
- 1
-
-
- UPDIS
- Update disable
- 1
- 1
-
-
- CEN
- Counter enable
- 0
- 1
-
-
-
-
- DMAINTEN
- DMAINTEN
- DMA/Interrupt enable register
- 0x0C
- 0x20
- read-write
- 0x0000
-
-
- CH0IE
- Capture/Compare 0 interrupt
- enable
- 1
- 1
-
-
- UPIE
- Update interrupt enable
- 0
- 1
-
-
-
-
- INTF
- INTF
- interrupt flag register
- 0x10
- 0x20
- read-write
- 0x0000
-
-
- CH0OF
- Capture/Compare 0 overcapture
- flag
- 9
- 1
-
-
- CH0IF
- Capture/compare 0 interrupt
- flag
- 1
- 1
-
-
- UPIF
- Update interrupt flag
- 0
- 1
-
-
-
-
- SWEVG
- SWEVG
- event generation register
- 0x14
- 0x20
- write-only
- 0x0000
-
-
- CH0G
- Capture/compare 0
- generation
- 1
- 1
-
-
- UPG
- Update generation
- 0
- 1
-
-
-
-
- CHCTL0_Output
- CHCTL0_Output
- capture/compare mode register (output
- mode)
- 0x18
- 0x20
- read-write
- 0x0000
-
-
- CH0MS
- Capture/Compare 0
- selection
- 0
- 2
-
-
- CH0COMFEN
- Output compare 0 fast
- enable
- 2
- 1
-
-
- CH0COMSEN
- Output Compare 0 preload
- enable
- 3
- 1
-
-
- CH0COMCTL
- Output Compare 0 mode
- 4
- 3
-
-
-
-
- CHCTL0_Input
- CHCTL0_Input
- capture/compare mode register (input
- mode)
- CHCTL0_Output
- 0x18
- 0x20
- read-write
- 0x0000
-
-
- CH0CAPFLT
- Input capture 0 filter
- 4
- 4
-
-
- CH0CAPPSC
- Input capture 0 prescaler
- 2
- 2
-
-
- CH0MS
- Capture/Compare 0
- selection
- 0
- 2
-
-
-
-
- CHCTL2
- CHCTL2
- capture/compare enable
- register
- 0x20
- 0x20
- read-write
- 0x0000
-
-
- CH0NP
- Capture/Compare 0 output
- Polarity
- 3
- 1
-
-
- CH0P
- Capture/Compare 0 output
- Polarity
- 1
- 1
-
-
- CH0EN
- Capture/Compare 1 output
- enable
- 0
- 1
-
-
-
-
- CNT
- CNT
- counter
- 0x24
- 0x20
- read-write
- 0x0000
-
-
- CNT
- counter value
- 0
- 16
-
-
-
-
- PSC
- PSC
- prescaler
- 0x28
- 0x20
- read-write
- 0x0000
-
-
- PSC
- Prescaler value
- 0
- 16
-
-
-
-
- CAR
- CAR
- auto-reload register
- 0x2C
- 0x20
- read-write
- 0x0000
-
-
- CARL
- Auto-reload value
- 0
- 16
-
-
-
-
- CH0CV
- CH0CV
- capture/compare register 0
- 0x34
- 0x20
- read-write
- 0x0000
-
-
- CH0VAL
- Capture/Compare 1 value
- 0
- 16
-
-
-
-
- IRMP
- IRMP
- channel input remap register
- 0x50
- 0x20
- read-write
- 0x0000
-
-
- CI0_RMP
- Timer input 0 remap
- 0
- 2
-
-
-
-
- CFG
- CFG
- configuration register
- 0xFC
- 0x20
- read-write
- 0x0000
-
-
- CHVSEL
- Write CHxVAL register selection
- 1
- 1
-
-
-
-
-
-
- TIMER14
- General-purpose-timers
- TIMER
- 0x40014000
-
- 0x0
- 0x400
- registers
-
-
- TIMER14
- 20
-
-
-
- CTL0
- CTL0
- control register 0
- 0x0
- 0x20
- read-write
- 0x0000
-
-
- CKDIV
- Clock division
- 8
- 2
-
-
- ARSE
- Auto-reload preload enable
- 7
- 1
-
-
- SPM
- One-pulse mode
- 3
- 1
-
-
- UPS
- Update request source
- 2
- 1
-
-
- UPDIS
- Update disable
- 1
- 1
-
-
- CEN
- Counter enable
- 0
- 1
-
-
-
-
- CTL1
- CTL1
- control register 1
- 0x4
- 0x20
- read-write
- 0x0000
-
-
- ISO1
- Output Idle state 1
- 10
- 1
-
-
- ISO0N
- Output Idle state 0
- 9
- 1
-
-
- ISO0
- Output Idle state 0
- 8
- 1
-
-
- MMC
- Master mode selection
- 4
- 3
-
-
- DMAS
- Capture/compare DMA
- selection
- 3
- 1
-
-
- CCUC
- Capture/compare control update
- selection
- 2
- 1
-
-
- CCSE
- Capture/compare preloaded
- control
- 0
- 1
-
-
-
-
- SMCFG
- SMCFG
- slave mode configuration register
- 0x08
- 0x20
- read-write
- 0x0000
-
-
- MSM
- Master/Slave mode
- 7
- 1
-
-
- TRGS
- Trigger selection
- 4
- 3
-
-
- SMC
- Slave mode selection
- 0
- 3
-
-
-
-
- DMAINTEN
- DMAINTEN
- DMA/Interrupt enable register
- 0x0C
- 0x20
- read-write
- 0x0000
-
-
- TRGDEN
- Trigger DMA request enable
- 14
- 1
-
-
- CMTDEN
- Commutation DMA request enable
- 13
- 1
-
-
- CH1DEN
- Capture/Compare 1 DMA request
- enable
- 10
- 1
-
-
- CH0DEN
- Capture/Compare 0 DMA request
- enable
- 9
- 1
-
-
- UPDEN
- Update DMA request enable
- 8
- 1
-
-
- BRKIE
- Break interrupt enable
- 7
- 1
-
-
- TRGIE
- Trigger interrupt enable
- 6
- 1
-
-
- CMTIE
- COM interrupt enable
- 5
- 1
-
-
- CH1IE
- Capture/Compare 2 interrupt
- enable
- 2
- 1
-
-
- CH0IE
- Capture/Compare 1 interrupt
- enable
- 1
- 1
-
-
- UPIE
- Update interrupt enable
- 0
- 1
-
-
-
-
- INTF
- INTF
- interrupt flag register
- 0x10
- 0x20
- read-write
- 0x0000
-
-
- CH1OF
- Capture/compare 1 overcapture
- flag
- 10
- 1
-
-
- CH0OF
- Capture/Compare 0 overcapture
- flag
- 9
- 1
-
-
- BRKIF
- Break interrupt flag
- 7
- 1
-
-
- TRGIF
- Trigger interrupt flag
- 6
- 1
-
-
- CMTIF
- COM interrupt flag
- 5
- 1
-
-
- CH1IF
- Capture/Compare 1 interrupt
- flag
- 2
- 1
-
-
- CH0IF
- Capture/compare 0 interrupt
- flag
- 1
- 1
-
-
- UPIF
- Update interrupt flag
- 0
- 1
-
-
-
-
- SWEVG
- SWEVG
- event generation register
- 0x14
- 0x20
- write-only
- 0x0000
-
-
- BRKG
- Break generation
- 7
- 1
-
-
- TRGG
- Trigger generation
- 6
- 1
-
-
- CMTG
- Capture/Compare control update
- generation
- 5
- 1
-
-
- CH1G
- Capture/compare 1
- generation
- 2
- 1
-
-
- CH0G
- Capture/compare 0
- generation
- 1
- 1
-
-
- UPG
- Update generation
- 0
- 1
-
-
-
-
- CHCTL0_Output
- CHCTL0_Output
- capture/compare mode register (output
- mode)
- 0x18
- 0x20
- read-write
- 0x00000000
-
-
- CH1COMCTL
- Output Compare 1 mode
- 12
- 3
-
-
- CH1COMSEN
- Output Compare 1 preload
- enable
- 11
- 1
-
-
- CH1COMFEN
- Output Compare 1 fast
- enable
- 10
- 1
-
-
- CH1MS
- Capture/Compare 1
- selection
- 8
- 2
-
-
- CH0COMCTL
- Output Compare 0 mode
- 4
- 3
-
-
- CH0COMSEN
- Output Compare 0 preload
- enable
- 3
- 1
-
-
- CH0COMFEN
- Output Compare 0 fast
- enable
- 2
- 1
-
-
- CH0MS
- Capture/Compare 0
- selection
- 0
- 2
-
-
-
-
- CHCTL0_Input
- CHCTL0_Input
- capture/compare mode register 0 (input
- mode)
- CHCTL0_Output
- 0x18
- 0x20
- read-write
- 0x00000000
-
-
- CH1CAPFLT
- Input capture 1 filter
- 12
- 4
-
-
- CH1CAPPSC
- Input capture 1 prescaler
- 10
- 2
-
-
- CH1MS
- Capture/Compare 1
- selection
- 8
- 2
-
-
- CH0CAPFLT
- Input capture 0 filter
- 4
- 4
-
-
- CH0CAPPSC
- Input capture 0 prescaler
- 2
- 2
-
-
- CH0MS
- Capture/Compare 0
- selection
- 0
- 2
-
-
-
-
- CHCTL2
- CHCTL2
- capture/compare enable
- register
- 0x20
- 0x20
- read-write
- 0x0000
-
-
- CH1NP
- Capture/Compare 1 output
- Polarity
- 7
- 1
-
-
- CH1P
- Capture/Compare 1 output
- Polarity
- 5
- 1
-
-
- CH1EN
- Capture/Compare 1 output
- enable
- 4
- 1
-
-
- CH0NP
- Capture/Compare 0 output
- Polarity
- 3
- 1
-
-
- CH0NEN
- Capture/Compare 0 complementary output
- enable
- 2
- 1
-
-
- CH0P
- Capture/Compare 0 output
- Polarity
- 1
- 1
-
-
- CH0EN
- Capture/Compare 0 output
- enable
- 0
- 1
-
-
-
-
- CNT
- CNT
- counter
- 0x24
- 0x20
- read-write
- 0x0000
-
-
- CNT
- counter value
- 0
- 16
-
-
-
-
- PSC
- PSC
- prescaler
- 0x28
- 0x20
- read-write
- 0x0000
-
-
- PSC
- Prescaler value
- 0
- 16
-
-
-
-
- CAR
- CAR
- auto-reload register
- 0x2C
- 0x20
- read-write
- 0x00000000
-
-
- CARL
- Auto-reload value
- 0
- 16
-
-
-
-
- CREP
- CREP
- repetition counter register
- 0x30
- 0x20
- read-write
- 0x0000
-
-
- CREP
- Repetition counter value
- 0
- 8
-
-
-
-
- CH0CV
- CH0CV
- capture/compare register 0
- 0x34
- 0x20
- read-write
- 0x00000000
-
-
- CH0VAL
- Capture/Compare 0 value
- 0
- 16
-
-
-
-
- CH1CV
- CH1CV
- capture/compare register 1
- 0x38
- 0x20
- read-write
- 0x00000000
-
-
- CH1VAL
- Capture/Compare 1 value
- 0
- 16
-
-
-
-
- CCHP
- CCHP
- break and dead-time register
- 0x44
- 0x20
- read-write
- 0x0000
-
-
- POEN
- Main output enable
- 15
- 1
-
-
- OAEN
- Automatic output enable
- 14
- 1
-
-
- BRKP
- Break polarity
- 13
- 1
-
-
- BRKEN
- Break enable
- 12
- 1
-
-
- ROS
- Off-state selection for Run
- mode
- 11
- 1
-
-
- IOS
- Off-state selection for Idle
- mode
- 10
- 1
-
-
- PROT
- complementary register protect control
- 8
- 2
-
-
- DTCFG
- Dead-time generator configure
- 0
- 8
-
-
-
-
- DMACFG
- DMACFG
- DMA configuration register
- 0x48
- 0x20
- read-write
- 0x0000
-
-
- DMATC
- DMA burst length
- 8
- 5
-
-
- DMATA
- DMA base address
- 0
- 5
-
-
-
-
- DMATB
- DMATB
- DMA transfer buffer register
- 0x4C
- 0x20
- read-write
- 0x0000
-
-
- DMATB
- DMA register for burst
- accesses
- 0
- 16
-
-
-
-
- CFG
- CFG
- configuration register
- 0xFC
- 0x20
- read-write
- 0x0000
-
-
- CHVSEL
- Write CHxVAL register selection
- 1
- 1
-
-
- OUTSEL
- The output value selection
- 0
- 1
-
-
-
-
-
-
- TIMER15
- General-purpose-timers
- TIMER
- 0x40014400
-
- 0x0
- 0x400
- registers
-
-
- TIMER15
- 21
-
-
-
- CTL0
- CTL0
- control register 0
- 0x0
- 0x20
- read-write
- 0x0000
-
-
- CKDIV
- Clock division
- 8
- 2
-
-
- ARSE
- Auto-reload preload enable
- 7
- 1
-
-
- SPM
- One-pulse mode
- 3
- 1
-
-
- UPS
- Update request source
- 2
- 1
-
-
- UPDIS
- Update disable
- 1
- 1
-
-
- CEN
- Counter enable
- 0
- 1
-
-
-
-
- CTL1
- CTL1
- control register 1
- 0x04
- 0x20
- read-write
- 0x0000
-
-
- ISO0N
- Output Idle state 0
- 9
- 1
-
-
- ISO0
- Output Idle state 0
- 8
- 1
-
-
- DMAS
- Capture/compare DMA
- selection
- 3
- 1
-
-
- CCUC
- Capture/compare control update
- selection
- 2
- 1
-
-
- CCSE
- Capture/compare preloaded
- control
- 0
- 1
-
-
-
-
- DMAINTEN
- DMAINTEN
- DMA/Interrupt enable register
- 0x0C
- 0x20
- read-write
- 0x0000
-
-
- CH0DEN
- Capture/Compare 0 DMA request
- enable
- 9
- 1
-
-
- UPDEN
- Update DMA request enable
- 8
- 1
-
-
- BRKIE
- Break interrupt enable
- 7
- 1
-
-
- CMTIE
- COM interrupt enable
- 5
- 1
-
-
- CH0IE
- Capture/Compare 0 interrupt
- enable
- 1
- 1
-
-
- UPIE
- Update interrupt enable
- 0
- 1
-
-
-
-
- INTF
- INTF
- interrupt flag register
- 0x10
- 0x20
- read-write
- 0x0000
-
-
- CH0OF
- Capture/Compare 0 overcapture
- flag
- 9
- 1
-
-
- BRKIF
- Break interrupt flag
- 7
- 1
-
-
- CMTIF
- COM interrupt flag
- 5
- 1
-
-
- CH0IF
- Capture/compare 0 interrupt
- flag
- 1
- 1
-
-
- UPIF
- Update interrupt flag
- 0
- 1
-
-
-
-
- SWEVG
- SWEVG
- event generation register
- 0x14
- 0x20
- write-only
- 0x0000
-
-
- BRKG
- Break generation
- 7
- 1
-
-
- CMTG
- Capture/Compare control update
- generation
- 5
- 1
-
-
- CH0G
- Capture/compare 0
- generation
- 1
- 1
-
-
- UPG
- Update generation
- 0
- 1
-
-
-
-
- CHCTL0_Output
- CHCTL0_Output
- capture/compare mode register (output
- mode)
- 0x18
- 0x20
- read-write
- 0x00000000
-
-
- CH0COMCTL
- Output Compare 0 mode
- 4
- 3
-
-
- CH0COMSEN
- Output Compare 0 preload
- enable
- 3
- 1
-
-
- CH0COMFEN
- Output Compare 0 fast
- enable
- 2
- 1
-
-
- CH0MS
- Capture/Compare 0
- selection
- 0
- 2
-
-
-
-
- CHCTL0_Input
- CHCTL0_Input
- capture/compare mode register 0 (input
- mode)
- CHCTL0_Output
- 0x18
- 0x20
- read-write
- 0x0000
-
-
- CH0CAPFLT
- Input capture 0 filter
- 4
- 4
-
-
- CH0CAPPSC
- Input capture 0 prescaler
- 2
- 2
-
-
- CH0MS
- Capture/Compare 0
- selection
- 0
- 2
-
-
-
-
- CHCTL2
- CHCTL2
- capture/compare enable
- register
- 0x20
- 0x20
- read-write
- 0x0000
-
-
- CH0NP
- Capture/Compare 0 output
- Polarity
- 3
- 1
-
-
- CH0NEN
- Capture/Compare 0 complementary output
- enable
- 2
- 1
-
-
- CH0P
- Capture/Compare 0 output
- Polarity
- 1
- 1
-
-
- CH0EN
- Capture/Compare 0 output
- enable
- 0
- 1
-
-
-
-
- CNT
- CNT
- counter
- 0x24
- 0x20
- read-write
- 0x0000
-
-
- CNT
- counter value
- 0
- 16
-
-
-
-
- PSC
- PSC
- prescaler
- 0x28
- 0x20
- read-write
- 0x0000
-
-
- PSC
- Prescaler value
- 0
- 16
-
-
-
-
- CAR
- CAR
- auto-reload register
- 0x2C
- 0x20
- read-write
- 0x00000000
-
-
- CARL
- Auto-reload value
- 0
- 16
-
-
-
-
- CREP
- CREP
- repetition counter register
- 0x30
- 0x20
- read-write
- 0x0000
-
-
- CREP
- Repetition counter value
- 0
- 8
-
-
-
-
- CH0CV
- CH0CV
- capture/compare register 0
- 0x34
- 0x20
- read-write
- 0x0000
-
-
- CH0VAL
- Capture/Compare 0 value
- 0
- 16
-
-
-
-
- CCHP
- CCHP
- break and dead-time register
- 0x44
- 0x20
- read-write
- 0x0000
-
-
- POEN
- Main output enable
- 15
- 1
-
-
- OAEN
- Automatic output enable
- 14
- 1
-
-
- BRKP
- Break polarity
- 13
- 1
-
-
- BRKEN
- Break enable
- 12
- 1
-
-
- ROS
- Off-state selection for Run
- mode
- 11
- 1
-
-
- IOS
- Off-state selection for Idle
- mode
- 10
- 1
-
-
- PROT
- complementary register protect control
- 8
- 2
-
-
- DTCFG
- Dead-time generator setup
- 0
- 8
-
-
-
-
- DMACFG
- DMACFG
- DMA configuration register
- 0x48
- 0x20
- read-write
- 0x0000
-
-
- DMATC
- DMA transfer count
- 8
- 5
-
-
- DMATA
- DMA transfer access start address
- 0
- 5
-
-
-
-
- DMATB
- DMATB
- DMA transfer buffer register
- 0x4C
- 0x20
- read-write
- 0x0000
-
-
- DMATB
- DMA register for burst
- accesses
- 0
- 16
-
-
-
-
- CFG
- CFG
- configuration register
- 0xFC
- 0x20
- read-write
- 0x0000
-
-
- OUTSEL
- The output value selection
- 0
- 1
-
-
- CHVSEL
- Write CHxVAL register selection
- 1
- 1
-
-
-
-
-
-
- TIMER16
- 0x40014800
-
- TIMER16
- 22
-
-
-
- USART0
- Universal synchronous asynchronous receiver
- transmitter
- USART
- 0x40013800
-
- 0x0
- 0x400
- registers
-
-
- USART0
- 27
-
-
-
- CTL0
- CTL0
- Control register 0
- 0x0
- 0x20
- read-write
- 0x00000000
-
-
- EBIE
- End of Block interrupt
- enable
- 27
- 1
-
-
- RTIE
- Receiver timeout interrupt
- enable
- 26
- 1
-
-
- DEA
- Driver Enable assertion
- time
- 21
- 5
-
-
- DED
- Driver Enable deassertion
- time
- 16
- 5
-
-
- OVSMOD
- Oversampling mode
- 15
- 1
-
-
- AMIE
- Character match interrupt
- enable
- 14
- 1
-
-
- MEN
- Mute mode enable
- 13
- 1
-
-
- WL
- Word length
- 12
- 1
-
-
- WM
- Receiver wakeup method
- 11
- 1
-
-
- PCEN
- Parity control enable
- 10
- 1
-
-
- PM
- Parity selection
- 9
- 1
-
-
- PERRIE
- PE interrupt enable
- 8
- 1
-
-
- TBEIE
- interrupt enable
- 7
- 1
-
-
- TCIE
- Transmission complete interrupt
- enable
- 6
- 1
-
-
- RBNEIE
- RXNE interrupt enable
- 5
- 1
-
-
- IDLEIE
- IDLE interrupt enable
- 4
- 1
-
-
- TEN
- Transmitter enable
- 3
- 1
-
-
- REN
- Receiver enable
- 2
- 1
-
-
- UESM
- USART enable in Stop mode
- 1
- 1
-
-
- UEN
- USART enable
- 0
- 1
-
-
-
-
- CTL1
- CTL1
- Control register 1
- 0x4
- 0x20
- read-write
- 0x00000000
-
-
- ADDR
- Address of the USART node
- 24
- 8
-
-
- RTEN
- Receiver timeout enable
- 23
- 1
-
-
- ABDM
- Auto baud rate mode
- 21
- 2
-
-
- ABDEN
- Auto baud rate enable
- 20
- 1
-
-
- MSBF
- Most significant bit first
- 19
- 1
-
-
- DINV
- Binary data inversion
- 18
- 1
-
-
- TINV
- TX pin active level
- inversion
- 17
- 1
-
-
- RINV
- RX pin active level
- inversion
- 16
- 1
-
-
- STRP
- Swap TX/RX pins
- 15
- 1
-
-
- LMEN
- LIN mode enable
- 14
- 1
-
-
- STB
- STOP bits
- 12
- 2
-
-
- CKEN
- Clock enable
- 11
- 1
-
-
- CPL
- Clock polarity
- 10
- 1
-
-
- CPH
- Clock phase
- 9
- 1
-
-
- CLEN
- Last bit clock pulse
- 8
- 1
-
-
- LBDIE
- LIN break detection interrupt
- enable
- 6
- 1
-
-
- LBLEN
- LIN break detection length
- 5
- 1
-
-
- ADDM
- 7-bit Address Detection/4-bit Address
- Detection
- 4
- 1
-
-
-
-
- CTL2
- CTL2
- Control register 2
- 0x8
- 0x20
- read-write
- 0x00000000
-
-
- WUIE
- Wakeup from Stop mode interrupt
- enable
- 22
- 1
-
-
- WUM
- Wakeup from Stop mode interrupt flag
- selection
- 20
- 2
-
-
- SCRTNUM
- Smartcard auto-retry count
- 17
- 3
-
-
- DEP
- Driver enable polarity
- selection
- 15
- 1
-
-
- DEM
- Driver enable mode
- 14
- 1
-
-
- DDRE
- DMA Disable on Reception
- Error
- 13
- 1
-
-
- OVRD
- Overrun Disable
- 12
- 1
-
-
- OSB
- One sample bit method
- enable
- 11
- 1
-
-
- CTSIE
- CTS interrupt enable
- 10
- 1
-
-
- CTSEN
- CTS enable
- 9
- 1
-
-
- RTSEN
- RTS enable
- 8
- 1
-
-
- DENT
- DMA enable transmitter
- 7
- 1
-
-
- DENR
- DMA enable receiver
- 6
- 1
-
-
- SCEN
- Smartcard mode enable
- 5
- 1
-
-
- NKEN
- Smartcard NACK enable
- 4
- 1
-
-
- HDEN
- Half-duplex selection
- 3
- 1
-
-
- IRLP
- IrDA low-power
- 2
- 1
-
-
- IREN
- IrDA mode enable
- 1
- 1
-
-
- ERRIE
- Error interrupt enable
- 0
- 1
-
-
-
-
- BAUD
- BAUD
- Baud rate register
- 0xC
- 0x20
- read-write
- 0x00000000
-
-
- BRR_INT
- integer of baud-rate divider
- 4
- 12
-
-
- BRR_FRA
- integer of baud-rate divider
- 0
- 4
-
-
-
-
- GP
- GP
- Guard time and prescaler
- register
- 0x10
- 0x20
- read-write
- 0x00000000
-
-
- GUAT
- Guard time value
- 8
- 8
-
-
- PSC
- Prescaler value
- 0
- 8
-
-
-
-
- RT
- RT
- Receiver timeout register
- 0x14
- 0x20
- read-write
- 0x00000000
-
-
- BL
- Block Length
- 24
- 8
-
-
- RT
- Receiver timeout value
- 0
- 24
-
-
-
-
- CMD
- CMD
- Request register
- 0x18
- 0x20
- write-only
- 0x00000000
-
-
- TXFCMD
- Transmit data flush
- request
- 4
- 1
-
-
- RXFCMD
- Receive data flush request
- 3
- 1
-
-
- MMCMD
- Mute mode request
- 2
- 1
-
-
- SBKCMD
- Send break request
- 1
- 1
-
-
- ABDCMD
- Auto baud rate request
- 0
- 1
-
-
-
-
- STAT
- STAT
- Interrupt & status
- register
- 0x1C
- 0x20
- read-only
- 0x000000C0
-
-
- REA
- Receive enable acknowledge
- flag
- 22
- 1
-
-
- TEA
- Transmit enable acknowledge
- flag
- 21
- 1
-
-
- WUF
- Wakeup from Stop mode flag
- 20
- 1
-
-
- RWU
- Receiver wakeup from Mute
- mode
- 19
- 1
-
-
- SBF
- Send break flag
- 18
- 1
-
-
- AMF
- character match flag
- 17
- 1
-
-
- BSY
- Busy flag
- 16
- 1
-
-
- ABDF
- Auto baud rate flag
- 15
- 1
-
-
- ABDE
- Auto baud rate error
- 14
- 1
-
-
- EBF
- End of block flag
- 12
- 1
-
-
- RTF
- Receiver timeout
- 11
- 1
-
-
- CTS
- CTS flag
- 10
- 1
-
-
- CTSF
- CTS interrupt flag
- 9
- 1
-
-
- LBDF
- LIN break detection flag
- 8
- 1
-
-
- TBE
- Transmit data register
- empty
- 7
- 1
-
-
- TC
- Transmission complete
- 6
- 1
-
-
- RBNE
- Read data register not
- empty
- 5
- 1
-
-
- IDLEF
- Idle line detected
- 4
- 1
-
-
- ORERR
- Overrun error
- 3
- 1
-
-
- NERR
- Noise detected flag
- 2
- 1
-
-
- FERR
- Framing error
- 1
- 1
-
-
- PERR
- Parity error
- 0
- 1
-
-
-
-
- INTC
- INTC
- Interrupt flag clear register
- 0x20
- 0x20
- write-only
- 0x00000000
-
-
- WUC
- Wakeup from Stop mode clear
- flag
- 20
- 1
-
-
- AMC
- Character match clear flag
- 17
- 1
-
-
- EBC
- End of timeout clear flag
- 12
- 1
-
-
- RTC
- Receiver timeout clear
- flag
- 11
- 1
-
-
- CTSC
- CTS clear flag
- 9
- 1
-
-
- LBDC
- LIN break detection clear
- flag
- 8
- 1
-
-
- TCC
- Transmission complete clear
- flag
- 6
- 1
-
-
- IDLEC
- Idle line detected clear
- flag
- 4
- 1
-
-
- OREC
- Overrun error clear flag
- 3
- 1
-
-
- NEC
- Noise detected clear flag
- 2
- 1
-
-
- FEC
- Framing error clear flag
- 1
- 1
-
-
- PEC
- Parity error clear flag
- 0
- 1
-
-
-
-
- RDATA
- RDATA
- Receive data register
- 0x24
- 0x20
- read-only
- 0x00000000
-
-
- RDATA
- Receive data value
- 0
- 9
-
-
-
-
- TDATA
- TDATA
- Transmit data register
- 0x28
- 0x20
- read-write
- 0x00000000
-
-
- TDATA
- Transmit data value
- 0
- 9
-
-
-
-
- CHC
- CHC
- coherence control register
- 0xC0
- 0x20
- read-write
- 0x00000000
-
-
- EPERR
- Early parity error flag
- 8
- 1
-
-
- HCM
- Hardware flow control coherence mode
- 0
- 1
-
-
-
-
- RFCS
- RFCS
- USART receive FIFO control and status register
- 0xD0
- 0x20
- 0x00000400
-
-
- RFFINT
- Receive FIFO full interrupt flag
- 15
- 1
- read-write
-
-
- RFCNT
- Receive FIFO count number
- 12
- 3
- read-only
-
-
- RFF
- Receive FIFO full flag
- 11
- 1
- read-only
-
-
- RFE
- Receive FIFO empty flag
- 10
- 1
- read-only
-
-
- RFFIE
- Receive FIFO full interrupt enable
- 9
- 1
- read-write
-
-
- RFEN
- Receive FIFO enable
- 8
- 1
- read-write
-
-
- ELNACK
- Early NKEN when smartcard mode is selected
- 0
- 1
- read-write
-
-
-
-
-
-
- USART1
- 0x40004400
-
- USART1
- 28
-
-
-
- WWDGT
- Window watchdog timer
- WWDGT
- 0x40002C00
-
- 0x0
- 0x400
- registers
-
-
- WWDGT
- 0
-
-
-
- CTL
- CTL
- Control register
- 0x0
- 0x20
- read-write
- 0x0000007F
-
-
- WDGTEN
- Activation bit
- 7
- 1
-
-
- CNT
- 7-bit counter
- 0
- 7
-
-
-
-
- CFG
- CFG
- Configuration register
- 0x04
- 0x20
- read-write
- 0x0000007F
-
-
- EWIE
- Early wakeup interrupt
- 9
- 1
-
-
- PSC
- Prescaler
- 7
- 2
-
-
- WIN
- 7-bit window value
- 0
- 7
-
-
-
-
- STAT
- STAT
- Status register
- 0x08
- 0x20
- read-write
- 0x00000000
-
-
- EWIF
- Early wakeup interrupt
- flag
- 0
- 1
-
-
-
-
-
-
-
-
-
+
+
+ GD32E230
+ 1.0
+ GD32E230 ARM 32-bit Cortex-M23 Microcontroller based device
+
+ CM23
+ r0p0
+ little
+ 1
+ 1
+ 4
+ 0
+
+ 8
+ 32
+
+
+
+
+ 0x20
+ 0x0
+ 0xFFFFFFFF
+
+
+ ADC
+ Analog to digital converter
+ ADC
+ 0x40012400
+
+ 0x0
+ 0x400
+ registers
+
+
+ ADC_CMP
+ 12
+
+
+
+ STAT
+ STAT
+ status register
+ 0x0
+ 0x20
+ read-write
+ 0x00000000
+
+
+ STRC
+ Start flag of regular channel group
+ 4
+ 1
+
+
+ STIC
+ Start flag of inserted channel group
+ 3
+ 1
+
+
+ EOIC
+ End of inserted group conversion flag
+ 2
+ 1
+
+
+ EOC
+ End of group conversion flag
+ 1
+ 1
+
+
+ WDE
+ Analog watchdog event flag
+ 0
+ 1
+
+
+
+
+ CTL0
+ CTL0
+ control register 0
+ 0x4
+ 0x20
+ read-write
+ 0x00000000
+
+
+ DRES
+ ADC resolution
+ 24
+ 2
+
+
+ RWDEN
+ Regular channel analog watchdog enable
+ 23
+ 1
+
+
+ IWDEN
+ Inserted channel analog watchdog enable
+ 22
+ 1
+
+
+ DISNUM
+ Number of conversions in discontinuous
+ mode
+ 13
+ 3
+
+
+ DISIC
+ Discontinuous mode on injected
+ channels
+ 12
+ 1
+
+
+ DISRC
+ Discontinuous mode on regular
+ channels
+ 11
+ 1
+
+
+ ICA
+ Inserted channel group convert
+ automatically
+ 10
+ 1
+
+
+ WDSC
+ When in scan mode, analog watchdog
+ is effective on a single channel
+ 9
+ 1
+
+
+ SM
+ Scan mode
+ 8
+ 1
+
+
+ EOICIE
+ Interrupt enable for EOIC
+ 7
+ 1
+
+
+ WDEIE
+ Interrupt enable for WDE
+ 6
+ 1
+
+
+ EOCIE
+ Interrupt enable for EOC
+ 5
+ 1
+
+
+ WDCHSEL
+ Analog watchdog channel select
+ 0
+ 5
+
+
+
+
+ CTL1
+ CTL1
+ control register 1
+ 0x08
+ 0x20
+ read-write
+ 0x00000000
+
+
+ TSVREN
+ Channel 16 and 17 enable of ADC
+ 23
+ 1
+
+
+ SWRCST
+ Start on regular channel
+ 22
+ 1
+
+
+ SWICST
+ Start on inserted channel
+ 21
+ 1
+
+
+ ETERC
+ External trigger enable for regular
+ channel
+ 20
+ 1
+
+
+ ETSRC
+ External trigger select for regular
+ channel
+ 17
+ 3
+
+
+ ETEIC
+ External trigger enable for
+ inserted channels
+ 15
+ 1
+
+
+ ETSIC
+ External trigger select for inserted
+ channel
+ 12
+ 3
+
+
+ DAL
+ Data alignment
+ 11
+ 1
+
+
+ DMA
+ DMA request enable
+ 8
+ 1
+
+
+ RSTCLB
+ Reset calibration
+ 3
+ 1
+
+
+ CLB
+ ADC calibration
+ 2
+ 1
+
+
+ CTN
+ Continuous mode
+ 1
+ 1
+
+
+ ADCON
+ ADC ON
+ 0
+ 1
+
+
+
+
+ SAMPT0
+ SAMPT0
+ Sampling time register 0
+ 0x0C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SPT16
+ Channel 16 sample time
+ selection
+ 18
+ 3
+
+
+ SPT17
+ Channel 17 sample time
+ selection
+ 21
+ 3
+
+
+
+
+ SAMPT1
+ SAMPT1
+ Sampling time register 1
+ 0x10
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SPT0
+ Channel 0 sample time
+ selection
+ 0
+ 3
+
+
+ SPT1
+ Channel 1 sample time
+ selection
+ 3
+ 3
+
+
+ SPT2
+ Channel 2 sample time
+ selection
+ 6
+ 3
+
+
+ SPT3
+ Channel 3 sample time
+ selection
+ 9
+ 3
+
+
+ SPT4
+ Channel 4 sample time
+ selection
+ 12
+ 3
+
+
+ SPT5
+ Channel 5 sample time
+ selection
+ 15
+ 3
+
+
+ SPT6
+ Channel 6 sample time
+ selection
+ 18
+ 3
+
+
+ SPT7
+ Channel 7 sample time
+ selection
+ 21
+ 3
+
+
+ SPT8
+ Channel 8 sample time
+ selection
+ 24
+ 3
+
+
+ SPT9
+ Channel 9 sample time
+ selection
+ 27
+ 3
+
+
+
+
+ IOFF0
+ IOFF0
+ Inserted channel data offset register
+ 0
+ 0x14
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IOFF
+ Data offset for injected channel
+ x
+ 0
+ 12
+
+
+
+
+ IOFF1
+ IOFF1
+ Inserted channel data offset register
+ 1
+ 0x18
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IOFF
+ Data offset for injected channel
+ x
+ 0
+ 12
+
+
+
+
+ IOFF2
+ IOFF2
+ Inserted channel data offset register
+ 2
+ 0x1C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IOFF
+ Data offset for injected channel
+ x
+ 0
+ 12
+
+
+
+
+ IOFF3
+ IOFF3
+ Inserted channel data offset register
+ 3
+ 0x20
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IOFF
+ Data offset for injected channel
+ x
+ 0
+ 12
+
+
+
+
+ WDHT
+ WDHT
+ watchdog higher threshold
+ register
+ 0x24
+ 0x20
+ read-write
+ 0x00000FFF
+
+
+ WDHT
+ Analog watchdog high
+ threshold
+ 0
+ 12
+
+
+
+
+ WDLT
+ WDLT
+ watchdog low threshold
+ register
+ 0x28
+ 0x20
+ read-write
+ 0x00000000
+
+
+ WDLT
+ Analog watchdog lower
+ threshold
+ 0
+ 12
+
+
+
+
+ RSQ0
+ RSQ0
+ regular sequence register 0
+ 0x2C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ RL
+ Regular channel sequence
+ length
+ 20
+ 4
+
+
+ RSQ15
+ 15th conversion in regular
+ sequence
+ 15
+ 5
+
+
+ RSQ14
+ 14th conversion in regular
+ sequence
+ 10
+ 5
+
+
+ RSQ13
+ 13th conversion in regular
+ sequence
+ 5
+ 5
+
+
+ RSQ12
+ 12th conversion in regular
+ sequence
+ 0
+ 5
+
+
+
+
+ RSQ1
+ RSQ1
+ regular sequence register 1
+ 0x30
+ 0x20
+ read-write
+ 0x00000000
+
+
+ RSQ11
+ 11th conversion in regular
+ sequence
+ 25
+ 5
+
+
+ RSQ10
+ 10th conversion in regular
+ sequence
+ 20
+ 5
+
+
+ RSQ9
+ 9th conversion in regular
+ sequence
+ 15
+ 5
+
+
+ RSQ8
+ 8th conversion in regular
+ sequence
+ 10
+ 5
+
+
+ RSQ7
+ 7th conversion in regular
+ sequence
+ 5
+ 5
+
+
+ RSQ6
+ 6th conversion in regular
+ sequence
+ 0
+ 5
+
+
+
+
+ RSQ2
+ RSQ2
+ regular sequence register 2
+ 0x34
+ 0x20
+ read-write
+ 0x00000000
+
+
+ RSQ5
+ 5th conversion in regular
+ sequence
+ 25
+ 5
+
+
+ RSQ4
+ 4th conversion in regular
+ sequence
+ 20
+ 5
+
+
+ RSQ3
+ 3rd conversion in regular
+ sequence
+ 15
+ 5
+
+
+ RSQ2
+ 2nd conversion in regular
+ sequence
+ 10
+ 5
+
+
+ RSQ1
+ 1st conversion in regular
+ sequence
+ 5
+ 5
+
+
+ RSQ0
+ conversion in regular
+ sequence
+ 0
+ 5
+
+
+
+
+ ISQ
+ ISQ
+ injected sequence register
+ 0x38
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IL
+ Injected sequence length
+ 20
+ 2
+
+
+ ISQ3
+ 3rd conversion in injected
+ sequence
+ 15
+ 5
+
+
+ ISQ2
+ 2nd conversion in injected
+ sequence
+ 10
+ 5
+
+
+ ISQ1
+ 1st conversion in injected
+ sequence
+ 5
+ 5
+
+
+ ISQ0
+ conversion in injected
+ sequence
+ 0
+ 5
+
+
+
+
+ IDATA0
+ IDATA0
+ injected data register 0
+ 0x3C
+ 0x20
+ read-only
+ 0x00000000
+
+
+ IDATAn
+ Injected data
+ 0
+ 16
+
+
+
+
+ IDATA1
+ IDATA1
+ injected data register 1
+ 0x40
+ 0x20
+ read-only
+ 0x00000000
+
+
+ IDATAn
+ Injected data
+ 0
+ 16
+
+
+
+
+ IDATA2
+ IDATA2
+ injected data register 2
+ 0x44
+ 0x20
+ read-only
+ 0x00000000
+
+
+ IDATAn
+ Injected data
+ 0
+ 16
+
+
+
+
+ IDATA3
+ IDATA3
+ injected data register 3
+ 0x48
+ 0x20
+ read-only
+ 0x00000000
+
+
+ IDATAn
+ Injected data
+ 0
+ 16
+
+
+
+
+ RDATA
+ RDATA
+ regular data register
+ 0x4C
+ 0x20
+ read-only
+ 0x00000000
+
+
+ RDATA
+ Regular data
+ 0
+ 16
+
+
+
+
+ OVSAMPCTL
+ OVSAMPCTL
+ ADC oversample control register
+ 0x80
+ 0x20
+ read-write
+ 0x00000000
+
+
+ TOVS
+ Triggered Oversampling
+ 9
+ 1
+
+
+ OVSS
+ Oversampling shift
+ 5
+ 4
+
+
+ OVSR
+ Oversampling ratio
+ 2
+ 3
+
+
+ OVSEN
+ Oversampler Enable
+ 0
+ 1
+
+
+
+
+
+
+ CMP
+ Comparator
+ Comparator
+ 0x4001001C
+
+ 0x0
+ 0x80
+ registers
+
+
+
+ CS
+ CS
+ control and status register
+ 0x00
+ 0x20
+ 0x00000000
+
+
+ CMPEN
+ Comparator enable
+ 0
+ 1
+ read-write
+
+
+ CMPSW
+ Comparator switch
+ 1
+ 1
+ read-write
+
+
+ CMPM
+ Comparator mode
+ 2
+ 2
+ read-write
+
+
+ CMPMSEL
+ Comparator input selection
+ 4
+ 3
+ read-write
+
+
+ CMPOSEL
+ Comparator output selection
+ 8
+ 3
+ read-write
+
+
+ CMPPL
+ Polarity of comparator output
+ 11
+ 1
+ read-write
+
+
+ CMPHST
+ Comparator hysteresis
+ 12
+ 2
+ read-write
+
+
+ CMPO
+ Comparator 0 output
+ 14
+ 1
+ read-only
+
+
+ CMPLK
+ Comparator 0 lock
+ 15
+ 1
+ read-write
+
+
+
+
+
+
+ CRC
+ cyclic redundancy check calculation unit
+ CRC
+ 0x40023000
+
+ 0x0
+ 0x400
+ registers
+
+
+
+ DATA
+ DATA
+ Data register
+ 0x0
+ 0x20
+ read-write
+ 0xFFFFFFFF
+
+
+ DATA
+ CRC calculation result bits
+ 0
+ 32
+
+
+
+
+ FDATA
+ FDATA
+ Free data register
+ 0x04
+ 0x20
+ read-write
+ 0x00000000
+
+
+ FDATA
+ General-purpose 8-bit data register
+ bits
+ 0
+ 8
+
+
+
+
+ CTL
+ CTL
+ Control register
+ 0x8
+ 0x20
+ read-write
+ 0x00000000
+
+
+ RST
+ reset bit
+ 0
+ 1
+
+
+ PS
+ Size of polynomial
+ 3
+ 2
+
+
+ REV_I
+ Reverse input data
+ 5
+ 2
+
+
+ REV_O
+ Reverse output data
+ 7
+ 1
+
+
+
+
+ IDATA
+ IDATA
+ Initialization Data Register
+ 0x10
+ 0x20
+ read-write
+ 0xFFFFFFFF
+
+
+ IDATA
+ CRC calculation initial value
+ 0
+ 32
+
+
+
+
+ POLY
+ POLY
+ Polynomial register
+ 0x14
+ 0x20
+ read-write
+ 0x04C11DB7
+
+
+ POLY
+ User configurable polynomial value
+ 0
+ 32
+
+
+
+
+
+
+ DBGMCU
+ Debug support
+ DBGMCU
+ 0x40015800
+
+ 0x0
+ 0x400
+ registers
+
+
+
+ ID
+ ID
+ MCU Device ID Code Register
+ 0x0
+ 0x20
+ read-only
+ 0x0
+
+
+ ID_CODE
+ DBG ID code register
+ 0
+ 32
+
+
+
+
+ CTL0
+ CTL0
+ Debug Control Register 0
+ 0x4
+ 0x20
+ read-write
+ 0x0
+
+
+ SLP_HOLD
+ Sleep mode hold register
+ 0
+ 1
+
+
+ DSLP_HOLD
+ DEEPSLEEP mode hold Mode
+ 1
+ 1
+
+
+ STB_HOLD
+ Standby mode hold Mode
+ 2
+ 1
+
+
+ FWDGT_HOLD
+ FWDGT hold register
+ 8
+ 1
+
+
+ WWDGT_HOLD
+ WWDGT hold register
+ 9
+ 1
+
+
+ TIMER0_HOLD
+ Timer 0 hold register
+ 10
+ 1
+
+
+ TIMER2_HOLD
+ Timer 2 hold register
+ 12
+ 1
+
+
+ I2C0_HOLD
+ I2C0 hold register
+ 15
+ 1
+
+
+ I2C1_HOLD
+ I2C1 hold register
+ 16
+ 1
+
+
+ TIMER5_HOLD
+ Timer 5 hold register
+ 19
+ 1
+
+
+ TIMER13_HOLD
+ Timer 13 hold register
+ 27
+ 1
+
+
+
+
+ CTL1
+ CTL1
+ Debug Control Register 1
+ 0x08
+ 0x20
+ read-write
+ 0x00000000
+
+
+ RTC_HOLD
+ RTC hold register
+ 10
+ 1
+
+
+ TIMER14_HOLD
+ Timer 14 hold register
+ 16
+ 1
+
+
+ TIMER15_HOLD
+ Timer 15 hold register
+ 17
+ 1
+
+
+ TIMER16_HOLD
+ Timer 16 hold register
+ 18
+ 1
+
+
+
+
+
+
+ DMA
+ DMA controller
+ DMA
+ 0x40020000
+
+ 0x0
+ 0x400
+ registers
+
+
+ DMA_Channel0
+ 9
+
+
+ DMA_Channel1_2
+ 10
+
+
+ DMA_Channel3_4
+ 11
+
+
+
+ INTF
+ INTF
+ DMA interrupt flag register
+ (DMA_INTF)
+ 0x0
+ 0x20
+ read-only
+ 0x00000000
+
+
+ GIF0
+ Channel 0 Global interrupt
+ flag
+ 0
+ 1
+
+
+ FTFIF0
+ Channel 0 Full Transfer Finish
+ flag
+ 1
+ 1
+
+
+ HTFIF0
+ Channel 0 Half Transfer Finish
+ flag
+ 2
+ 1
+
+
+ ERRIF0
+ Channel 0 Error flag
+ 3
+ 1
+
+
+ GIF1
+ Channel 1 Global interrupt
+ flag
+ 4
+ 1
+
+
+ FTFIF1
+ Channel 1 Full Transfer Finish
+ flag
+ 5
+ 1
+
+
+ HTFIF1
+ Channel 1 Half Transfer Finish
+ flag
+ 6
+ 1
+
+
+ ERRIF1
+ Channel 1 Error flag
+ 7
+ 1
+
+
+ GIF2
+ Channel 2 Global interrupt
+ flag
+ 8
+ 1
+
+
+ FTFIF2
+ Channel 2 Full Transfer Finish
+ flag
+ 9
+ 1
+
+
+ HTFIF2
+ Channel 2 Half Transfer Finish
+ flag
+ 10
+ 1
+
+
+ ERRIF2
+ Channel 2 Error
+ flag
+ 11
+ 1
+
+
+ GIF3
+ Channel 3 Global interrupt
+ flag
+ 12
+ 1
+
+
+ FTFIF3
+ Channel 3 Full Transfer Finish
+ flag
+ 13
+ 1
+
+
+ HTFIF3
+ Channel 3 Half Transfer Finish
+ flag
+ 14
+ 1
+
+
+ ERRIF3
+ Channel 3 Error
+ flag
+ 15
+ 1
+
+
+ GIF4
+ Channel 4 Global interrupt
+ flag
+ 16
+ 1
+
+
+ FTFIF4
+ Channel 4 Full Transfer Finish
+ flag
+ 17
+ 1
+
+
+ HTFIF4
+ Channel 4 Half Transfer Finish
+ flag
+ 18
+ 1
+
+
+ ERRIF4
+ Channel 4 Error
+ flag
+ 19
+ 1
+
+
+
+
+ INTC
+ INTC
+ DMA interrupt flag clear register
+ (DMA_INTC)
+ 0x4
+ 0x20
+ write-only
+ 0x00000000
+
+
+ GIFC0
+ Channel 0 Global interrupt flag
+ clear
+ 0
+ 1
+
+
+ GIFC1
+ Channel 1 Global interrupt flag
+ clear
+ 4
+ 1
+
+
+ GIFC2
+ Channel 2 Global interrupt flag
+ clear
+ 8
+ 1
+
+
+ GIFC3
+ Channel 3 Global interrupt flag
+ clear
+ 12
+ 1
+
+
+ GIFC4
+ Channel 4 Global interrupt flag
+ clear
+ 16
+ 1
+
+
+ FTFIFC0
+ Channel 0 Full Transfer Finish
+ clear
+ 1
+ 1
+
+
+ FTFIFC1
+ Channel 1 Full Transfer Finish
+ clear
+ 5
+ 1
+
+
+ FTFIFC2
+ Channel 2 Full Transfer Finish
+ clear
+ 9
+ 1
+
+
+ FTFIFC3
+ Channel 3 Full Transfer Finish
+ clear
+ 13
+ 1
+
+
+ FTFIFC4
+ Channel 4 Full Transfer Finish
+ clear
+ 17
+ 1
+
+
+ HTFIFC0
+ Channel 0 Half Transfer
+ clear
+ 2
+ 1
+
+
+ HTFIFC1
+ Channel 1 Half Transfer
+ clear
+ 6
+ 1
+
+
+ HTFIFC2
+ Channel 2 Half Transfer
+ clear
+ 10
+ 1
+
+
+ HTFIFC3
+ Channel 3 Half Transfer
+ clear
+ 14
+ 1
+
+
+ HTFIFC4
+ Channel 4 Half Transfer
+ clear
+ 18
+ 1
+
+
+ ERRIFC0
+ Channel 0 Error
+ clear
+ 3
+ 1
+
+
+ ERRIFC1
+ Channel 1 Error
+ clear
+ 7
+ 1
+
+
+ ERRIFC2
+ Channel 2 Error
+ clear
+ 11
+ 1
+
+
+ ERRIFC3
+ Channel 3 Error
+ clear
+ 15
+ 1
+
+
+ ERRIFC4
+ Channel 4 Error
+ clear
+ 19
+ 1
+
+
+
+
+ CH0CTL
+ CH0CTL
+ DMA channel configuration register
+ (DMA_CH0CTL)
+ 0x8
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CHEN
+ Channel enable
+ 0
+ 1
+
+
+ FTFIE
+ Full Transfer Finish interrupt
+ enable
+ 1
+ 1
+
+
+ HTFIE
+ Half Transfer Finish interrupt
+ enable
+ 2
+ 1
+
+
+ ERRIE
+ Transfer access error interrupt
+ enable
+ 3
+ 1
+
+
+ DIR
+ Transfer direction
+ 4
+ 1
+
+
+ CMEN
+ Circular mode enable
+ 5
+ 1
+
+
+ PNAGA
+ Next address generation algorithm of peripheral
+ 6
+ 1
+
+
+ MNAGA
+ Next address generation algorithm of memory
+ 7
+ 1
+
+
+ PWIDTH
+ Transfer data size of peripheral
+ 8
+ 2
+
+
+ MWIDTH
+ Transfer data size of memory
+ 10
+ 2
+
+
+ PRIO
+ Priority Level of this channel
+ 12
+ 2
+
+
+ M2M
+ Memory to memory mode
+ 14
+ 1
+
+
+
+
+ CH0CNT
+ CH0CNT
+ DMA channel 0 counter
+ register
+ 0x0C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CNT
+ Transfer counter
+ 0
+ 16
+
+
+
+
+ CH0PADDR
+ CH0PADDR
+ DMA channel 0 peripheral base address
+ register
+ 0x10
+ 0x20
+ read-write
+ 0x00000000
+
+
+ PADDR
+ Peripheral base address
+ 0
+ 32
+
+
+
+
+ CH0MADDR
+ CH0MADDR
+ DMA channel 0 memory base address
+ register
+ 0x14
+ 0x20
+ read-write
+ 0x00000000
+
+
+ MADDR
+ Memory address
+ 0
+ 32
+
+
+
+
+ CH1CTL
+ CH1CTL
+ DMA channel configuration register
+ (DMA_CH1CTL)
+ 0x1C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CHEN
+ Channel enable
+ 0
+ 1
+
+
+ FTFIE
+ Full Transfer Finish interrupt
+ enable
+ 1
+ 1
+
+
+ HTFIE
+ Half Transfer Finish interrupt
+ enable
+ 2
+ 1
+
+
+ ERRIE
+ Error interrupt
+ enable
+ 3
+ 1
+
+
+ DIR
+ Transfer direction
+ 4
+ 1
+
+
+ CMEN
+ Circular mode enable
+ 5
+ 1
+
+
+ PNAGA
+ Next address generation algorithm of peripheral
+ 6
+ 1
+
+
+ MNAGA
+ Next address generation algorithm of memory
+ 7
+ 1
+
+
+ PWIDTH
+ Transfer data size of peripheral
+ 8
+ 2
+
+
+ MWIDTH
+ Transfer data size of memory
+ 10
+ 2
+
+
+ PRIO
+ Priority Level of this channel
+ 12
+ 2
+
+
+ M2M
+ Memory to memory mode
+ 14
+ 1
+
+
+
+
+ CH1CNT
+ CH1CNT
+ DMA channel 1 counter
+ register
+ 0x20
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CNT
+ Transfer counter
+ 0
+ 16
+
+
+
+
+
+ CH1PADDR
+ CH1PADDR
+ DMA channel 1 peripheral base address
+ register
+ 0x24
+ 0x20
+ read-write
+ 0x00000000
+
+
+ PADDR
+ Peripheral base address
+ 0
+ 32
+
+
+
+
+ CH1MADDR
+ CH1MADDR
+ DMA channel 1 memory base address
+ register
+ 0x28
+ 0x20
+ read-write
+ 0x00000000
+
+
+ MADDR
+ Memory address
+ 0
+ 32
+
+
+
+
+ CH2CTL
+ CH2CTL
+ DMA channel configuration register
+ (DMA_CH2CTL)
+ 0x30
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CHEN
+ Channel enable
+ 0
+ 1
+
+
+ FTFIE
+ Full Transfer Finish interrupt
+ enable
+ 1
+ 1
+
+
+ HTFIE
+ Half Transfer Finish interrupt
+ enable
+ 2
+ 1
+
+
+ ERRIE
+ Error interrupt
+ enable
+ 3
+ 1
+
+
+ DIR
+ Transfer direction
+ 4
+ 1
+
+
+ CMEN
+ Circular mode enable
+ 5
+ 1
+
+
+ PNAGA
+ Next address generation algorithm of peripheral
+ 6
+ 1
+
+
+ MNAGA
+ Next address generation algorithm of memory
+ 7
+ 1
+
+
+ PWIDTH
+ Transfer data size of peripheral
+ 8
+ 2
+
+
+ MWIDTH
+ Transfer data size of memory
+ 10
+ 2
+
+
+ PRIO
+ Priority Level of this channel
+ 12
+ 2
+
+
+ M2M
+ Memory to memory mode
+ 14
+ 1
+
+
+
+
+ CH2CNT
+ CH2CNT
+ DMA channel 2 counter
+ register
+ 0x34
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CNT
+ Transfer counter
+ 0
+ 16
+
+
+
+
+
+ CH2PADDR
+ CH2PADDR
+ DMA channel 2 peripheral base address
+ register
+ 0x38
+ 0x20
+ read-write
+ 0x00000000
+
+
+ PADDR
+ Peripheral base address
+ 0
+ 32
+
+
+
+
+ CH2MADDR
+ CH2MADDR
+ DMA channel 2 memory base address
+ register
+ 0x3C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ MADDR
+ Memory address
+ 0
+ 32
+
+
+
+
+ CH3CTL
+ CH3CTL
+ DMA channel configuration register
+ (DMA_CH3CTL)
+ 0x44
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CHEN
+ Channel enable
+ 0
+ 1
+
+
+ FTFIE
+ Full Transfer Finish interrupt
+ enable
+ 1
+ 1
+
+
+ HTFIE
+ Half Transfer Finish interrupt
+ enable
+ 2
+ 1
+
+
+ ERRIE
+ Error interrupt
+ enable
+ 3
+ 1
+
+
+ DIR
+ Transfer direction
+ 4
+ 1
+
+
+ CMEN
+ Circular mode enable
+ 5
+ 1
+
+
+ PNAGA
+ Next address generation algorithm of peripheral
+ 6
+ 1
+
+
+ MNAGA
+ Next address generation algorithm of memory
+ 7
+ 1
+
+
+ PWIDTH
+ Transfer data size of peripheral
+ 8
+ 2
+
+
+ MWIDTH
+ Transfer data size of memory
+ 10
+ 2
+
+
+ PRIO
+ Priority Level of this channel
+ 12
+ 2
+
+
+ M2M
+ Memory to memory mode
+ 14
+ 1
+
+
+
+
+ CH3CNT
+ CH3CNT
+ DMA channel 3 counter
+ register
+ 0x48
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CNT
+ Transfer counter
+ 0
+ 16
+
+
+
+
+ CH3PADDR
+ CH3PADDR
+ DMA channel 3 peripheral base address
+ register
+ 0x4C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ PADDR
+ Peripheral base address
+ 0
+ 32
+
+
+
+
+ CH3MADDR
+ CH3MADDR
+ DMA channel 3 memory base address
+ register
+ 0x50
+ 0x20
+ read-write
+ 0x00000000
+
+
+ MADDR
+ Memory address
+ 0
+ 32
+
+
+
+
+ CH4CTL
+ CH4CTL
+ DMA channel configuration register
+ (DMA_CH4CTL)
+ 0x58
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CHEN
+ Channel enable
+ 0
+ 1
+
+
+ FTFIE
+ Full Transfer Finish interrupt
+ enable
+ 1
+ 1
+
+
+ HTFIE
+ Half Transfer Finish interrupt
+ enable
+ 2
+ 1
+
+
+ ERRIE
+ Error interrupt
+ enable
+ 3
+ 1
+
+
+ DIR
+ Transfer direction
+ 4
+ 1
+
+
+ CMEN
+ Circular mode enable
+ 5
+ 1
+
+
+ PNAGA
+ Next address generation algorithm of peripheral
+ 6
+ 1
+
+
+ MNAGA
+ Next address generation algorithm of memory
+ 7
+ 1
+
+
+ PWIDTH
+ Transfer data size of peripheral
+ 8
+ 2
+
+
+ MWIDTH
+ Transfer data size of memory
+ 10
+ 2
+
+
+ PRIO
+ Priority Level of this channel
+ 12
+ 2
+
+
+ M2M
+ Memory to memory mode
+ 14
+ 1
+
+
+
+
+ CH4CNT
+ CH4CNT
+ DMA channel 4 counter
+ register
+ 0x5C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CNT
+ Transfer counter
+ 0
+ 16
+
+
+
+
+ CH4PADDR
+ CH4PADDR
+ DMA channel 4 peripheral base address
+ register
+ 0x60
+ 0x20
+ read-write
+ 0x00000000
+
+
+ PADDR
+ Peripheral base address
+ 0
+ 32
+
+
+
+
+ CH4MADDR
+ CH4MADDR
+ DMA channel 4 memory base address
+ register
+ 0x64
+ 0x20
+ read-write
+ 0x00000000
+
+
+ MADDR
+ Memory address
+ 0
+ 32
+
+
+
+
+
+
+ EXTI
+ External interrupt/event
+ controller
+ EXTI
+ 0x40010400
+
+ 0x0
+ 0x400
+ registers
+
+
+ LVD
+ 1
+
+
+ EXTI0_1
+ 5
+
+
+ EXTI2_3
+ 6
+
+
+ EXTI4_15
+ 7
+
+
+
+ INTEN
+ INTEN
+ Interrupt enable register
+ (EXTI_INTEN)
+ 0x0
+ 0x20
+ read-write
+ 0x0F940000
+
+
+ INTEN0
+ Enable Interrupt on line 0
+ 0
+ 1
+
+
+ INTEN1
+ Enable Interrupt on line 1
+ 1
+ 1
+
+
+ INTEN2
+ Enable Interrupt on line 2
+ 2
+ 1
+
+
+ INTEN3
+ Enable Interrupt on line 3
+ 3
+ 1
+
+
+ INTEN4
+ Enable Interrupt on line 4
+ 4
+ 1
+
+
+ INTEN5
+ Enable Interrupt on line 5
+ 5
+ 1
+
+
+ INTEN6
+ Enable Interrupt on line 6
+ 6
+ 1
+
+
+ INTEN7
+ Enable Interrupt on line 7
+ 7
+ 1
+
+
+ INTEN8
+ Enable Interrupt on line 8
+ 8
+ 1
+
+
+ INTEN9
+ Enable Interrupt on line 9
+ 9
+ 1
+
+
+ INTEN10
+ Enable Interrupt on line 10
+ 10
+ 1
+
+
+ INTEN11
+ Enable Interrupt on line 11
+ 11
+ 1
+
+
+ INTEN12
+ Enable Interrupt on line 12
+ 12
+ 1
+
+
+ INTEN13
+ Enable Interrupt on line 13
+ 13
+ 1
+
+
+ INTEN14
+ Enable Interrupt on line 14
+ 14
+ 1
+
+
+ INTEN15
+ Enable Interrupt on line 15
+ 15
+ 1
+
+
+ INTEN16
+ Enable Interrupt on line 16
+ 16
+ 1
+
+
+ INTEN17
+ Enable Interrupt on line 17
+ 17
+ 1
+
+
+ INTEN18
+ Enable Interrupt on line 18
+ 18
+ 1
+
+
+ INTEN19
+ Enable Interrupt on line 19
+ 19
+ 1
+
+
+ INTEN20
+ Enable Interrupt on line 20
+ 20
+ 1
+
+
+ INTEN21
+ Enable Interrupt on line 21
+ 21
+ 1
+
+
+ INTEN22
+ Enable Interrupt on line 22
+ 22
+ 1
+
+
+ INTEN23
+ Enable Interrupt on line 23
+ 23
+ 1
+
+
+ INTEN24
+ Enable Interrupt on line 24
+ 24
+ 1
+
+
+ INTEN25
+ Enable Interrupt on line 25
+ 25
+ 1
+
+
+ INTEN26
+ Enable Interrupt on line 26
+ 26
+ 1
+
+
+ INTEN27
+ Enable Interrupt on line 27
+ 27
+ 1
+
+
+
+
+ EVEN
+ EVEN
+ Event enable register (EXTI_EVEN)
+ 0x04
+ 0x20
+ read-write
+ 0x00000000
+
+
+ EVEN0
+ Enable Event on line 0
+ 0
+ 1
+
+
+ EVEN1
+ Enable Event on line 1
+ 1
+ 1
+
+
+ EVEN2
+ Enable Event on line 2
+ 2
+ 1
+
+
+ EVEN3
+ Enable Event on line 3
+ 3
+ 1
+
+
+ EVEN4
+ Enable Event on line 4
+ 4
+ 1
+
+
+ EVEN5
+ Enable Event on line 5
+ 5
+ 1
+
+
+ EVEN6
+ Enable Event on line 6
+ 6
+ 1
+
+
+ EVEN7
+ Enable Event on line 7
+ 7
+ 1
+
+
+ EVEN8
+ Enable Event on line 8
+ 8
+ 1
+
+
+ EVEN9
+ Enable Event on line 9
+ 9
+ 1
+
+
+ EVEN10
+ Enable Event on line 10
+ 10
+ 1
+
+
+ EVEN11
+ Enable Event on line 11
+ 11
+ 1
+
+
+ EVEN12
+ Enable Event on line 12
+ 12
+ 1
+
+
+ EVEN13
+ Enable Event on line 13
+ 13
+ 1
+
+
+ EVEN14
+ Enable Event on line 14
+ 14
+ 1
+
+
+ EVEN15
+ Enable Event on line 15
+ 15
+ 1
+
+
+ EVEN16
+ Enable Event on line 16
+ 16
+ 1
+
+
+ EVEN17
+ Enable Event on line 17
+ 17
+ 1
+
+
+ EVEN18
+ Enable Event on line 18
+ 18
+ 1
+
+
+ EVEN19
+ Enable Event on line 19
+ 19
+ 1
+
+
+ EVEN20
+ Enable Event on line 20
+ 20
+ 1
+
+
+ EVEN21
+ Enable Event on line 21
+ 21
+ 1
+
+
+ EVEN22
+ Enable Event on line 22
+ 22
+ 1
+
+
+ EVEN23
+ Enable Event on line 23
+ 23
+ 1
+
+
+ EVEN24
+ Enable Event on line 24
+ 24
+ 1
+
+
+ EVEN25
+ Enable Event on line 25
+ 25
+ 1
+
+
+ EVEN26
+ Enable Event on line 26
+ 26
+ 1
+
+
+ EVEN27
+ Enable Event on line 27
+ 27
+ 1
+
+
+
+
+ RTEN
+ RTEN
+ Rising Edge Trigger Enable register
+ (EXTI_RTEN)
+ 0x08
+ 0x20
+ read-write
+ 0x00000000
+
+
+ RTEN0
+ Rising trigger event configuration of
+ line 0
+ 0
+ 1
+
+
+ RTEN1
+ Rising trigger event configuration of
+ line 1
+ 1
+ 1
+
+
+ RTEN2
+ Rising trigger event configuration of
+ line 2
+ 2
+ 1
+
+
+ RTEN3
+ Rising trigger event configuration of
+ line 3
+ 3
+ 1
+
+
+ RTEN4
+ Rising trigger event configuration of
+ line 4
+ 4
+ 1
+
+
+ RTEN5
+ Rising trigger event configuration of
+ line 5
+ 5
+ 1
+
+
+ RTEN6
+ Rising trigger event configuration of
+ line 6
+ 6
+ 1
+
+
+ RTEN7
+ Rising trigger event configuration of
+ line 7
+ 7
+ 1
+
+
+ RTEN8
+ Rising trigger event configuration of
+ line 8
+ 8
+ 1
+
+
+ RTEN9
+ Rising trigger event configuration of
+ line 9
+ 9
+ 1
+
+
+ RTEN10
+ Rising trigger event configuration of
+ line 10
+ 10
+ 1
+
+
+ RTEN11
+ Rising trigger event configuration of
+ line 11
+ 11
+ 1
+
+
+ RTEN12
+ Rising trigger event configuration of
+ line 12
+ 12
+ 1
+
+
+ RTEN13
+ Rising trigger event configuration of
+ line 13
+ 13
+ 1
+
+
+ RTEN14
+ Rising trigger event configuration of
+ line 14
+ 14
+ 1
+
+
+ RTEN15
+ Rising trigger event configuration of
+ line 15
+ 15
+ 1
+
+
+ RTEN16
+ Rising trigger event configuration of
+ line 16
+ 16
+ 1
+
+
+ RTEN17
+ Rising trigger event configuration of
+ line 17
+ 17
+ 1
+
+
+ RTEN19
+ Rising trigger event configuration of
+ line 19
+ 19
+ 1
+
+
+ RTEN21
+ Rising trigger event configuration of
+ line 21
+ 21
+ 1
+
+
+
+
+ FTEN
+ FTEN
+ Falling Egde Trigger Enable register
+ (EXTI_FTEN)
+ 0x0C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ FTEN0
+ Falling trigger event configuration of
+ line 0
+ 0
+ 1
+
+
+ FTEN1
+ Falling trigger event configuration of
+ line 1
+ 1
+ 1
+
+
+ FTEN2
+ Falling trigger event configuration of
+ line 2
+ 2
+ 1
+
+
+ FTEN3
+ Falling trigger event configuration of
+ line 3
+ 3
+ 1
+
+
+ FTEN4
+ Falling trigger event configuration of
+ line 4
+ 4
+ 1
+
+
+ FTEN5
+ Falling trigger event configuration of
+ line 5
+ 5
+ 1
+
+
+ FTEN6
+ Falling trigger event configuration of
+ line 6
+ 6
+ 1
+
+
+ FTEN7
+ Falling trigger event configuration of
+ line 7
+ 7
+ 1
+
+
+ FTEN8
+ Falling trigger event configuration of
+ line 8
+ 8
+ 1
+
+
+ FTEN9
+ Falling trigger event configuration of
+ line 9
+ 9
+ 1
+
+
+ FTEN10
+ Falling trigger event configuration of
+ line 10
+ 10
+ 1
+
+
+ FTEN11
+ Falling trigger event configuration of
+ line 11
+ 11
+ 1
+
+
+ FTEN12
+ Falling trigger event configuration of
+ line 12
+ 12
+ 1
+
+
+ FTEN13
+ Falling trigger event configuration of
+ line 13
+ 13
+ 1
+
+
+ FTEN14
+ Falling trigger event configuration of
+ line 14
+ 14
+ 1
+
+
+ FTEN15
+ Falling trigger event configuration of
+ line 15
+ 15
+ 1
+
+
+ FTEN16
+ Falling trigger event configuration of
+ line 16
+ 16
+ 1
+
+
+ FTEN17
+ Falling trigger event configuration of
+ line 17
+ 17
+ 1
+
+
+ FTEN19
+ Falling trigger event configuration of
+ line 19
+ 19
+ 1
+
+
+ FTEN21
+ Falling trigger event configuration of
+ line 21
+ 21
+ 1
+
+
+
+
+ SWIEV
+ SWIEV
+ Software interrupt event register
+ (EXTI_SWIEV)
+ 0x10
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SWIEV0
+ Software Interrupt on line
+ 0
+ 0
+ 1
+
+
+ SWIEV1
+ Software Interrupt on line
+ 1
+ 1
+ 1
+
+
+ SWIEV2
+ Software Interrupt on line
+ 2
+ 2
+ 1
+
+
+ SWIEV3
+ Software Interrupt on line
+ 3
+ 3
+ 1
+
+
+ SWIEV4
+ Software Interrupt on line
+ 4
+ 4
+ 1
+
+
+ SWIEV5
+ Software Interrupt on line
+ 5
+ 5
+ 1
+
+
+ SWIEV6
+ Software Interrupt on line
+ 6
+ 6
+ 1
+
+
+ SWIEV7
+ Software Interrupt on line
+ 7
+ 7
+ 1
+
+
+ SWIEV8
+ Software Interrupt on line
+ 8
+ 8
+ 1
+
+
+ SWIEV9
+ Software Interrupt on line
+ 9
+ 9
+ 1
+
+
+ SWIEV10
+ Software Interrupt on line
+ 10
+ 10
+ 1
+
+
+ SWIEV11
+ Software Interrupt on line
+ 11
+ 11
+ 1
+
+
+ SWIEV12
+ Software Interrupt on line
+ 12
+ 12
+ 1
+
+
+ SWIEV13
+ Software Interrupt on line
+ 13
+ 13
+ 1
+
+
+ SWIEV14
+ Software Interrupt on line
+ 14
+ 14
+ 1
+
+
+ SWIEV15
+ Software Interrupt on line
+ 15
+ 15
+ 1
+
+
+ SWIEV16
+ Software Interrupt on line
+ 16
+ 16
+ 1
+
+
+ SWIEV17
+ Software Interrupt on line
+ 17
+ 17
+ 1
+
+
+ SWIEV19
+ Software Interrupt on line
+ 19
+ 19
+ 1
+
+
+ SWIEV21
+ Software Interrupt on line
+ 21
+ 21
+ 1
+
+
+
+
+ PD
+ PD
+ Pending register (EXTI_PD)
+ 0x14
+ 0x20
+ read-write
+ 0x00000000
+
+
+ PD0
+ Pending bit 0
+ 0
+ 1
+
+
+ PD1
+ Pending bit 1
+ 1
+ 1
+
+
+ PD2
+ Pending bit 2
+ 2
+ 1
+
+
+ PD3
+ Pending bit 3
+ 3
+ 1
+
+
+ PD4
+ Pending bit 4
+ 4
+ 1
+
+
+ PD5
+ Pending bit 5
+ 5
+ 1
+
+
+ PD6
+ Pending bit 6
+ 6
+ 1
+
+
+ PD7
+ Pending bit 7
+ 7
+ 1
+
+
+ PD8
+ Pending bit 8
+ 8
+ 1
+
+
+ PD9
+ Pending bit 9
+ 9
+ 1
+
+
+ PD10
+ Pending bit 10
+ 10
+ 1
+
+
+ PD11
+ Pending bit 11
+ 11
+ 1
+
+
+ PD12
+ Pending bit 12
+ 12
+ 1
+
+
+ PD13
+ Pending bit 13
+ 13
+ 1
+
+
+ PD14
+ Pending bit 14
+ 14
+ 1
+
+
+ PD15
+ Pending bit 15
+ 15
+ 1
+
+
+ PD16
+ Pending bit 16
+ 16
+ 1
+
+
+ PD17
+ Pending bit 17
+ 17
+ 1
+
+
+ PD19
+ Pending bit 19
+ 19
+ 1
+
+
+ PD21
+ Pending bit 21
+ 21
+ 1
+
+
+
+
+
+
+ FMC
+ FMC
+ FMC
+ 0x40022000
+
+ 0x0
+ 0x400
+ registers
+
+
+ FMC
+ 3
+
+
+
+ WS
+ WS
+ wait state register
+ 0x0
+ 0x20
+ read-write
+ 0x00000000
+
+
+ WSCNT
+ wait state counter register
+ 0
+ 3
+
+
+ PFEN
+ Pre-fetch enable
+ 4
+ 1
+
+
+ PGW
+ Program width to flash memory
+ 15
+ 1
+
+
+
+
+ KEY
+ KEY
+ Unlock key register
+ 0x04
+ 0x20
+ write-only
+ 0x00000000
+
+
+ KEY
+ FMC_CTL unlock register
+ 0
+ 32
+
+
+
+
+ OBKEY
+ OBKEY
+ Option byte unlock key register
+ 0x08
+ 0x20
+ write-only
+ 0x00000000
+
+
+ OBKEY
+ FMC_ CTL option bytes operation unlock register
+ 0
+ 32
+
+
+
+
+ STAT
+ STAT
+ Status register
+ 0x0C
+ 0x20
+ 0x00000000
+
+
+ ENDF
+ End of operation flag bit
+ 5
+ 1
+ read-write
+
+
+ WPERR
+ Erase/Program protection error flag bit
+ 4
+ 1
+ read-write
+
+
+ PGAERR
+ Program alignment error flag bit
+ 3
+ 1
+ read-write
+
+
+ PGERR
+ Program error flag bit
+ 2
+ 1
+ read-write
+
+
+ BUSY
+ The flash is busy bit
+ 0
+ 1
+ read-only
+
+
+
+
+ CTL
+ CTL
+ Control register
+ 0x10
+ 0x20
+ read-write
+ 0x00000080
+
+
+ OBRLD
+ Option byte reload bit
+ 13
+ 1
+
+
+ ENDIE
+ End of operation interrupt enable bit
+ 12
+ 1
+
+
+ ERRIE
+ Error interrupt enable bit
+ 10
+ 1
+
+
+ OBWEN
+ Option byte erase/program enable bit
+ 9
+ 1
+
+
+ LK
+ FMC_CTL lock bit
+ 7
+ 1
+
+
+ START
+ Send erase command to FMC bit
+ 6
+ 1
+
+
+ OBER
+ Option bytes erase command bit
+ 5
+ 1
+
+
+ OBPG
+ Option bytes program command bit
+ 4
+ 1
+
+
+ MER
+ Main flash mass erase for bank0 command bit
+ 2
+ 1
+
+
+ PER
+ Main flash page erase for bank0 command bit
+ 1
+ 1
+
+
+ PG
+ Main flash program for bank0 command bit
+ 0
+ 1
+
+
+
+
+ ADDR
+ ADDR
+ Address register
+ 0x14
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ADDR
+ Flash erase/program command address bits
+ 0
+ 32
+
+
+
+
+ OBSTAT
+ OBSTAT
+ Option byte control register
+ 0x1C
+ 0x20
+ read-only
+ 0x00000000
+
+
+ OBERR
+ Option bytes read error bit
+ 0
+ 1
+
+
+ PLEVEL
+ Option bytes security protection level
+ 1
+ 2
+
+
+ USER
+ Store USER of option bytes block after system reset
+ 8
+ 8
+
+
+ DATA
+ Store DATA[15:0] of option bytes block after system reset
+ 16
+ 16
+
+
+
+
+ WP
+ WP
+ Erase/Program Protection register
+ 0x20
+ 0x20
+ read-only
+ 0x00000000
+
+
+ WP
+ Store WP[15:0] of option bytes block after system reset
+ 0
+ 16
+
+
+
+
+ PID
+ PID
+ Product ID register
+ 0x100
+ 0x20
+ read-only
+ 0x00000000
+
+
+ PID
+ Product reserved ID code register
+ 0
+ 32
+
+
+
+
+
+
+ FWDGT
+ free watchdog timer
+ FWDGT
+ 0x40003000
+
+ 0x0
+ 0x400
+ registers
+
+
+
+ CTL
+ CTL
+ Control register
+ 0x00
+ 0x20
+ write-only
+ 0x00000000
+
+
+ CMD
+ Key value
+ 0
+ 16
+
+
+
+
+ PSC
+ PSC
+ Prescaler register
+ 0x04
+ 0x20
+ read-write
+ 0x00000000
+
+
+ PSC
+ Prescaler divider
+ 0
+ 3
+
+
+
+
+ RLD
+ RLD
+ Reload register
+ 0x08
+ 0x20
+ read-write
+ 0x00000FFF
+
+
+ RLD
+ Watchdog counter reload
+ value
+ 0
+ 12
+
+
+
+
+ STAT
+ STAT
+ Status register
+ 0x0C
+ 0x20
+ read-only
+ 0x00000000
+
+
+ PUD
+ Watchdog prescaler value
+ update
+ 0
+ 1
+
+
+ RUD
+ Watchdog counter reload value
+ update
+ 1
+ 1
+
+
+ WUD
+ Watchdog counter window value
+ update
+ 2
+ 1
+
+
+
+
+ WND
+ WND
+ Window register
+ 0x10
+ 0x20
+ read-write
+ 0x00000FFF
+
+
+ WND
+ Watchdog counter window
+ value
+ 0
+ 12
+
+
+
+
+
+
+ GPIOA
+ General-purpose I/Os
+ GPIO
+ 0x48000000
+
+ 0x0
+ 0x400
+ registers
+
+
+
+ CTL
+ CTL
+ GPIO port control register
+ 0x0
+ 0x20
+ read-write
+ 0x28000000
+
+
+ CTL15
+ Port x configuration bits (y =
+ 0..15)
+ 30
+ 2
+
+
+ CTL14
+ Port x configuration bits (y =
+ 0..15)
+ 28
+ 2
+
+
+ CTL13
+ Port x configuration bits (y =
+ 0..15)
+ 26
+ 2
+
+
+ CTL12
+ Port x configuration bits (y =
+ 0..15)
+ 24
+ 2
+
+
+ CTL11
+ Port x configuration bits (y =
+ 0..15)
+ 22
+ 2
+
+
+ CTL10
+ Port x configuration bits (y =
+ 0..15)
+ 20
+ 2
+
+
+ CTL9
+ Port x configuration bits (y =
+ 0..15)
+ 18
+ 2
+
+
+ CTL8
+ Port x configuration bits (y =
+ 0..15)
+ 16
+ 2
+
+
+ CTL7
+ Port x configuration bits (y =
+ 0..15)
+ 14
+ 2
+
+
+ CTL6
+ Port x configuration bits (y =
+ 0..15)
+ 12
+ 2
+
+
+ CTL5
+ Port x configuration bits (y =
+ 0..15)
+ 10
+ 2
+
+
+ CTL4
+ Port x configuration bits (y =
+ 0..15)
+ 8
+ 2
+
+
+ CTL3
+ Port x configuration bits (y =
+ 0..15)
+ 6
+ 2
+
+
+ CTL2
+ Port x configuration bits (y =
+ 0..15)
+ 4
+ 2
+
+
+ CTL1
+ Port x configuration bits (y =
+ 0..15)
+ 2
+ 2
+
+
+ CTL0
+ Port x configuration bits (y =
+ 0..15)
+ 0
+ 2
+
+
+
+
+ OMODE
+ OMODE
+ GPIO port output type register
+ 0x04
+ 0x20
+ read-write
+ 0x00000000
+
+
+ OM15
+ Port x configuration bit
+ 15
+ 15
+ 1
+
+
+ OM14
+ Port x configuration bit
+ 14
+ 14
+ 1
+
+
+ OM13
+ Port x configuration bit
+ 13
+ 13
+ 1
+
+
+ OM12
+ Port x configuration bit
+ 12
+ 12
+ 1
+
+
+ OM11
+ Port x configuration bit
+ 11
+ 11
+ 1
+
+
+ OM10
+ Port x configuration bit
+ 10
+ 10
+ 1
+
+
+ OM9
+ Port x configuration bit 9
+ 9
+ 1
+
+
+ OM8
+ Port x configuration bit 8
+ 8
+ 1
+
+
+ OM7
+ Port x configuration bit 7
+ 7
+ 1
+
+
+ OM6
+ Port x configuration bit 6
+ 6
+ 1
+
+
+ OM5
+ Port x configuration bit 5
+ 5
+ 1
+
+
+ OM4
+ Port x configuration bit 4
+ 4
+ 1
+
+
+ OM3
+ Port x configuration bit 3
+ 3
+ 1
+
+
+ OM2
+ Port x configuration bit 2
+ 2
+ 1
+
+
+ OM1
+ Port x configuration bit 1
+ 1
+ 1
+
+
+ OM0
+ Port x configuration bit 0
+ 0
+ 1
+
+
+
+
+ OSPD
+ OSPD
+ GPIO port output speed
+ register
+ 0x08
+ 0x20
+ read-write
+ 0x0C000000
+
+
+ OSPD15
+ Port x configuration bits (y =
+ 0..15)
+ 30
+ 2
+
+
+ OSPD14
+ Port x configuration bits (y =
+ 0..15)
+ 28
+ 2
+
+
+ OSPD13
+ Port x configuration bits (y =
+ 0..15)
+ 26
+ 2
+
+
+ OSPD12
+ Port x configuration bits (y =
+ 0..15)
+ 24
+ 2
+
+
+ OSPD11
+ Port x configuration bits (y =
+ 0..15)
+ 22
+ 2
+
+
+ OSPD10
+ Port x configuration bits (y =
+ 0..15)
+ 20
+ 2
+
+
+ OSPD9
+ Port x configuration bits (y =
+ 0..15)
+ 18
+ 2
+
+
+ OSPD8
+ Port x configuration bits (y =
+ 0..15)
+ 16
+ 2
+
+
+ OSPD7
+ Port x configuration bits (y =
+ 0..15)
+ 14
+ 2
+
+
+ OSPD6
+ Port x configuration bits (y =
+ 0..15)
+ 12
+ 2
+
+
+ OSPD5
+ Port x configuration bits (y =
+ 0..15)
+ 10
+ 2
+
+
+ OSPD4
+ Port x configuration bits (y =
+ 0..15)
+ 8
+ 2
+
+
+ OSPD3
+ Port x configuration bits (y =
+ 0..15)
+ 6
+ 2
+
+
+ OSPD2
+ Port x configuration bits (y =
+ 0..15)
+ 4
+ 2
+
+
+ OSPD1
+ Port x configuration bits (y =
+ 0..15)
+ 2
+ 2
+
+
+ OSPD0
+ Port x configuration bits (y =
+ 0..15)
+ 0
+ 2
+
+
+
+
+ PUD
+ PUD
+ GPIO port pull-up/pull-down
+ register
+ 0x0C
+ 0x20
+ read-write
+ 0x24000000
+
+
+ PUD15
+ Port x configuration bits (y =
+ 0..15)
+ 30
+ 2
+
+
+ PUD14
+ Port x configuration bits (y =
+ 0..15)
+ 28
+ 2
+
+
+ PUD13
+ Port x configuration bits (y =
+ 0..15)
+ 26
+ 2
+
+
+ PUD12
+ Port x configuration bits (y =
+ 0..15)
+ 24
+ 2
+
+
+ PUD11
+ Port x configuration bits (y =
+ 0..15)
+ 22
+ 2
+
+
+ PUD10
+ Port x configuration bits (y =
+ 0..15)
+ 20
+ 2
+
+
+ PUD9
+ Port x configuration bits (y =
+ 0..15)
+ 18
+ 2
+
+
+ PUD8
+ Port x configuration bits (y =
+ 0..15)
+ 16
+ 2
+
+
+ PUD7
+ Port x configuration bits (y =
+ 0..15)
+ 14
+ 2
+
+
+ PUD6
+ Port x configuration bits (y =
+ 0..15)
+ 12
+ 2
+
+
+ PUD5
+ Port x configuration bits (y =
+ 0..15)
+ 10
+ 2
+
+
+ PUD4
+ Port x configuration bits (y =
+ 0..15)
+ 8
+ 2
+
+
+ PUD3
+ Port x configuration bits (y =
+ 0..15)
+ 6
+ 2
+
+
+ PUD2
+ Port x configuration bits (y =
+ 0..15)
+ 4
+ 2
+
+
+ PUD1
+ Port x configuration bits (y =
+ 0..15)
+ 2
+ 2
+
+
+ PUD0
+ Port x configuration bits (y =
+ 0..15)
+ 0
+ 2
+
+
+
+
+ ISTAT
+ ISTAT
+ GPIO port input data register
+ 0x10
+ 0x20
+ read-only
+ 0x00000000
+
+
+ ISTAT15
+ Port input data (y =
+ 0..15)
+ 15
+ 1
+
+
+ ISTAT14
+ Port input data (y =
+ 0..15)
+ 14
+ 1
+
+
+ ISTAT13
+ Port input data (y =
+ 0..15)
+ 13
+ 1
+
+
+ ISTAT12
+ Port input data (y =
+ 0..15)
+ 12
+ 1
+
+
+ ISTAT11
+ Port input data (y =
+ 0..15)
+ 11
+ 1
+
+
+ ISTAT10
+ Port input data (y =
+ 0..15)
+ 10
+ 1
+
+
+ ISTAT9
+ Port input data (y =
+ 0..15)
+ 9
+ 1
+
+
+ ISTAT8
+ Port input data (y =
+ 0..15)
+ 8
+ 1
+
+
+ ISTAT7
+ Port input data (y =
+ 0..15)
+ 7
+ 1
+
+
+ ISTAT6
+ Port input data (y =
+ 0..15)
+ 6
+ 1
+
+
+ ISTAT5
+ Port input data (y =
+ 0..15)
+ 5
+ 1
+
+
+ ISTAT4
+ Port input data (y =
+ 0..15)
+ 4
+ 1
+
+
+ ISTAT3
+ Port input data (y =
+ 0..15)
+ 3
+ 1
+
+
+ ISTAT2
+ Port input data (y =
+ 0..15)
+ 2
+ 1
+
+
+ ISTAT1
+ Port input data (y =
+ 0..15)
+ 1
+ 1
+
+
+ ISTAT0
+ Port input data (y =
+ 0..15)
+ 0
+ 1
+
+
+
+
+ OCTL
+ OCTL
+ GPIO port output data register
+ 0x14
+ 0x20
+ read-write
+ 0x00000000
+
+
+ OCTL15
+ Port output data (y =
+ 0..15)
+ 15
+ 1
+
+
+ OCTL14
+ Port output data (y =
+ 0..15)
+ 14
+ 1
+
+
+ OCTL13
+ Port output data (y =
+ 0..15)
+ 13
+ 1
+
+
+ OCTL12
+ Port output data (y =
+ 0..15)
+ 12
+ 1
+
+
+ OCTL11
+ Port output data (y =
+ 0..15)
+ 11
+ 1
+
+
+ OCTL10
+ Port output data (y =
+ 0..15)
+ 10
+ 1
+
+
+ OCTL9
+ Port output data (y =
+ 0..15)
+ 9
+ 1
+
+
+ OCTL8
+ Port output data (y =
+ 0..15)
+ 8
+ 1
+
+
+ OCTL7
+ Port output data (y =
+ 0..15)
+ 7
+ 1
+
+
+ OCTL6
+ Port output data (y =
+ 0..15)
+ 6
+ 1
+
+
+ OCTL5
+ Port output data (y =
+ 0..15)
+ 5
+ 1
+
+
+ OCTL4
+ Port output data (y =
+ 0..15)
+ 4
+ 1
+
+
+ OCTL3
+ Port output data (y =
+ 0..15)
+ 3
+ 1
+
+
+ OCTL2
+ Port output data (y =
+ 0..15)
+ 2
+ 1
+
+
+ OCTL1
+ Port output data (y =
+ 0..15)
+ 1
+ 1
+
+
+ OCTL0
+ Port output data (y =
+ 0..15)
+ 0
+ 1
+
+
+
+
+ BOP
+ BOP
+ GPIO port bit set/reset
+ register
+ 0x18
+ 0x20
+ write-only
+ 0x00000000
+
+
+ CR15
+ Port x reset bit y (y =
+ 0..15)
+ 31
+ 1
+
+
+ CR14
+ Port x reset bit y (y =
+ 0..15)
+ 30
+ 1
+
+
+ CR13
+ Port x reset bit y (y =
+ 0..15)
+ 29
+ 1
+
+
+ CR12
+ Port x reset bit y (y =
+ 0..15)
+ 28
+ 1
+
+
+ CR11
+ Port x reset bit y (y =
+ 0..15)
+ 27
+ 1
+
+
+ CR10
+ Port x reset bit y (y =
+ 0..15)
+ 26
+ 1
+
+
+ CR9
+ Port x reset bit y (y =
+ 0..15)
+ 25
+ 1
+
+
+ CR8
+ Port x reset bit y (y =
+ 0..15)
+ 24
+ 1
+
+
+ CR7
+ Port x reset bit y (y =
+ 0..15)
+ 23
+ 1
+
+
+ CR6
+ Port x reset bit y (y =
+ 0..15)
+ 22
+ 1
+
+
+ CR5
+ Port x reset bit y (y =
+ 0..15)
+ 21
+ 1
+
+
+ CR4
+ Port x reset bit y (y =
+ 0..15)
+ 20
+ 1
+
+
+ CR3
+ Port x reset bit y (y =
+ 0..15)
+ 19
+ 1
+
+
+ CR2
+ Port x reset bit y (y =
+ 0..15)
+ 18
+ 1
+
+
+ CR1
+ Port x reset bit y (y =
+ 0..15)
+ 17
+ 1
+
+
+ CR0
+ Port x reset bit y (y=
+ 0..15)
+ 16
+ 1
+
+
+ BOP15
+ Port x set bit y (y=
+ 0..15)
+ 15
+ 1
+
+
+ BOP14
+ Port x set bit y (y=
+ 0..15)
+ 14
+ 1
+
+
+ BOP13
+ Port x set bit y (y=
+ 0..15)
+ 13
+ 1
+
+
+ BOP12
+ Port x set bit y (y=
+ 0..15)
+ 12
+ 1
+
+
+ BOP11
+ Port x set bit y (y=
+ 0..15)
+ 11
+ 1
+
+
+ BOP10
+ Port x set bit y (y=
+ 0..15)
+ 10
+ 1
+
+
+ BOP9
+ Port x set bit y (y=
+ 0..15)
+ 9
+ 1
+
+
+ BOP8
+ Port x set bit y (y=
+ 0..15)
+ 8
+ 1
+
+
+ BOP7
+ Port x set bit y (y=
+ 0..15)
+ 7
+ 1
+
+
+ BOP6
+ Port x set bit y (y=
+ 0..15)
+ 6
+ 1
+
+
+ BOP5
+ Port x set bit y (y=
+ 0..15)
+ 5
+ 1
+
+
+ BOP4
+ Port x set bit y (y=
+ 0..15)
+ 4
+ 1
+
+
+ BOP3
+ Port x set bit y (y=
+ 0..15)
+ 3
+ 1
+
+
+ BOP2
+ Port x set bit y (y=
+ 0..15)
+ 2
+ 1
+
+
+ BOP1
+ Port x set bit y (y=
+ 0..15)
+ 1
+ 1
+
+
+ BOP0
+ Port x set bit y (y=
+ 0..15)
+ 0
+ 1
+
+
+
+
+ LOCK
+ LOCK
+ GPIO port configuration lock
+ register
+ 0x1C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ LKK
+ Port x lock bit y
+
+ 16
+ 1
+
+
+ LK15
+ Port x lock bit y (y=
+ 0..15)
+ 15
+ 1
+
+
+ LK14
+ Port x lock bit y (y=
+ 0..15)
+ 14
+ 1
+
+
+ LK13
+ Port x lock bit y (y=
+ 0..15)
+ 13
+ 1
+
+
+ LK12
+ Port x lock bit y (y=
+ 0..15)
+ 12
+ 1
+
+
+ LK11
+ Port x lock bit y (y=
+ 0..15)
+ 11
+ 1
+
+
+ LK10
+ Port x lock bit y (y=
+ 0..15)
+ 10
+ 1
+
+
+ LK9
+ Port x lock bit y (y=
+ 0..15)
+ 9
+ 1
+
+
+ LK8
+ Port x lock bit y (y=
+ 0..15)
+ 8
+ 1
+
+
+ LK7
+ Port x lock bit y (y=
+ 0..15)
+ 7
+ 1
+
+
+ LK6
+ Port x lock bit y (y=
+ 0..15)
+ 6
+ 1
+
+
+ LK5
+ Port x lock bit y (y=
+ 0..15)
+ 5
+ 1
+
+
+ LK4
+ Port x lock bit y (y=
+ 0..15)
+ 4
+ 1
+
+
+ LK3
+ Port x lock bit y (y=
+ 0..15)
+ 3
+ 1
+
+
+ LK2
+ Port x lock bit y (y=
+ 0..15)
+ 2
+ 1
+
+
+ LK1
+ Port x lock bit y (y=
+ 0..15)
+ 1
+ 1
+
+
+ LK0
+ Port x lock bit y (y=
+ 0..15)
+ 0
+ 1
+
+
+
+
+ AFSEL0
+ AFSEL0
+ GPIO alternate function low
+ register
+ 0x20
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SEL7
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 28
+ 4
+
+
+ SEL6
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 24
+ 4
+
+
+ SEL5
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 20
+ 4
+
+
+ SEL4
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 16
+ 4
+
+
+ SEL3
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 12
+ 4
+
+
+ SEL2
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 8
+ 4
+
+
+ SEL1
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 4
+ 4
+
+
+ SEL0
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 0
+ 4
+
+
+
+
+ AFSEL1
+ AFSEL1
+ GPIO alternate function
+ register 1
+ 0x24
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SEL15
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 28
+ 4
+
+
+ SEL14
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 24
+ 4
+
+
+ SEL13
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 20
+ 4
+
+
+ SEL12
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 16
+ 4
+
+
+ SEL11
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 12
+ 4
+
+
+ SEL10
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 8
+ 4
+
+
+ SEL9
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 4
+ 4
+
+
+ SEL8
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 0
+ 4
+
+
+
+
+ BC
+ BC
+ Port bit reset register
+ 0x28
+ 0x20
+ write-only
+ 0x00000000
+
+
+ CR0
+ Port cleat bit
+ 0
+ 1
+
+
+ CR1
+ Port cleat bit
+ 1
+ 1
+
+
+ CR2
+ Port cleat bit
+ 2
+ 1
+
+
+ CR3
+ Port cleat bit
+ 3
+ 1
+
+
+ CR4
+ Port cleat bit
+ 4
+ 1
+
+
+ CR5
+ Port cleat bit
+ 5
+ 1
+
+
+ CR6
+ Port cleat bit
+ 6
+ 1
+
+
+ CR7
+ Port cleat bit
+ 7
+ 1
+
+
+ CR8
+ Port cleat bit
+ 8
+ 1
+
+
+ CR9
+ Port cleat bit
+ 9
+ 1
+
+
+ CR10
+ Port cleat bit
+ 10
+ 1
+
+
+ CR11
+ Port cleat bit
+ 11
+ 1
+
+
+ CR12
+ Port cleat bit
+ 12
+ 1
+
+
+ CR13
+ Port cleat bit
+ 13
+ 1
+
+
+ CR14
+ Port cleat bit
+ 14
+ 1
+
+
+ CR15
+ Port cleat bit
+ 15
+ 1
+
+
+
+
+ TG
+ TG
+ Port bit toggle register
+ 0x2C
+ 0x20
+ write-only
+ 0x00000000
+
+
+ TG0
+ Port toggle bit
+ 0
+ 1
+
+
+ TG1
+ Port toggle bit
+ 1
+ 1
+
+
+ TG2
+ Port toggle bit
+ 2
+ 1
+
+
+ TG3
+ Port toggle bit
+ 3
+ 1
+
+
+ TG4
+ Port toggle bit
+ 4
+ 1
+
+
+ TG5
+ Port toggle bit
+ 5
+ 1
+
+
+ TG6
+ Port toggle bit
+ 6
+ 1
+
+
+ TG7
+ Port toggle bit
+ 7
+ 1
+
+
+ TG8
+ Port toggle bit
+ 8
+ 1
+
+
+ TG9
+ Port toggle bit
+ 9
+ 1
+
+
+ TG10
+ Port toggle bit
+ 10
+ 1
+
+
+ TG11
+ Port toggle bit
+ 11
+ 1
+
+
+ TG12
+ Port toggle bit
+ 12
+ 1
+
+
+ TG13
+ Port toggle bit
+ 13
+ 1
+
+
+ TG14
+ Port toggle bit
+ 14
+ 1
+
+
+ TG15
+ Port toggle bit
+ 15
+ 1
+
+
+
+
+
+
+ GPIOB
+ General-purpose I/Os
+ GPIO
+ 0x48000400
+
+ 0x0
+ 0x400
+ registers
+
+
+
+ CTL
+ CTL
+ GPIO port control register
+ 0x0
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CTL15
+ Port x configuration bits (y =
+ 0..15)
+ 30
+ 2
+
+
+ CTL14
+ Port x configuration bits (y =
+ 0..15)
+ 28
+ 2
+
+
+ CTL13
+ Port x configuration bits (y =
+ 0..15)
+ 26
+ 2
+
+
+ CTL12
+ Port x configuration bits (y =
+ 0..15)
+ 24
+ 2
+
+
+ CTL11
+ Port x configuration bits (y =
+ 0..15)
+ 22
+ 2
+
+
+ CTL10
+ Port x configuration bits (y =
+ 0..15)
+ 20
+ 2
+
+
+ CTL9
+ Port x configuration bits (y =
+ 0..15)
+ 18
+ 2
+
+
+ CTL8
+ Port x configuration bits (y =
+ 0..15)
+ 16
+ 2
+
+
+ CTL7
+ Port x configuration bits (y =
+ 0..15)
+ 14
+ 2
+
+
+ CTL6
+ Port x configuration bits (y =
+ 0..15)
+ 12
+ 2
+
+
+ CTL5
+ Port x configuration bits (y =
+ 0..15)
+ 10
+ 2
+
+
+ CTL4
+ Port x configuration bits (y =
+ 0..15)
+ 8
+ 2
+
+
+ CTL3
+ Port x configuration bits (y =
+ 0..15)
+ 6
+ 2
+
+
+ CTL2
+ Port x configuration bits (y =
+ 0..15)
+ 4
+ 2
+
+
+ CTL1
+ Port x configuration bits (y =
+ 0..15)
+ 2
+ 2
+
+
+ CTL0
+ Port x configuration bits (y =
+ 0..15)
+ 0
+ 2
+
+
+
+
+ OMODE
+ OMODE
+ GPIO port output type register
+ 0x04
+ 0x20
+ read-write
+ 0x00000000
+
+
+ OM15
+ Port x configuration bit
+ 15
+ 15
+ 1
+
+
+ OM14
+ Port x configuration bit
+ 14
+ 14
+ 1
+
+
+ OM13
+ Port x configuration bit
+ 13
+ 13
+ 1
+
+
+ OM12
+ Port x configuration bit
+ 12
+ 12
+ 1
+
+
+ OM11
+ Port x configuration bit
+ 11
+ 11
+ 1
+
+
+ OM10
+ Port x configuration bit
+ 10
+ 10
+ 1
+
+
+ OM9
+ Port x configuration bit 9
+ 9
+ 1
+
+
+ OM8
+ Port x configuration bit 8
+ 8
+ 1
+
+
+ OM7
+ Port x configuration bit 7
+ 7
+ 1
+
+
+ OM6
+ Port x configuration bit 6
+ 6
+ 1
+
+
+ OM5
+ Port x configuration bit 5
+ 5
+ 1
+
+
+ OM4
+ Port x configuration bit 4
+ 4
+ 1
+
+
+ OM3
+ Port x configuration bit 3
+ 3
+ 1
+
+
+ OM2
+ Port x configuration bit 2
+ 2
+ 1
+
+
+ OM1
+ Port x configuration bit 1
+ 1
+ 1
+
+
+ OM0
+ Port x configuration bit 0
+ 0
+ 1
+
+
+
+
+ OSPD
+ OSPD
+ GPIO port output speed
+ register
+ 0x08
+ 0x20
+ read-write
+ 0x00000000
+
+
+ OSPD15
+ Port x configuration bits (y =
+ 0..15)
+ 30
+ 2
+
+
+ OSPD14
+ Port x configuration bits (y =
+ 0..15)
+ 28
+ 2
+
+
+ OSPD13
+ Port x configuration bits (y =
+ 0..15)
+ 26
+ 2
+
+
+ OSPD12
+ Port x configuration bits (y =
+ 0..15)
+ 24
+ 2
+
+
+ OSPD11
+ Port x configuration bits (y =
+ 0..15)
+ 22
+ 2
+
+
+ OSPD10
+ Port x configuration bits (y =
+ 0..15)
+ 20
+ 2
+
+
+ OSPD9
+ Port x configuration bits (y =
+ 0..15)
+ 18
+ 2
+
+
+ OSPD8
+ Port x configuration bits (y =
+ 0..15)
+ 16
+ 2
+
+
+ OSPD7
+ Port x configuration bits (y =
+ 0..15)
+ 14
+ 2
+
+
+ OSPD6
+ Port x configuration bits (y =
+ 0..15)
+ 12
+ 2
+
+
+ OSPD5
+ Port x configuration bits (y =
+ 0..15)
+ 10
+ 2
+
+
+ OSPD4
+ Port x configuration bits (y =
+ 0..15)
+ 8
+ 2
+
+
+ OSPD3
+ Port x configuration bits (y =
+ 0..15)
+ 6
+ 2
+
+
+ OSPD2
+ Port x configuration bits (y =
+ 0..15)
+ 4
+ 2
+
+
+ OSPD1
+ Port x configuration bits (y =
+ 0..15)
+ 2
+ 2
+
+
+ OSPD0
+ Port x configuration bits (y =
+ 0..15)
+ 0
+ 2
+
+
+
+
+ PUD
+ PUD
+ GPIO port pull-up/pull-down
+ register
+ 0x0C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ PUD15
+ Port x configuration bits (y =
+ 0..15)
+ 30
+ 2
+
+
+ PUD14
+ Port x configuration bits (y =
+ 0..15)
+ 28
+ 2
+
+
+ PUD13
+ Port x configuration bits (y =
+ 0..15)
+ 26
+ 2
+
+
+ PUD12
+ Port x configuration bits (y =
+ 0..15)
+ 24
+ 2
+
+
+ PUD11
+ Port x configuration bits (y =
+ 0..15)
+ 22
+ 2
+
+
+ PUD10
+ Port x configuration bits (y =
+ 0..15)
+ 20
+ 2
+
+
+ PUD9
+ Port x configuration bits (y =
+ 0..15)
+ 18
+ 2
+
+
+ PUD8
+ Port x configuration bits (y =
+ 0..15)
+ 16
+ 2
+
+
+ PUD7
+ Port x configuration bits (y =
+ 0..15)
+ 14
+ 2
+
+
+ PUD6
+ Port x configuration bits (y =
+ 0..15)
+ 12
+ 2
+
+
+ PUD5
+ Port x configuration bits (y =
+ 0..15)
+ 10
+ 2
+
+
+ PUD4
+ Port x configuration bits (y =
+ 0..15)
+ 8
+ 2
+
+
+ PUD3
+ Port x configuration bits (y =
+ 0..15)
+ 6
+ 2
+
+
+ PUD2
+ Port x configuration bits (y =
+ 0..15)
+ 4
+ 2
+
+
+ PUD1
+ Port x configuration bits (y =
+ 0..15)
+ 2
+ 2
+
+
+ PUD0
+ Port x configuration bits (y =
+ 0..15)
+ 0
+ 2
+
+
+
+
+ ISTAT
+ ISTAT
+ GPIO port input data register
+ 0x10
+ 0x20
+ read-only
+ 0x00000000
+
+
+ ISTAT15
+ Port input data (y =
+ 0..15)
+ 15
+ 1
+
+
+ ISTAT14
+ Port input data (y =
+ 0..15)
+ 14
+ 1
+
+
+ ISTAT13
+ Port input data (y =
+ 0..15)
+ 13
+ 1
+
+
+ ISTAT12
+ Port input data (y =
+ 0..15)
+ 12
+ 1
+
+
+ ISTAT11
+ Port input data (y =
+ 0..15)
+ 11
+ 1
+
+
+ ISTAT10
+ Port input data (y =
+ 0..15)
+ 10
+ 1
+
+
+ ISTAT9
+ Port input data (y =
+ 0..15)
+ 9
+ 1
+
+
+ ISTAT8
+ Port input data (y =
+ 0..15)
+ 8
+ 1
+
+
+ ISTAT7
+ Port input data (y =
+ 0..15)
+ 7
+ 1
+
+
+ ISTAT6
+ Port input data (y =
+ 0..15)
+ 6
+ 1
+
+
+ ISTAT5
+ Port input data (y =
+ 0..15)
+ 5
+ 1
+
+
+ ISTAT4
+ Port input data (y =
+ 0..15)
+ 4
+ 1
+
+
+ ISTAT3
+ Port input data (y =
+ 0..15)
+ 3
+ 1
+
+
+ ISTAT2
+ Port input data (y =
+ 0..15)
+ 2
+ 1
+
+
+ ISTAT1
+ Port input data (y =
+ 0..15)
+ 1
+ 1
+
+
+ ISTAT0
+ Port input data (y =
+ 0..15)
+ 0
+ 1
+
+
+
+
+ OCTL
+ OCTL
+ GPIO port output data register
+ 0x14
+ 0x20
+ read-write
+ 0x00000000
+
+
+ OCTL15
+ Port output data (y =
+ 0..15)
+ 15
+ 1
+
+
+ OCTL14
+ Port output data (y =
+ 0..15)
+ 14
+ 1
+
+
+ OCTL13
+ Port output data (y =
+ 0..15)
+ 13
+ 1
+
+
+ OCTL12
+ Port output data (y =
+ 0..15)
+ 12
+ 1
+
+
+ OCTL11
+ Port output data (y =
+ 0..15)
+ 11
+ 1
+
+
+ OCTL10
+ Port output data (y =
+ 0..15)
+ 10
+ 1
+
+
+ OCTL9
+ Port output data (y =
+ 0..15)
+ 9
+ 1
+
+
+ OCTL8
+ Port output data (y =
+ 0..15)
+ 8
+ 1
+
+
+ OCTL7
+ Port output data (y =
+ 0..15)
+ 7
+ 1
+
+
+ OCTL6
+ Port output data (y =
+ 0..15)
+ 6
+ 1
+
+
+ OCTL5
+ Port output data (y =
+ 0..15)
+ 5
+ 1
+
+
+ OCTL4
+ Port output data (y =
+ 0..15)
+ 4
+ 1
+
+
+ OCTL3
+ Port output data (y =
+ 0..15)
+ 3
+ 1
+
+
+ OCTL2
+ Port output data (y =
+ 0..15)
+ 2
+ 1
+
+
+ OCTL1
+ Port output data (y =
+ 0..15)
+ 1
+ 1
+
+
+ OCTL0
+ Port output data (y =
+ 0..15)
+ 0
+ 1
+
+
+
+
+ BOP
+ BOP
+ GPIO port bit set/reset
+ register
+ 0x18
+ 0x20
+ write-only
+ 0x00000000
+
+
+ CR15
+ Port x reset bit y (y =
+ 0..15)
+ 31
+ 1
+
+
+ CR14
+ Port x reset bit y (y =
+ 0..15)
+ 30
+ 1
+
+
+ CR13
+ Port x reset bit y (y =
+ 0..15)
+ 29
+ 1
+
+
+ CR12
+ Port x reset bit y (y =
+ 0..15)
+ 28
+ 1
+
+
+ CR11
+ Port x reset bit y (y =
+ 0..15)
+ 27
+ 1
+
+
+ CR10
+ Port x reset bit y (y =
+ 0..15)
+ 26
+ 1
+
+
+ CR9
+ Port x reset bit y (y =
+ 0..15)
+ 25
+ 1
+
+
+ CR8
+ Port x reset bit y (y =
+ 0..15)
+ 24
+ 1
+
+
+ CR7
+ Port x reset bit y (y =
+ 0..15)
+ 23
+ 1
+
+
+ CR6
+ Port x reset bit y (y =
+ 0..15)
+ 22
+ 1
+
+
+ CR5
+ Port x reset bit y (y =
+ 0..15)
+ 21
+ 1
+
+
+ CR4
+ Port x reset bit y (y =
+ 0..15)
+ 20
+ 1
+
+
+ CR3
+ Port x reset bit y (y =
+ 0..15)
+ 19
+ 1
+
+
+ CR2
+ Port x reset bit y (y =
+ 0..15)
+ 18
+ 1
+
+
+ CR1
+ Port x reset bit y (y =
+ 0..15)
+ 17
+ 1
+
+
+ CR0
+ Port x reset bit y (y=
+ 0..15)
+ 16
+ 1
+
+
+ BOP15
+ Port x set bit y (y=
+ 0..15)
+ 15
+ 1
+
+
+ BOP14
+ Port x set bit y (y=
+ 0..15)
+ 14
+ 1
+
+
+ BOP13
+ Port x set bit y (y=
+ 0..15)
+ 13
+ 1
+
+
+ BOP12
+ Port x set bit y (y=
+ 0..15)
+ 12
+ 1
+
+
+ BOP11
+ Port x set bit y (y=
+ 0..15)
+ 11
+ 1
+
+
+ BOP10
+ Port x set bit y (y=
+ 0..15)
+ 10
+ 1
+
+
+ BOP9
+ Port x set bit y (y=
+ 0..15)
+ 9
+ 1
+
+
+ BOP8
+ Port x set bit y (y=
+ 0..15)
+ 8
+ 1
+
+
+ BOP7
+ Port x set bit y (y=
+ 0..15)
+ 7
+ 1
+
+
+ BOP6
+ Port x set bit y (y=
+ 0..15)
+ 6
+ 1
+
+
+ BOP5
+ Port x set bit y (y=
+ 0..15)
+ 5
+ 1
+
+
+ BOP4
+ Port x set bit y (y=
+ 0..15)
+ 4
+ 1
+
+
+ BOP3
+ Port x set bit y (y=
+ 0..15)
+ 3
+ 1
+
+
+ BOP2
+ Port x set bit y (y=
+ 0..15)
+ 2
+ 1
+
+
+ BOP1
+ Port x set bit y (y=
+ 0..15)
+ 1
+ 1
+
+
+ BOP0
+ Port x set bit y (y=
+ 0..15)
+ 0
+ 1
+
+
+
+
+ LOCK
+ LOCK
+ GPIO port configuration lock
+ register
+ 0x1C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ LKK
+ Port x lock bit y
+
+ 16
+ 1
+
+
+ LK15
+ Port x lock bit y (y=
+ 0..15)
+ 15
+ 1
+
+
+ LK14
+ Port x lock bit y (y=
+ 0..15)
+ 14
+ 1
+
+
+ LK13
+ Port x lock bit y (y=
+ 0..15)
+ 13
+ 1
+
+
+ LK12
+ Port x lock bit y (y=
+ 0..15)
+ 12
+ 1
+
+
+ LK11
+ Port x lock bit y (y=
+ 0..15)
+ 11
+ 1
+
+
+ LK10
+ Port x lock bit y (y=
+ 0..15)
+ 10
+ 1
+
+
+ LK9
+ Port x lock bit y (y=
+ 0..15)
+ 9
+ 1
+
+
+ LK8
+ Port x lock bit y (y=
+ 0..15)
+ 8
+ 1
+
+
+ LK7
+ Port x lock bit y (y=
+ 0..15)
+ 7
+ 1
+
+
+ LK6
+ Port x lock bit y (y=
+ 0..15)
+ 6
+ 1
+
+
+ LK5
+ Port x lock bit y (y=
+ 0..15)
+ 5
+ 1
+
+
+ LK4
+ Port x lock bit y (y=
+ 0..15)
+ 4
+ 1
+
+
+ LK3
+ Port x lock bit y (y=
+ 0..15)
+ 3
+ 1
+
+
+ LK2
+ Port x lock bit y (y=
+ 0..15)
+ 2
+ 1
+
+
+ LK1
+ Port x lock bit y (y=
+ 0..15)
+ 1
+ 1
+
+
+ LK0
+ Port x lock bit y (y=
+ 0..15)
+ 0
+ 1
+
+
+
+
+ AFSEL0
+ AFSEL0
+ GPIO alternate function low
+ register
+ 0x20
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SEL7
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 28
+ 4
+
+
+ SEL6
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 24
+ 4
+
+
+ SEL5
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 20
+ 4
+
+
+ SEL4
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 16
+ 4
+
+
+ SEL3
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 12
+ 4
+
+
+ SEL2
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 8
+ 4
+
+
+ SEL1
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 4
+ 4
+
+
+ SEL0
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 0
+ 4
+
+
+
+
+ AFSEL1
+ AFSEL1
+ GPIO alternate function
+ register 1
+ 0x24
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SEL15
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 28
+ 4
+
+
+ SEL14
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 24
+ 4
+
+
+ SEL13
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 20
+ 4
+
+
+ SEL12
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 16
+ 4
+
+
+ SEL11
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 12
+ 4
+
+
+ SEL10
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 8
+ 4
+
+
+ SEL9
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 4
+ 4
+
+
+ SEL8
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 0
+ 4
+
+
+
+
+ BC
+ BC
+ Port bit reset register
+ 0x28
+ 0x20
+ write-only
+ 0x00000000
+
+
+ CR0
+ Port cleat bit
+ 0
+ 1
+
+
+ CR1
+ Port cleat bit
+ 1
+ 1
+
+
+ CR2
+ Port cleat bit
+ 2
+ 1
+
+
+ CR3
+ Port cleat bit
+ 3
+ 1
+
+
+ CR4
+ Port cleat bit
+ 4
+ 1
+
+
+ CR5
+ Port cleat bit
+ 5
+ 1
+
+
+ CR6
+ Port cleat bit
+ 6
+ 1
+
+
+ CR7
+ Port cleat bit
+ 7
+ 1
+
+
+ CR8
+ Port cleat bit
+ 8
+ 1
+
+
+ CR9
+ Port cleat bit
+ 9
+ 1
+
+
+ CR10
+ Port cleat bit
+ 10
+ 1
+
+
+ CR11
+ Port cleat bit
+ 11
+ 1
+
+
+ CR12
+ Port cleat bit
+ 12
+ 1
+
+
+ CR13
+ Port cleat bit
+ 13
+ 1
+
+
+ CR14
+ Port cleat bit
+ 14
+ 1
+
+
+ CR15
+ Port cleat bit
+ 15
+ 1
+
+
+
+
+ TG
+ TG
+ Port bit toggle register
+ 0x2C
+ 0x20
+ write-only
+ 0x00000000
+
+
+ TG0
+ Port toggle bit
+ 0
+ 1
+
+
+ TG1
+ Port toggle bit
+ 1
+ 1
+
+
+ TG2
+ Port toggle bit
+ 2
+ 1
+
+
+ TG3
+ Port toggle bit
+ 3
+ 1
+
+
+ TG4
+ Port toggle bit
+ 4
+ 1
+
+
+ TG5
+ Port toggle bit
+ 5
+ 1
+
+
+ TG6
+ Port toggle bit
+ 6
+ 1
+
+
+ TG7
+ Port toggle bit
+ 7
+ 1
+
+
+ TG8
+ Port toggle bit
+ 8
+ 1
+
+
+ TG9
+ Port toggle bit
+ 9
+ 1
+
+
+ TG10
+ Port toggle bit
+ 10
+ 1
+
+
+ TG11
+ Port toggle bit
+ 11
+ 1
+
+
+ TG12
+ Port toggle bit
+ 12
+ 1
+
+
+ TG13
+ Port toggle bit
+ 13
+ 1
+
+
+ TG14
+ Port toggle bit
+ 14
+ 1
+
+
+ TG15
+ Port toggle bit
+ 15
+ 1
+
+
+
+
+
+
+ GPIOC
+ General-purpose I/Os
+ GPIO
+ 0x48000800
+
+ 0x0
+ 0x400
+ registers
+
+
+
+ CTL
+ CTL
+ GPIO port control register
+ 0x0
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CTL15
+ Port x configuration bits (y =
+ 0..15)
+ 30
+ 2
+
+
+ CTL14
+ Port x configuration bits (y =
+ 0..15)
+ 28
+ 2
+
+
+ CTL13
+ Port x configuration bits (y =
+ 0..15)
+ 26
+ 2
+
+
+ CTL12
+ Port x configuration bits (y =
+ 0..15)
+ 24
+ 2
+
+
+ CTL11
+ Port x configuration bits (y =
+ 0..15)
+ 22
+ 2
+
+
+ CTL10
+ Port x configuration bits (y =
+ 0..15)
+ 20
+ 2
+
+
+ CTL9
+ Port x configuration bits (y =
+ 0..15)
+ 18
+ 2
+
+
+ CTL8
+ Port x configuration bits (y =
+ 0..15)
+ 16
+ 2
+
+
+ CTL7
+ Port x configuration bits (y =
+ 0..15)
+ 14
+ 2
+
+
+ CTL6
+ Port x configuration bits (y =
+ 0..15)
+ 12
+ 2
+
+
+ CTL5
+ Port x configuration bits (y =
+ 0..15)
+ 10
+ 2
+
+
+ CTL4
+ Port x configuration bits (y =
+ 0..15)
+ 8
+ 2
+
+
+ CTL3
+ Port x configuration bits (y =
+ 0..15)
+ 6
+ 2
+
+
+ CTL2
+ Port x configuration bits (y =
+ 0..15)
+ 4
+ 2
+
+
+ CTL1
+ Port x configuration bits (y =
+ 0..15)
+ 2
+ 2
+
+
+ CTL0
+ Port x configuration bits (y =
+ 0..15)
+ 0
+ 2
+
+
+
+
+ OMODE
+ OMODE
+ GPIO port output type register
+ 0x04
+ 0x20
+ read-write
+ 0x00000000
+
+
+ OM15
+ Port x configuration bit
+ 15
+ 15
+ 1
+
+
+ OM14
+ Port x configuration bit
+ 14
+ 14
+ 1
+
+
+ OM13
+ Port x configuration bit
+ 13
+ 13
+ 1
+
+
+ OM12
+ Port x configuration bit
+ 12
+ 12
+ 1
+
+
+ OM11
+ Port x configuration bit
+ 11
+ 11
+ 1
+
+
+ OM10
+ Port x configuration bit
+ 10
+ 10
+ 1
+
+
+ OM9
+ Port x configuration bit 9
+ 9
+ 1
+
+
+ OM8
+ Port x configuration bit 8
+ 8
+ 1
+
+
+ OM7
+ Port x configuration bit 7
+ 7
+ 1
+
+
+ OM6
+ Port x configuration bit 6
+ 6
+ 1
+
+
+ OM5
+ Port x configuration bit 5
+ 5
+ 1
+
+
+ OM4
+ Port x configuration bit 4
+ 4
+ 1
+
+
+ OM3
+ Port x configuration bit 3
+ 3
+ 1
+
+
+ OM2
+ Port x configuration bit 2
+ 2
+ 1
+
+
+ OM1
+ Port x configuration bit 1
+ 1
+ 1
+
+
+ OM0
+ Port x configuration bit 0
+ 0
+ 1
+
+
+
+
+ OSPD
+ OSPD
+ GPIO port output speed
+ register
+ 0x08
+ 0x20
+ read-write
+ 0x00000000
+
+
+ OSPD15
+ Port x configuration bits (y =
+ 0..15)
+ 30
+ 2
+
+
+ OSPD14
+ Port x configuration bits (y =
+ 0..15)
+ 28
+ 2
+
+
+ OSPD13
+ Port x configuration bits (y =
+ 0..15)
+ 26
+ 2
+
+
+ OSPD12
+ Port x configuration bits (y =
+ 0..15)
+ 24
+ 2
+
+
+ OSPD11
+ Port x configuration bits (y =
+ 0..15)
+ 22
+ 2
+
+
+ OSPD10
+ Port x configuration bits (y =
+ 0..15)
+ 20
+ 2
+
+
+ OSPD9
+ Port x configuration bits (y =
+ 0..15)
+ 18
+ 2
+
+
+ OSPD8
+ Port x configuration bits (y =
+ 0..15)
+ 16
+ 2
+
+
+ OSPD7
+ Port x configuration bits (y =
+ 0..15)
+ 14
+ 2
+
+
+ OSPD6
+ Port x configuration bits (y =
+ 0..15)
+ 12
+ 2
+
+
+ OSPD5
+ Port x configuration bits (y =
+ 0..15)
+ 10
+ 2
+
+
+ OSPD4
+ Port x configuration bits (y =
+ 0..15)
+ 8
+ 2
+
+
+ OSPD3
+ Port x configuration bits (y =
+ 0..15)
+ 6
+ 2
+
+
+ OSPD2
+ Port x configuration bits (y =
+ 0..15)
+ 4
+ 2
+
+
+ OSPD1
+ Port x configuration bits (y =
+ 0..15)
+ 2
+ 2
+
+
+ OSPD0
+ Port x configuration bits (y =
+ 0..15)
+ 0
+ 2
+
+
+
+
+ PUD
+ PUD
+ GPIO port pull-up/pull-down
+ register
+ 0x0C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ PUD15
+ Port x configuration bits (y =
+ 0..15)
+ 30
+ 2
+
+
+ PUD14
+ Port x configuration bits (y =
+ 0..15)
+ 28
+ 2
+
+
+ PUD13
+ Port x configuration bits (y =
+ 0..15)
+ 26
+ 2
+
+
+ PUD12
+ Port x configuration bits (y =
+ 0..15)
+ 24
+ 2
+
+
+ PUD11
+ Port x configuration bits (y =
+ 0..15)
+ 22
+ 2
+
+
+ PUD10
+ Port x configuration bits (y =
+ 0..15)
+ 20
+ 2
+
+
+ PUD9
+ Port x configuration bits (y =
+ 0..15)
+ 18
+ 2
+
+
+ PUD8
+ Port x configuration bits (y =
+ 0..15)
+ 16
+ 2
+
+
+ PUD7
+ Port x configuration bits (y =
+ 0..15)
+ 14
+ 2
+
+
+ PUD6
+ Port x configuration bits (y =
+ 0..15)
+ 12
+ 2
+
+
+ PUD5
+ Port x configuration bits (y =
+ 0..15)
+ 10
+ 2
+
+
+ PUD4
+ Port x configuration bits (y =
+ 0..15)
+ 8
+ 2
+
+
+ PUD3
+ Port x configuration bits (y =
+ 0..15)
+ 6
+ 2
+
+
+ PUD2
+ Port x configuration bits (y =
+ 0..15)
+ 4
+ 2
+
+
+ PUD1
+ Port x configuration bits (y =
+ 0..15)
+ 2
+ 2
+
+
+ PUD0
+ Port x configuration bits (y =
+ 0..15)
+ 0
+ 2
+
+
+
+
+ ISTAT
+ ISTAT
+ GPIO port input data register
+ 0x10
+ 0x20
+ read-only
+ 0x00000000
+
+
+ ISTAT15
+ Port input data (y =
+ 0..15)
+ 15
+ 1
+
+
+ ISTAT14
+ Port input data (y =
+ 0..15)
+ 14
+ 1
+
+
+ ISTAT13
+ Port input data (y =
+ 0..15)
+ 13
+ 1
+
+
+ ISTAT12
+ Port input data (y =
+ 0..15)
+ 12
+ 1
+
+
+ ISTAT11
+ Port input data (y =
+ 0..15)
+ 11
+ 1
+
+
+ ISTAT10
+ Port input data (y =
+ 0..15)
+ 10
+ 1
+
+
+ ISTAT9
+ Port input data (y =
+ 0..15)
+ 9
+ 1
+
+
+ ISTAT8
+ Port input data (y =
+ 0..15)
+ 8
+ 1
+
+
+ ISTAT7
+ Port input data (y =
+ 0..15)
+ 7
+ 1
+
+
+ ISTAT6
+ Port input data (y =
+ 0..15)
+ 6
+ 1
+
+
+ ISTAT5
+ Port input data (y =
+ 0..15)
+ 5
+ 1
+
+
+ ISTAT4
+ Port input data (y =
+ 0..15)
+ 4
+ 1
+
+
+ ISTAT3
+ Port input data (y =
+ 0..15)
+ 3
+ 1
+
+
+ ISTAT2
+ Port input data (y =
+ 0..15)
+ 2
+ 1
+
+
+ ISTAT1
+ Port input data (y =
+ 0..15)
+ 1
+ 1
+
+
+ ISTAT0
+ Port input data (y =
+ 0..15)
+ 0
+ 1
+
+
+
+
+ OCTL
+ OCTL
+ GPIO port output data register
+ 0x14
+ 0x20
+ read-write
+ 0x00000000
+
+
+ OCTL15
+ Port output data (y =
+ 0..15)
+ 15
+ 1
+
+
+ OCTL14
+ Port output data (y =
+ 0..15)
+ 14
+ 1
+
+
+ OCTL13
+ Port output data (y =
+ 0..15)
+ 13
+ 1
+
+
+ OCTL12
+ Port output data (y =
+ 0..15)
+ 12
+ 1
+
+
+ OCTL11
+ Port output data (y =
+ 0..15)
+ 11
+ 1
+
+
+ OCTL10
+ Port output data (y =
+ 0..15)
+ 10
+ 1
+
+
+ OCTL9
+ Port output data (y =
+ 0..15)
+ 9
+ 1
+
+
+ OCTL8
+ Port output data (y =
+ 0..15)
+ 8
+ 1
+
+
+ OCTL7
+ Port output data (y =
+ 0..15)
+ 7
+ 1
+
+
+ OCTL6
+ Port output data (y =
+ 0..15)
+ 6
+ 1
+
+
+ OCTL5
+ Port output data (y =
+ 0..15)
+ 5
+ 1
+
+
+ OCTL4
+ Port output data (y =
+ 0..15)
+ 4
+ 1
+
+
+ OCTL3
+ Port output data (y =
+ 0..15)
+ 3
+ 1
+
+
+ OCTL2
+ Port output data (y =
+ 0..15)
+ 2
+ 1
+
+
+ OCTL1
+ Port output data (y =
+ 0..15)
+ 1
+ 1
+
+
+ OCTL0
+ Port output data (y =
+ 0..15)
+ 0
+ 1
+
+
+
+
+ BOP
+ BOP
+ GPIO port bit set/reset
+ register
+ 0x18
+ 0x20
+ write-only
+ 0x00000000
+
+
+ CR15
+ Port x reset bit y (y =
+ 0..15)
+ 31
+ 1
+
+
+ CR14
+ Port x reset bit y (y =
+ 0..15)
+ 30
+ 1
+
+
+ CR13
+ Port x reset bit y (y =
+ 0..15)
+ 29
+ 1
+
+
+ CR12
+ Port x reset bit y (y =
+ 0..15)
+ 28
+ 1
+
+
+ CR11
+ Port x reset bit y (y =
+ 0..15)
+ 27
+ 1
+
+
+ CR10
+ Port x reset bit y (y =
+ 0..15)
+ 26
+ 1
+
+
+ CR9
+ Port x reset bit y (y =
+ 0..15)
+ 25
+ 1
+
+
+ CR8
+ Port x reset bit y (y =
+ 0..15)
+ 24
+ 1
+
+
+ CR7
+ Port x reset bit y (y =
+ 0..15)
+ 23
+ 1
+
+
+ CR6
+ Port x reset bit y (y =
+ 0..15)
+ 22
+ 1
+
+
+ CR5
+ Port x reset bit y (y =
+ 0..15)
+ 21
+ 1
+
+
+ CR4
+ Port x reset bit y (y =
+ 0..15)
+ 20
+ 1
+
+
+ CR3
+ Port x reset bit y (y =
+ 0..15)
+ 19
+ 1
+
+
+ CR2
+ Port x reset bit y (y =
+ 0..15)
+ 18
+ 1
+
+
+ CR1
+ Port x reset bit y (y =
+ 0..15)
+ 17
+ 1
+
+
+ CR0
+ Port x reset bit y (y=
+ 0..15)
+ 16
+ 1
+
+
+ BOP15
+ Port x set bit y (y=
+ 0..15)
+ 15
+ 1
+
+
+ BOP14
+ Port x set bit y (y=
+ 0..15)
+ 14
+ 1
+
+
+ BOP13
+ Port x set bit y (y=
+ 0..15)
+ 13
+ 1
+
+
+ BOP12
+ Port x set bit y (y=
+ 0..15)
+ 12
+ 1
+
+
+ BOP11
+ Port x set bit y (y=
+ 0..15)
+ 11
+ 1
+
+
+ BOP10
+ Port x set bit y (y=
+ 0..15)
+ 10
+ 1
+
+
+ BOP9
+ Port x set bit y (y=
+ 0..15)
+ 9
+ 1
+
+
+ BOP8
+ Port x set bit y (y=
+ 0..15)
+ 8
+ 1
+
+
+ BOP7
+ Port x set bit y (y=
+ 0..15)
+ 7
+ 1
+
+
+ BOP6
+ Port x set bit y (y=
+ 0..15)
+ 6
+ 1
+
+
+ BOP5
+ Port x set bit y (y=
+ 0..15)
+ 5
+ 1
+
+
+ BOP4
+ Port x set bit y (y=
+ 0..15)
+ 4
+ 1
+
+
+ BOP3
+ Port x set bit y (y=
+ 0..15)
+ 3
+ 1
+
+
+ BOP2
+ Port x set bit y (y=
+ 0..15)
+ 2
+ 1
+
+
+ BOP1
+ Port x set bit y (y=
+ 0..15)
+ 1
+ 1
+
+
+ BOP0
+ Port x set bit y (y=
+ 0..15)
+ 0
+ 1
+
+
+
+
+ AFSEL0
+ AFSEL0
+ GPIO alternate function low
+ register
+ 0x20
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SEL7
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 28
+ 4
+
+
+ SEL6
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 24
+ 4
+
+
+ SEL5
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 20
+ 4
+
+
+ SEL4
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 16
+ 4
+
+
+ SEL3
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 12
+ 4
+
+
+ SEL2
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 8
+ 4
+
+
+ SEL1
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 4
+ 4
+
+
+ SEL0
+ Alternate function selection for port x
+ bit y (y = 0..7)
+ 0
+ 4
+
+
+
+
+ AFSEL1
+ AFSEL1
+ GPIO alternate function
+ register 1
+ 0x24
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SEL15
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 28
+ 4
+
+
+ SEL14
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 24
+ 4
+
+
+ SEL13
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 20
+ 4
+
+
+ SEL12
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 16
+ 4
+
+
+ SEL11
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 12
+ 4
+
+
+ SEL10
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 8
+ 4
+
+
+ SEL9
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 4
+ 4
+
+
+ SEL8
+ Alternate function selection for port x
+ bit y (y = 8..15)
+ 0
+ 4
+
+
+
+
+ BC
+ BC
+ Port bit reset register
+ 0x28
+ 0x20
+ write-only
+ 0x00000000
+
+
+ CR0
+ Port cleat bit
+ 0
+ 1
+
+
+ CR1
+ Port cleat bit
+ 1
+ 1
+
+
+ CR2
+ Port cleat bit
+ 2
+ 1
+
+
+ CR3
+ Port cleat bit
+ 3
+ 1
+
+
+ CR4
+ Port cleat bit
+ 4
+ 1
+
+
+ CR5
+ Port cleat bit
+ 5
+ 1
+
+
+ CR6
+ Port cleat bit
+ 6
+ 1
+
+
+ CR7
+ Port cleat bit
+ 7
+ 1
+
+
+ CR8
+ Port cleat bit
+ 8
+ 1
+
+
+ CR9
+ Port cleat bit
+ 9
+ 1
+
+
+ CR10
+ Port cleat bit
+ 10
+ 1
+
+
+ CR11
+ Port cleat bit
+ 11
+ 1
+
+
+ CR12
+ Port cleat bit
+ 12
+ 1
+
+
+ CR13
+ Port cleat bit
+ 13
+ 1
+
+
+ CR14
+ Port cleat bit
+ 14
+ 1
+
+
+ CR15
+ Port cleat bit
+ 15
+ 1
+
+
+
+
+ TG
+ TG
+ Port bit toggle register
+ 0x2C
+ 0x20
+ write-only
+ 0x00000000
+
+
+ TG0
+ Port toggle bit
+ 0
+ 1
+
+
+ TG1
+ Port toggle bit
+ 1
+ 1
+
+
+ TG2
+ Port toggle bit
+ 2
+ 1
+
+
+ TG3
+ Port toggle bit
+ 3
+ 1
+
+
+ TG4
+ Port toggle bit
+ 4
+ 1
+
+
+ TG5
+ Port toggle bit
+ 5
+ 1
+
+
+ TG6
+ Port toggle bit
+ 6
+ 1
+
+
+ TG7
+ Port toggle bit
+ 7
+ 1
+
+
+ TG8
+ Port toggle bit
+ 8
+ 1
+
+
+ TG9
+ Port toggle bit
+ 9
+ 1
+
+
+ TG10
+ Port toggle bit
+ 10
+ 1
+
+
+ TG11
+ Port toggle bit
+ 11
+ 1
+
+
+ TG12
+ Port toggle bit
+ 12
+ 1
+
+
+ TG13
+ Port toggle bit
+ 13
+ 1
+
+
+ TG14
+ Port toggle bit
+ 14
+ 1
+
+
+ TG15
+ Port toggle bit
+ 15
+ 1
+
+
+
+
+
+
+ GPIOF
+ General-purpose I/Os
+ GPIO
+ 0x48001400
+
+ 0x0
+ 0x400
+ registers
+
+
+
+ CTL
+ CTL
+ GPIOF port control register
+ 0x0
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CTL15
+ Port x configuration bits (y =
+ 0..15)
+ 30
+ 2
+
+
+ CTL14
+ Port x configuration bits (y =
+ 0..15)
+ 28
+ 2
+
+
+ CTL13
+ Port x configuration bits (y =
+ 0..15)
+ 26
+ 2
+
+
+ CTL12
+ Port x configuration bits (y =
+ 0..15)
+ 24
+ 2
+
+
+ CTL11
+ Port x configuration bits (y =
+ 0..15)
+ 22
+ 2
+
+
+ CTL10
+ Port x configuration bits (y =
+ 0..15)
+ 20
+ 2
+
+
+ CTL9
+ Port x configuration bits (y =
+ 0..15)
+ 18
+ 2
+
+
+ CTL8
+ Port x configuration bits (y =
+ 0..15)
+ 16
+ 2
+
+
+ CTL7
+ Port x configuration bits (y =
+ 0..15)
+ 14
+ 2
+
+
+ CTL6
+ Port x configuration bits (y =
+ 0..15)
+ 12
+ 2
+
+
+ CTL5
+ Port x configuration bits (y =
+ 0..15)
+ 10
+ 2
+
+
+ CTL4
+ Port x configuration bits (y =
+ 0..15)
+ 8
+ 2
+
+
+ CTL3
+ Port x configuration bits (y =
+ 0..15)
+ 6
+ 2
+
+
+ CTL2
+ Port x configuration bits (y =
+ 0..15)
+ 4
+ 2
+
+
+ CTL1
+ Port x configuration bits (y =
+ 0..15)
+ 2
+ 2
+
+
+ CTL0
+ Port x configuration bits (y =
+ 0..15)
+ 0
+ 2
+
+
+
+
+ OMODE
+ OMODE
+ GPIO port output type register
+ 0x04
+ 0x20
+ read-write
+ 0x00000000
+
+
+ OM15
+ Port x configuration bit
+ 15
+ 15
+ 1
+
+
+ OM14
+ Port x configuration bit
+ 14
+ 14
+ 1
+
+
+ OM13
+ Port x configuration bit
+ 13
+ 13
+ 1
+
+
+ OM12
+ Port x configuration bit
+ 12
+ 12
+ 1
+
+
+ OM11
+ Port x configuration bit
+ 11
+ 11
+ 1
+
+
+ OM10
+ Port x configuration bit
+ 10
+ 10
+ 1
+
+
+ OM9
+ Port x configuration bit 9
+ 9
+ 1
+
+
+ OM8
+ Port x configuration bit 8
+ 8
+ 1
+
+
+ OM7
+ Port x configuration bit 7
+ 7
+ 1
+
+
+ OM6
+ Port x configuration bit 6
+ 6
+ 1
+
+
+ OM5
+ Port x configuration bit 5
+ 5
+ 1
+
+
+ OM4
+ Port x configuration bit 4
+ 4
+ 1
+
+
+ OM3
+ Port x configuration bit 3
+ 3
+ 1
+
+
+ OM2
+ Port x configuration bit 2
+ 2
+ 1
+
+
+ OM1
+ Port x configuration bit 1
+ 1
+ 1
+
+
+ OM0
+ Port x configuration bit 0
+ 0
+ 1
+
+
+
+
+ OSPD
+ OSPD
+ GPIO port output speed
+ register
+ 0x08
+ 0x20
+ read-write
+ 0x00000000
+
+
+ OSPD15
+ Port x configuration bits (y =
+ 0..15)
+ 30
+ 2
+
+
+ OSPD14
+ Port x configuration bits (y =
+ 0..15)
+ 28
+ 2
+
+
+ OSPD13
+ Port x configuration bits (y =
+ 0..15)
+ 26
+ 2
+
+
+ OSPD12
+ Port x configuration bits (y =
+ 0..15)
+ 24
+ 2
+
+
+ OSPD11
+ Port x configuration bits (y =
+ 0..15)
+ 22
+ 2
+
+
+ OSPD10
+ Port x configuration bits (y =
+ 0..15)
+ 20
+ 2
+
+
+ OSPD9
+ Port x configuration bits (y =
+ 0..15)
+ 18
+ 2
+
+
+ OSPD8
+ Port x configuration bits (y =
+ 0..15)
+ 16
+ 2
+
+
+ OSPD7
+ Port x configuration bits (y =
+ 0..15)
+ 14
+ 2
+
+
+ OSPD6
+ Port x configuration bits (y =
+ 0..15)
+ 12
+ 2
+
+
+ OSPD5
+ Port x configuration bits (y =
+ 0..15)
+ 10
+ 2
+
+
+ OSPD4
+ Port x configuration bits (y =
+ 0..15)
+ 8
+ 2
+
+
+ OSPD3
+ Port x configuration bits (y =
+ 0..15)
+ 6
+ 2
+
+
+ OSPD2
+ Port x configuration bits (y =
+ 0..15)
+ 4
+ 2
+
+
+ OSPD1
+ Port x configuration bits (y =
+ 0..15)
+ 2
+ 2
+
+
+ OSPD0
+ Port x configuration bits (y =
+ 0..15)
+ 0
+ 2
+
+
+
+
+ PUD
+ PUD
+ GPIO port pull-up/pull-down
+ register
+ 0x0C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ PUD15
+ Port x configuration bits (y =
+ 0..15)
+ 30
+ 2
+
+
+ PUD14
+ Port x configuration bits (y =
+ 0..15)
+ 28
+ 2
+
+
+ PUD13
+ Port x configuration bits (y =
+ 0..15)
+ 26
+ 2
+
+
+ PUD12
+ Port x configuration bits (y =
+ 0..15)
+ 24
+ 2
+
+
+ PUD11
+ Port x configuration bits (y =
+ 0..15)
+ 22
+ 2
+
+
+ PUD10
+ Port x configuration bits (y =
+ 0..15)
+ 20
+ 2
+
+
+ PUD9
+ Port x configuration bits (y =
+ 0..15)
+ 18
+ 2
+
+
+ PUD8
+ Port x configuration bits (y =
+ 0..15)
+ 16
+ 2
+
+
+ PUD7
+ Port x configuration bits (y =
+ 0..15)
+ 14
+ 2
+
+
+ PUD6
+ Port x configuration bits (y =
+ 0..15)
+ 12
+ 2
+
+
+ PUD5
+ Port x configuration bits (y =
+ 0..15)
+ 10
+ 2
+
+
+ PUD4
+ Port x configuration bits (y =
+ 0..15)
+ 8
+ 2
+
+
+ PUD3
+ Port x configuration bits (y =
+ 0..15)
+ 6
+ 2
+
+
+ PUD2
+ Port x configuration bits (y =
+ 0..15)
+ 4
+ 2
+
+
+ PUD1
+ Port x configuration bits (y =
+ 0..15)
+ 2
+ 2
+
+
+ PUD0
+ Port x configuration bits (y =
+ 0..15)
+ 0
+ 2
+
+
+
+
+ ISTAT
+ ISTAT
+ GPIO port input data register
+ 0x10
+ 0x20
+ read-only
+ 0x00000000
+
+
+ ISTAT15
+ Port input data (y =
+ 0..15)
+ 15
+ 1
+
+
+ ISTAT14
+ Port input data (y =
+ 0..15)
+ 14
+ 1
+
+
+ ISTAT13
+ Port input data (y =
+ 0..15)
+ 13
+ 1
+
+
+ ISTAT12
+ Port input data (y =
+ 0..15)
+ 12
+ 1
+
+
+ ISTAT11
+ Port input data (y =
+ 0..15)
+ 11
+ 1
+
+
+ ISTAT10
+ Port input data (y =
+ 0..15)
+ 10
+ 1
+
+
+ ISTAT9
+ Port input data (y =
+ 0..15)
+ 9
+ 1
+
+
+ ISTAT8
+ Port input data (y =
+ 0..15)
+ 8
+ 1
+
+
+ ISTAT7
+ Port input data (y =
+ 0..15)
+ 7
+ 1
+
+
+ ISTAT6
+ Port input data (y =
+ 0..15)
+ 6
+ 1
+
+
+ ISTAT5
+ Port input data (y =
+ 0..15)
+ 5
+ 1
+
+
+ ISTAT4
+ Port input data (y =
+ 0..15)
+ 4
+ 1
+
+
+ ISTAT3
+ Port input data (y =
+ 0..15)
+ 3
+ 1
+
+
+ ISTAT2
+ Port input data (y =
+ 0..15)
+ 2
+ 1
+
+
+ ISTAT1
+ Port input data (y =
+ 0..15)
+ 1
+ 1
+
+
+ ISTAT0
+ Port input data (y =
+ 0..15)
+ 0
+ 1
+
+
+
+
+ OCTL
+ OCTL
+ GPIO port output data register
+ 0x14
+ 0x20
+ read-write
+ 0x00000000
+
+
+ OCTL15
+ Port output data (y =
+ 0..15)
+ 15
+ 1
+
+
+ OCTL14
+ Port output data (y =
+ 0..15)
+ 14
+ 1
+
+
+ OCTL13
+ Port output data (y =
+ 0..15)
+ 13
+ 1
+
+
+ OCTL12
+ Port output data (y =
+ 0..15)
+ 12
+ 1
+
+
+ OCTL11
+ Port output data (y =
+ 0..15)
+ 11
+ 1
+
+
+ OCTL10
+ Port output data (y =
+ 0..15)
+ 10
+ 1
+
+
+ OCTL9
+ Port output data (y =
+ 0..15)
+ 9
+ 1
+
+
+ OCTL8
+ Port output data (y =
+ 0..15)
+ 8
+ 1
+
+
+ OCTL7
+ Port output data (y =
+ 0..15)
+ 7
+ 1
+
+
+ OCTL6
+ Port output data (y =
+ 0..15)
+ 6
+ 1
+
+
+ OCTL5
+ Port output data (y =
+ 0..15)
+ 5
+ 1
+
+
+ OCTL4
+ Port output data (y =
+ 0..15)
+ 4
+ 1
+
+
+ OCTL3
+ Port output data (y =
+ 0..15)
+ 3
+ 1
+
+
+ OCTL2
+ Port output data (y =
+ 0..15)
+ 2
+ 1
+
+
+ OCTL1
+ Port output data (y =
+ 0..15)
+ 1
+ 1
+
+
+ OCTL0
+ Port output data (y =
+ 0..15)
+ 0
+ 1
+
+
+
+
+ BOP
+ BOP
+ GPIO port bit set/reset
+ register
+ 0x18
+ 0x20
+ write-only
+ 0x00000000
+
+
+ CR15
+ Port x reset bit y (y =
+ 0..15)
+ 31
+ 1
+
+
+ CR14
+ Port x reset bit y (y =
+ 0..15)
+ 30
+ 1
+
+
+ CR13
+ Port x reset bit y (y =
+ 0..15)
+ 29
+ 1
+
+
+ CR12
+ Port x reset bit y (y =
+ 0..15)
+ 28
+ 1
+
+
+ CR11
+ Port x reset bit y (y =
+ 0..15)
+ 27
+ 1
+
+
+ CR10
+ Port x reset bit y (y =
+ 0..15)
+ 26
+ 1
+
+
+ CR9
+ Port x reset bit y (y =
+ 0..15)
+ 25
+ 1
+
+
+ CR8
+ Port x reset bit y (y =
+ 0..15)
+ 24
+ 1
+
+
+ CR7
+ Port x reset bit y (y =
+ 0..15)
+ 23
+ 1
+
+
+ CR6
+ Port x reset bit y (y =
+ 0..15)
+ 22
+ 1
+
+
+ CR5
+ Port x reset bit y (y =
+ 0..15)
+ 21
+ 1
+
+
+ CR4
+ Port x reset bit y (y =
+ 0..15)
+ 20
+ 1
+
+
+ CR3
+ Port x reset bit y (y =
+ 0..15)
+ 19
+ 1
+
+
+ CR2
+ Port x reset bit y (y =
+ 0..15)
+ 18
+ 1
+
+
+ CR1
+ Port x reset bit y (y =
+ 0..15)
+ 17
+ 1
+
+
+ CR0
+ Port x set bit y (y=
+ 0..15)
+ 16
+ 1
+
+
+ BOP15
+ Port x set bit y (y=
+ 0..15)
+ 15
+ 1
+
+
+ BOP14
+ Port x set bit y (y=
+ 0..15)
+ 14
+ 1
+
+
+ BOP13
+ Port x set bit y (y=
+ 0..15)
+ 13
+ 1
+
+
+ BOP12
+ Port x set bit y (y=
+ 0..15)
+ 12
+ 1
+
+
+ BOP11
+ Port x set bit y (y=
+ 0..15)
+ 11
+ 1
+
+
+ BOP10
+ Port x set bit y (y=
+ 0..15)
+ 10
+ 1
+
+
+ BOP9
+ Port x set bit y (y=
+ 0..15)
+ 9
+ 1
+
+
+ BOP8
+ Port x set bit y (y=
+ 0..15)
+ 8
+ 1
+
+
+ BOP7
+ Port x set bit y (y=
+ 0..15)
+ 7
+ 1
+
+
+ BOP6
+ Port x set bit y (y=
+ 0..15)
+ 6
+ 1
+
+
+ BOP5
+ Port x set bit y (y=
+ 0..15)
+ 5
+ 1
+
+
+ BOP4
+ Port x set bit y (y=
+ 0..15)
+ 4
+ 1
+
+
+ BOP3
+ Port x set bit y (y=
+ 0..15)
+ 3
+ 1
+
+
+ BOP2
+ Port x set bit y (y=
+ 0..15)
+ 2
+ 1
+
+
+ BOP1
+ Port x set bit y (y=
+ 0..15)
+ 1
+ 1
+
+
+ BOP0
+ Port x set bit y (y=
+ 0..15)
+ 0
+ 1
+
+
+
+
+ BC
+ BC
+ Port bit reset register
+ 0x28
+ 0x20
+ write-only
+ 0x00000000
+
+
+ CR0
+ Port x Reset bit y
+ 0
+ 1
+
+
+ CR1
+ Port x Reset bit y
+ 1
+ 1
+
+
+ CR2
+ Port x Reset bit y
+ 2
+ 1
+
+
+ CR3
+ Port x Reset bit y
+ 3
+ 1
+
+
+ CR4
+ Port x Reset bit y
+ 4
+ 1
+
+
+ CR5
+ Port x Reset bit y
+ 5
+ 1
+
+
+ CR6
+ Port x Reset bit y
+ 6
+ 1
+
+
+ CR7
+ Port x Reset bit y
+ 7
+ 1
+
+
+ CR8
+ Port x Reset bit y
+ 8
+ 1
+
+
+ CR9
+ Port x Reset bit y
+ 9
+ 1
+
+
+ CR10
+ Port x Reset bit y
+ 10
+ 1
+
+
+ CR11
+ Port x Reset bit y
+ 11
+ 1
+
+
+ CR12
+ Port x Reset bit y
+ 12
+ 1
+
+
+ CR13
+ Port x Reset bit y
+ 13
+ 1
+
+
+ CR14
+ Port x Reset bit y
+ 14
+ 1
+
+
+ CR15
+ Port x Reset bit y
+ 15
+ 1
+
+
+
+
+ TG
+ TG
+ Port bit toggle register
+ 0x2C
+ 0x20
+ write-only
+ 0x00000000
+
+
+ TG0
+ Port toggle bit
+ 0
+ 1
+
+
+ TG1
+ Port toggle bit
+ 1
+ 1
+
+
+ TG2
+ Port toggle bit
+ 2
+ 1
+
+
+ TG3
+ Port toggle bit
+ 3
+ 1
+
+
+ TG4
+ Port toggle bit
+ 4
+ 1
+
+
+ TG5
+ Port toggle bit
+ 5
+ 1
+
+
+ TG6
+ Port toggle bit
+ 6
+ 1
+
+
+ TG7
+ Port toggle bit
+ 7
+ 1
+
+
+ TG8
+ Port toggle bit
+ 8
+ 1
+
+
+ TG9
+ Port toggle bit
+ 9
+ 1
+
+
+ TG10
+ Port toggle bit
+ 10
+ 1
+
+
+ TG11
+ Port toggle bit
+ 11
+ 1
+
+
+ TG12
+ Port toggle bit
+ 12
+ 1
+
+
+ TG13
+ Port toggle bit
+ 13
+ 1
+
+
+ TG14
+ Port toggle bit
+ 14
+ 1
+
+
+ TG15
+ Port toggle bit
+ 15
+ 1
+
+
+
+
+
+
+ I2C0
+ Inter integrated circuit
+ I2C
+ 0x40005400
+
+ 0x0
+ 0x400
+ registers
+
+
+ I2C0_EV
+ 23
+
+
+ I2C0_ER
+ 32
+
+
+
+ CTL0
+ CTL0
+ Control register 0
+ 0x0
+ 0x20
+ read-write
+ 0x0000
+
+
+ SRESET
+ Software reset
+ 15
+ 1
+
+
+ SALT
+ SMBus alert
+ 13
+ 1
+
+
+ PECTRANS
+ Packet error checking
+ 12
+ 1
+
+
+ POAP
+ Acknowledge/PEC Position (for data
+ reception)
+ 11
+ 1
+
+
+ ACKEN
+ Acknowledge enable
+ 10
+ 1
+
+
+ STOP
+ Stop condition
+ 9
+ 1
+
+
+ START
+ Start generation
+ 8
+ 1
+
+
+ SS
+ SCL Stretching(Slave
+ mode)
+ 7
+ 1
+
+
+ GCEN
+ General call enable
+ 6
+ 1
+
+
+ PECEN
+ PEC enable
+ 5
+ 1
+
+
+ ARPEN
+ ARP enable
+ 4
+ 1
+
+
+ SMBSEL
+ SMBus type
+ 3
+ 1
+
+
+ SMBEN
+ SMBus mode
+ 1
+ 1
+
+
+ I2CEN
+ Peripheral enable
+ 0
+ 1
+
+
+
+
+ CTL1
+ CTL1
+ Control register 1
+ 0x04
+ 0x20
+ read-write
+ 0x0000
+
+
+ DMALST
+ Flag indicating DMA last transfer
+ 12
+ 1
+
+
+ DMAON
+ DMA mode switch
+ 11
+ 1
+
+
+ BUFIE
+ Buffer interrupt enable
+ 10
+ 1
+
+
+ EVIE
+ Event interrupt enable
+ 9
+ 1
+
+
+ ERRIE
+ Error interrupt enable
+ 8
+ 1
+
+
+ I2CCLK
+ Peripheral clock frequency
+ 0
+ 7
+
+
+
+
+ SADDR0
+ SADDR0
+ Own address register 0
+ 0x08
+ 0x20
+ read-write
+ 0x0000
+
+
+ ADDFORMAT
+ Addressing mode (slave
+ mode)
+ 15
+ 1
+
+
+ ADDRESS
+ Interface address
+ 0
+ 10
+
+
+
+
+ SADDR1
+ SADDR1
+ Own address register 1
+ 0x0C
+ 0x20
+ read-write
+ 0x0000
+
+
+ ADDRESS2
+ Interface address
+ 1
+ 7
+
+
+ DUADEN
+ Dual addressing mode
+ enable
+ 0
+ 1
+
+
+
+
+ DATA
+ DATA
+ Data register
+ 0x10
+ 0x20
+ read-write
+ 0x0000
+
+
+ TRB
+ Transmission or reception data buffer
+ 0
+ 8
+
+
+
+
+ STAT0
+ STAT0
+ Transfer status register 0
+ 0x14
+ 0x20
+ 0x0000
+
+
+ SMBALT
+ SMBus alert
+ 15
+ 1
+ read-write
+
+
+ SMBTO
+ Timeout signal in SMBus mode
+ 14
+ 1
+ read-write
+
+
+ PECERR
+ PEC error when receiving data
+ 12
+ 1
+ read-write
+
+
+ OUERR
+ Overrun/Underrun occurs in slave mode
+ 11
+ 1
+ read-write
+
+
+ AERR
+ Acknowledge error
+ 10
+ 1
+ read-write
+
+
+ LOSTARB
+ Arbitration lost (master
+ mode)
+ 9
+ 1
+ read-write
+
+
+ BERR
+ Bus error
+ 8
+ 1
+ read-write
+
+
+ TBE
+ I2C_DATA is Empty during transmitting
+ 7
+ 1
+ read-only
+
+
+ RBNE
+ I2C_DATA is not Empty during receiving
+ 6
+ 1
+ read-only
+
+
+ STPDET
+ Stop detection (slave
+ mode)
+ 4
+ 1
+ read-only
+
+
+ ADD10SEND
+ Header of 10-bit address is sent in master mode
+ 3
+ 1
+ read-only
+
+
+ BTC
+ Byte transmission completed
+ 2
+ 1
+ read-only
+
+
+ ADDSEND
+ Address sent (master mode)/matched
+ (slave mode)
+ 1
+ 1
+ read-only
+
+
+ SBSEND
+ Start bit (Master mode)
+ 0
+ 1
+ read-only
+
+
+
+
+ STAT1
+ STAT1
+ Transfer status register 1
+ 0x18
+ 0x20
+ read-only
+ 0x0000
+
+
+ PECV
+ Packet error checking
+ register
+ 8
+ 8
+
+
+ DUMODF
+ Dual flag (Slave mode)
+ 7
+ 1
+
+
+ HSTSMB
+ SMBus host header (Slave
+ mode)
+ 6
+ 1
+
+
+ DEFSMB
+ SMBus device default address (Slave
+ mode)
+ 5
+ 1
+
+
+ RXGC
+ General call address (Slave
+ mode)
+ 4
+ 1
+
+
+ TR
+ Transmitter/receiver
+ 2
+ 1
+
+
+ I2CBSY
+ Bus busy
+ 1
+ 1
+
+
+ MASTER
+ Master/slave
+ 0
+ 1
+
+
+
+
+ CKCFG
+ CKCFG
+ Clock configure register
+ 0x1C
+ 0x20
+ read-write
+ 0x0000
+
+
+ FAST
+ I2C master mode selection
+ 15
+ 1
+
+
+ DTCY
+ Fast mode duty cycle
+ 14
+ 1
+
+
+ CLKC
+ Clock control register in Fast/Standard
+ mode (Master mode)
+ 0
+ 12
+
+
+
+
+ RT
+ RT
+ Rise time register
+ 0x20
+ 0x20
+ read-write
+ 0x0002
+
+
+ RISETIME
+ Maximum rise time in master mode
+ 0
+ 7
+
+
+
+
+ SAMCS
+ SAMCS
+ SAM control and status register
+ 0x80
+ 0x20
+ read-write
+ 0x0000
+
+
+ RFR
+ Rxframe rise flag
+ 15
+ 1
+
+
+ RFF
+ Rxframe fall flag
+ 14
+ 1
+
+
+ TFR
+ Txframe rise flag
+ 13
+ 1
+
+
+ TFF
+ Txframe fall flag
+ 12
+ 1
+
+
+ RXF
+ level of rx frame signal
+ 9
+ 1
+
+
+ TXF
+ level of tx frame signal
+ 8
+ 1
+
+
+ RFRIE
+ Rx frame rise interrupt enable
+ 7
+ 1
+
+
+ RFFIE
+ Rx frame fall interrupt enable
+ 6
+ 1
+
+
+ TFRIE
+ Tx frame rise interrupt enable
+ 5
+ 1
+
+
+ TFFIE
+ Tx frame fall interrupt enable
+ 4
+ 1
+
+
+ STOEN
+ SAM_V interface timeout detect enable
+ 1
+ 1
+
+
+ SAMEN
+ SAM_V interface enable
+ 0
+ 1
+
+
+
+
+ FMPCFG
+ FMPCFG
+ Fast-mode-plus configure register
+ 0x90
+ 0x20
+ read-write
+ 0x0000
+
+
+ FMPEN
+ Fast-mode-plus enable
+ 0
+ 1
+
+
+
+
+
+
+ I2C1
+ 0x40005800
+
+ I2C1_EV
+ 24
+
+
+ I2C1_ER
+ 34
+
+
+
+ NVIC
+ Nested Vectored Interrupt
+ Controller
+ NVIC
+ 0xE000E100
+
+ 0x0
+ 0xF00
+ registers
+
+
+ 0x33D
+ 0xC3
+ reserved
+
+
+
+ ISER0
+ ISER0
+ Interrupt Set Enable Register
+ 0x0
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETENA
+ SETENA
+ 0
+ 32
+
+
+
+
+ ISER1
+ ISER1
+ Interrupt Set Enable Register
+ 0x04
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETENA
+ SETENA
+ 0
+ 32
+
+
+
+
+ ISER2
+ ISER2
+ Interrupt Set Enable Register
+ 0x08
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETENA
+ SETENA
+ 0
+ 32
+
+
+
+
+ ISER3
+ ISER3
+ Interrupt Set Enable Register
+ 0x0C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETENA
+ SETENA
+ 0
+ 32
+
+
+
+
+ ISER4
+ ISER4
+ Interrupt Set Enable Register
+ 0x10
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETENA
+ SETENA
+ 0
+ 32
+
+
+
+
+ ISER5
+ ISER5
+ Interrupt Set Enable Register
+ 0x14
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETENA
+ SETENA
+ 0
+ 32
+
+
+
+
+ ISER6
+ ISER6
+ Interrupt Set Enable Register
+ 0x18
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETENA
+ SETENA
+ 0
+ 32
+
+
+
+
+ ISER7
+ ISER7
+ Interrupt Set Enable Register
+ 0x1C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETENA
+ SETENA
+ 0
+ 32
+
+
+
+
+ ISER8
+ ISER8
+ Interrupt Set Enable Register
+ 0x20
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETENA
+ SETENA
+ 0
+ 32
+
+
+
+
+ ISER9
+ ISER9
+ Interrupt Set Enable Register
+ 0x24
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETENA
+ SETENA
+ 0
+ 32
+
+
+
+
+ ISER10
+ ISER10
+ Interrupt Set Enable Register
+ 0x28
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETENA
+ SETENA
+ 0
+ 32
+
+
+
+
+ ISER11
+ ISER11
+ Interrupt Set Enable Register
+ 0x2C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETENA
+ SETENA
+ 0
+ 32
+
+
+
+
+ ISER12
+ ISER12
+ Interrupt Set Enable Register
+ 0x30
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETENA
+ SETENA
+ 0
+ 32
+
+
+
+
+ ISER13
+ ISER13
+ Interrupt Set Enable Register
+ 0x34
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETENA
+ SETENA
+ 0
+ 32
+
+
+
+
+ ISER14
+ ISER14
+ Interrupt Set Enable Register
+ 0x38
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETENA
+ SETENA
+ 0
+ 32
+
+
+
+
+ ISER15
+ ISER15
+ Interrupt Set Enable Register
+ 0x3C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETENA
+ SETENA
+ 0
+ 32
+
+
+
+
+ ICER0
+ ICER0
+ Interrupt Clear Enable
+ Register
+ 0x80
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRENA
+ CLRENA
+ 0
+ 32
+
+
+
+
+ ICER1
+ ICER1
+ Interrupt Clear Enable
+ Register
+ 0x84
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRENA
+ CLRENA
+ 0
+ 32
+
+
+
+
+ ICER2
+ ICER2
+ Interrupt Clear Enable
+ Register
+ 0x8C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRENA
+ CLRENA
+ 0
+ 32
+
+
+
+
+ ICER3
+ ICER3
+ Interrupt Clear Enable
+ Register
+ 0x90
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRENA
+ CLRENA
+ 0
+ 32
+
+
+
+
+ ICER4
+ ICER4
+ Interrupt Clear Enable
+ Register
+ 0x94
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRENA
+ CLRENA
+ 0
+ 32
+
+
+
+
+ ICER5
+ ICER5
+ Interrupt Clear Enable
+ Register
+ 0x98
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRENA
+ CLRENA
+ 0
+ 32
+
+
+
+
+ ICER6
+ ICER6
+ Interrupt Clear Enable
+ Register
+ 0x9C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRENA
+ CLRENA
+ 0
+ 32
+
+
+
+
+ ICER7
+ ICER7
+ Interrupt Clear Enable
+ Register
+ 0xA0
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRENA
+ CLRENA
+ 0
+ 32
+
+
+
+
+ ICER8
+ ICER8
+ Interrupt Clear Enable
+ Register
+ 0xA4
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRENA
+ CLRENA
+ 0
+ 32
+
+
+
+
+ ICER9
+ ICER9
+ Interrupt Clear Enable
+ Register
+ 0xA8
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRENA
+ CLRENA
+ 0
+ 32
+
+
+
+
+ ICER10
+ ICER10
+ Interrupt Clear Enable
+ Register
+ 0xAC
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRENA
+ CLRENA
+ 0
+ 32
+
+
+
+
+ ICER11
+ ICER11
+ Interrupt Clear Enable
+ Register
+ 0xB0
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRENA
+ CLRENA
+ 0
+ 32
+
+
+
+
+ ICER12
+ ICER12
+ Interrupt Clear Enable
+ Register
+ 0xB4
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRENA
+ CLRENA
+ 0
+ 32
+
+
+
+
+ ICER13
+ ICER13
+ Interrupt Clear Enable
+ Register
+ 0xB8
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRENA
+ CLRENA
+ 0
+ 32
+
+
+
+
+ ICER14
+ ICER14
+ Interrupt Clear Enable
+ Register
+ 0xBC
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRENA
+ CLRENA
+ 0
+ 32
+
+
+
+
+ ICER15
+ ICER15
+ Interrupt Clear Enable
+ Register
+ 0xC0
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRENA
+ CLRENA
+ 0
+ 32
+
+
+
+
+ ISPR0
+ ISPR0
+ Interrupt Set-Pending Register
+ 0x100
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETPEND
+ SETPEND
+ 0
+ 32
+
+
+
+
+ ISPR1
+ ISPR1
+ Interrupt Set-Pending Register
+ 0x104
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETPEND
+ SETPEND
+ 0
+ 32
+
+
+
+
+ ISPR2
+ ISPR2
+ Interrupt Set-Pending Register
+ 0x108
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETPEND
+ SETPEND
+ 0
+ 32
+
+
+
+
+ ISPR3
+ ISPR3
+ Interrupt Set-Pending Register
+ 0x10C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETPEND
+ SETPEND
+ 0
+ 32
+
+
+
+
+ ISPR4
+ ISPR4
+ Interrupt Set-Pending Register
+ 0x110
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETPEND
+ SETPEND
+ 0
+ 32
+
+
+
+
+ ISPR5
+ ISPR5
+ Interrupt Set-Pending Register
+ 0x114
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETPEND
+ SETPEND
+ 0
+ 32
+
+
+
+
+ ISPR6
+ ISPR6
+ Interrupt Set-Pending Register
+ 0x118
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETPEND
+ SETPEND
+ 0
+ 32
+
+
+
+
+ ISPR7
+ ISPR7
+ Interrupt Set-Pending Register
+ 0x11C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETPEND
+ SETPEND
+ 0
+ 32
+
+
+
+
+ ISPR8
+ ISPR8
+ Interrupt Set-Pending Register
+ 0x120
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETPEND
+ SETPEND
+ 0
+ 32
+
+
+
+
+ ISPR9
+ ISPR9
+ Interrupt Set-Pending Register
+ 0x124
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETPEND
+ SETPEND
+ 0
+ 32
+
+
+
+
+ ISPR10
+ ISPR10
+ Interrupt Set-Pending Register
+ 0x128
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETPEND
+ SETPEND
+ 0
+ 32
+
+
+
+
+ ISPR11
+ ISPR11
+ Interrupt Set-Pending Register
+ 0x12C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETPEND
+ SETPEND
+ 0
+ 32
+
+
+
+
+ ISPR12
+ ISPR12
+ Interrupt Set-Pending Register
+ 0x130
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETPEND
+ SETPEND
+ 0
+ 32
+
+
+
+
+ ISPR13
+ ISPR13
+ Interrupt Set-Pending Register
+ 0x134
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETPEND
+ SETPEND
+ 0
+ 32
+
+
+
+
+ ISPR14
+ ISPR14
+ Interrupt Set-Pending Register
+ 0x138
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETPEND
+ SETPEND
+ 0
+ 32
+
+
+
+
+ ISPR15
+ ISPR15
+ Interrupt Set-Pending Register
+ 0x13C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SETPEND
+ SETPEND
+ 0
+ 32
+
+
+
+
+ ICPR0
+ ICPR0
+ Interrupt Clear-Pending
+ Register
+ 0x180
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRPEND
+ CLRPEND
+ 0
+ 32
+
+
+
+
+ ICPR1
+ ICPR1
+ Interrupt Clear-Pending
+ Register
+ 0x184
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRPEND
+ CLRPEND
+ 0
+ 32
+
+
+
+
+ ICPR2
+ ICPR2
+ Interrupt Clear-Pending
+ Register
+ 0x188
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRPEND
+ CLRPEND
+ 0
+ 32
+
+
+
+
+ ICPR3
+ ICPR3
+ Interrupt Clear-Pending
+ Register
+ 0x18C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRPEND
+ CLRPEND
+ 0
+ 32
+
+
+
+
+ ICPR4
+ ICPR4
+ Interrupt Clear-Pending
+ Register
+ 0x190
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRPEND
+ CLRPEND
+ 0
+ 32
+
+
+
+
+ ICPR5
+ ICPR5
+ Interrupt Clear-Pending
+ Register
+ 0x194
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRPEND
+ CLRPEND
+ 0
+ 32
+
+
+
+
+ ICPR6
+ ICPR6
+ Interrupt Clear-Pending
+ Register
+ 0x198
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRPEND
+ CLRPEND
+ 0
+ 32
+
+
+
+
+ ICPR7
+ ICPR7
+ Interrupt Clear-Pending
+ Register
+ 0x19C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRPEND
+ CLRPEND
+ 0
+ 32
+
+
+
+
+ ICPR8
+ ICPR8
+ Interrupt Clear-Pending
+ Register
+ 0x1A0
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRPEND
+ CLRPEND
+ 0
+ 32
+
+
+
+
+ ICPR9
+ ICPR9
+ Interrupt Clear-Pending
+ Register
+ 0x1A4
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRPEND
+ CLRPEND
+ 0
+ 32
+
+
+
+
+ ICPR10
+ ICPR10
+ Interrupt Clear-Pending
+ Register
+ 0x1A8
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRPEND
+ CLRPEND
+ 0
+ 32
+
+
+
+
+ ICPR11
+ ICPR11
+ Interrupt Clear-Pending
+ Register
+ 0x1AC
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRPEND
+ CLRPEND
+ 0
+ 32
+
+
+
+
+ ICPR12
+ ICPR12
+ Interrupt Clear-Pending
+ Register
+ 0x1B0
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRPEND
+ CLRPEND
+ 0
+ 32
+
+
+
+
+ ICPR13
+ ICPR13
+ Interrupt Clear-Pending
+ Register
+ 0x1B4
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRPEND
+ CLRPEND
+ 0
+ 32
+
+
+
+
+ ICPR14
+ ICPR14
+ Interrupt Clear-Pending
+ Register
+ 0x1B8
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRPEND
+ CLRPEND
+ 0
+ 32
+
+
+
+
+ ICPR15
+ ICPR15
+ Interrupt Clear-Pending
+ Register
+ 0x1BC
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CLRPEND
+ CLRPEND
+ 0
+ 32
+
+
+
+
+ IABR0
+ IABR0
+ Interrupt Active bit
+ Register
+ 0x200
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IABR
+ IABR
+ 0
+ 32
+
+
+
+
+ IABR1
+ IABR1
+ Interrupt Active bit
+ Register
+ 0x204
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IABR
+ IABR
+ 0
+ 32
+
+
+
+
+ IABR2
+ IABR2
+ Interrupt Active bit
+ Register
+ 0x208
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IABR
+ IABR
+ 0
+ 32
+
+
+
+
+ IABR3
+ IABR3
+ Interrupt Active bit
+ Register
+ 0x20C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IABR
+ IABR
+ 0
+ 32
+
+
+
+
+ IABR4
+ IABR4
+ Interrupt Active bit
+ Register
+ 0x210
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IABR
+ IABR
+ 0
+ 32
+
+
+
+
+ IABR5
+ IABR5
+ Interrupt Active bit
+ Register
+ 0x214
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IABR
+ IABR
+ 0
+ 32
+
+
+
+
+ IABR6
+ IABR6
+ Interrupt Active bit
+ Register
+ 0x218
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IABR
+ IABR
+ 0
+ 32
+
+
+
+
+ IABR7
+ IABR7
+ Interrupt Active bit
+ Register
+ 0x21C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IABR
+ IABR
+ 0
+ 32
+
+
+
+
+ IABR8
+ IABR8
+ Interrupt Active bit
+ Register
+ 0x220
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IABR
+ IABR
+ 0
+ 32
+
+
+
+
+ IABR9
+ IABR9
+ Interrupt Active bit
+ Register
+ 0x224
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IABR
+ IABR
+ 0
+ 32
+
+
+
+
+ IABR10
+ IABR10
+ Interrupt Active bit
+ Register
+ 0x228
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IABR
+ IABR
+ 0
+ 32
+
+
+
+
+ IABR11
+ IABR11
+ Interrupt Active bit
+ Register
+ 0x22C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IABR
+ IABR
+ 0
+ 32
+
+
+
+
+ IABR12
+ IABR12
+ Interrupt Active bit
+ Register
+ 0x230
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IABR
+ IABR
+ 0
+ 32
+
+
+
+
+ IABR13
+ IABR13
+ Interrupt Active bit
+ Register
+ 0x234
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IABR
+ IABR
+ 0
+ 32
+
+
+
+
+ IABR14
+ IABR14
+ Interrupt Active bit
+ Register
+ 0x238
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IABR
+ IABR
+ 0
+ 32
+
+
+
+
+ IABR15
+ IABR15
+ Interrupt Active bit
+ Register
+ 0x23C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IABR
+ IABR
+ 0
+ 32
+
+
+
+
+ ITNS0
+ ITNS0
+ Interrupt Active bit
+ Register
+ 0x280
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ITNS
+ ITNS
+ 0
+ 32
+
+
+
+
+ ITNS1
+ ITNS1
+ Interrupt Active bit
+ Register
+ 0x284
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ITNS
+ ITNS
+ 0
+ 32
+
+
+
+
+ ITNS2
+ ITNS2
+ Interrupt Active bit
+ Register
+ 0x288
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ITNS
+ ITNS
+ 0
+ 32
+
+
+
+
+ ITNS3
+ ITNS3
+ Interrupt Active bit
+ Register
+ 0x28C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ITNS
+ ITNS
+ 0
+ 32
+
+
+
+
+ ITNS4
+ ITNS4
+ Interrupt Active bit
+ Register
+ 0x290
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ITNS
+ ITNS
+ 0
+ 32
+
+
+
+
+ ITNS5
+ ITNS5
+ Interrupt Active bit
+ Register
+ 0x294
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ITNS
+ ITNS
+ 0
+ 32
+
+
+
+
+ ITNS6
+ ITNS6
+ Interrupt Active bit
+ Register
+ 0x298
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ITNS
+ ITNS
+ 0
+ 32
+
+
+
+
+ ITNS7
+ ITNS7
+ Interrupt Active bit
+ Register
+ 0x29C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ITNS
+ ITNS
+ 0
+ 32
+
+
+
+
+ ITNS8
+ ITNS8
+ Interrupt Active bit
+ Register
+ 0x2A0
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ITNS
+ ITNS
+ 0
+ 32
+
+
+
+
+ ITNS9
+ ITNS9
+ Interrupt Active bit
+ Register
+ 0x2A4
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ITNS
+ ITNS
+ 0
+ 32
+
+
+
+
+ ITNS10
+ ITNS10
+ Interrupt Active bit
+ Register
+ 0x2A8
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ITNS
+ ITNS
+ 0
+ 32
+
+
+
+
+ ITNS11
+ ITNS11
+ Interrupt Active bit
+ Register
+ 0x2AC
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ITNS
+ ITNS
+ 0
+ 32
+
+
+
+
+ ITNS12
+ ITNS12
+ Interrupt Active bit
+ Register
+ 0x2B0
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ITNS
+ ITNS
+ 0
+ 32
+
+
+
+
+ ITNS13
+ ITNS13
+ Interrupt Active bit
+ Register
+ 0x2B4
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ITNS
+ ITNS
+ 0
+ 32
+
+
+
+
+ ITNS14
+ ITNS14
+ Interrupt Active bit
+ Register
+ 0x2B8
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ITNS
+ ITNS
+ 0
+ 32
+
+
+
+
+ ITNS15
+ ITNS15
+ Interrupt Active bit
+ Register
+ 0x2BC
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ITNS
+ ITNS
+ 0
+ 32
+
+
+
+
+ IPR0
+ IPR0
+ Interrupt Priority Register 0
+ 0x300
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_00
+ PRI_00
+ 0
+ 8
+
+
+
+
+ IPR1
+ IPR1
+ Interrupt Priority Register 1
+ 0x301
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_01
+ PRI_01
+ 0
+ 8
+
+
+
+
+ IPR2
+ IPR2
+ Interrupt Priority Register 2
+ 0x302
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_02
+ PRI_02
+ 0
+ 8
+
+
+
+
+ IPR3
+ IPR3
+ Interrupt Priority Register 3
+ 0x303
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_03
+ PRI_03
+ 0
+ 8
+
+
+
+
+ IPR4
+ IPR4
+ Interrupt Priority Register 4
+ 0x304
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_04
+ PRI_04
+ 0
+ 8
+
+
+
+
+ IPR5
+ IPR5
+ Interrupt Priority Register 5
+ 0x305
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_05
+ PRI_05
+ 0
+ 8
+
+
+
+
+ IPR6
+ IPR6
+ Interrupt Priority Register 6
+ 0x306
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_06
+ PRI_06
+ 0
+ 8
+
+
+
+
+ IPR7
+ IPR7
+ Interrupt Priority Register 7
+ 0x307
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_07
+ PRI_07
+ 0
+ 8
+
+
+
+
+ IPR8
+ IPR8
+ Interrupt Priority Register 8
+ 0x308
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_08
+ PRI_08
+ 0
+ 8
+
+
+
+
+ IPR9
+ IPR9
+ Interrupt Priority Register 9
+ 0x309
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_09
+ PRI_09
+ 0
+ 8
+
+
+
+
+ IPR10
+ IPR10
+ Interrupt Priority Register 10
+ 0x30A
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_10
+ PRI_10
+ 0
+ 8
+
+
+
+
+ IPR11
+ IPR11
+ Interrupt Priority Register 11
+ 0x30B
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_11
+ PRI_11
+ 0
+ 8
+
+
+
+
+ IPR12
+ IPR12
+ Interrupt Priority Register 12
+ 0x30C
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_12
+ PRI_12
+ 0
+ 8
+
+
+
+
+ IPR13
+ IPR13
+ Interrupt Priority Register 13
+ 0x30D
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_13
+ PRI_13
+ 0
+ 8
+
+
+
+
+ IPR14
+ IPR14
+ Interrupt Priority Register 14
+ 0x30E
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_14
+ PRI_14
+ 0
+ 8
+
+
+
+
+ IPR15
+ IPR15
+ Interrupt Priority Register 15
+ 0x30F
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_15
+ PRI_15
+ 0
+ 8
+
+
+
+
+ IPR16
+ IPR16
+ Interrupt Priority Register 16
+ 0x310
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_16
+ PRI_16
+ 0
+ 8
+
+
+
+
+ IPR17
+ IPR17
+ Interrupt Priority Register 17
+ 0x311
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_17
+ PRI_17
+ 0
+ 8
+
+
+
+
+ IPR18
+ IPR18
+ Interrupt Priority Register 18
+ 0x312
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_18
+ PRI_18
+ 0
+ 8
+
+
+
+
+ IPR19
+ IPR19
+ Interrupt Priority Register 19
+ 0x313
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_19
+ PRI_19
+ 0
+ 8
+
+
+
+
+ IPR20
+ IPR20
+ Interrupt Priority Register 20
+ 0x314
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_20
+ PRI_20
+ 0
+ 8
+
+
+
+
+ IPR21
+ IPR21
+ Interrupt Priority Register 21
+ 0x315
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_21
+ PRI_21
+ 0
+ 8
+
+
+
+
+ IPR22
+ IPR22
+ Interrupt Priority Register 22
+ 0x316
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_22
+ PRI_22
+ 0
+ 8
+
+
+
+
+ IPR23
+ IPR23
+ Interrupt Priority Register 23
+ 0x317
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_23
+ PRI_23
+ 0
+ 8
+
+
+
+
+ IPR24
+ IPR24
+ Interrupt Priority Register 24
+ 0x318
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_24
+ PRI_24
+ 0
+ 8
+
+
+
+
+ IPR25
+ IPR25
+ Interrupt Priority Register 25
+ 0x319
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_25
+ PRI_25
+ 0
+ 8
+
+
+
+
+ IPR26
+ IPR26
+ Interrupt Priority Register 26
+ 0x31A
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_26
+ PRI_26
+ 0
+ 8
+
+
+
+
+ IPR27
+ IPR27
+ Interrupt Priority Register 27
+ 0x31B
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_27
+ PRI_27
+ 0
+ 8
+
+
+
+
+ IPR28
+ IPR28
+ Interrupt Priority Register 28
+ 0x31C
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_28
+ PRI_28
+ 0
+ 8
+
+
+
+
+ IPR29
+ IPR29
+ Interrupt Priority Register 29
+ 0x31D
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_29
+ PRI_29
+ 0
+ 8
+
+
+
+
+ IPR30
+ IPR30
+ Interrupt Priority Register 30
+ 0x31E
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_30
+ PRI_30
+ 0
+ 8
+
+
+
+
+ IPR31
+ IPR31
+ Interrupt Priority Register 31
+ 0x31F
+ 0x08
+ read-write
+ 0x00
+
+
+ PRI_31
+ PRI_31
+ 0
+ 8
+
+
+
+
+
+
+ PMU
+ Power management unit
+ PMU
+ 0x40007000
+
+ 0x0
+ 0x400
+ registers
+
+
+
+ CTL
+ CTL
+ power control register
+ 0x0
+ 0x20
+ read-write
+ 0x00004000
+
+
+ LDOVS
+ LDO output voltage select
+ 14
+ 2
+
+
+ BKPWEN
+ Backup Domain Write Enable
+ 8
+ 1
+
+
+ LVDT
+ Low Voltage Detector Threshold
+ 5
+ 3
+
+
+ LVDEN
+ Low Voltage Detector Enable
+ 4
+ 1
+
+
+ STBRST
+ Standby Flag Reset
+ 3
+ 1
+
+
+ WURST
+ Wakeup Flag Reset
+ 2
+ 1
+
+
+ STBMOD
+ Standby Mode
+ 1
+ 1
+
+
+ LDOLP
+ LDO Low Power Mode
+ 0
+ 1
+
+
+
+
+ CS
+ CS
+ power control/status register
+ 0x04
+ 0x20
+ 0x00000000
+
+
+ WUPEN6
+ WKUP pin6 Enable
+ 14
+ 1
+ read-write
+
+
+ WUPEN5
+ WKUP pin5 Enable
+ 13
+ 1
+ read-write
+
+
+ WUPEN1
+ WKUP pin1 Enable
+ 9
+ 1
+ read-write
+
+
+ WUPEN0
+ WKUP pin0 Enable
+ 8
+ 1
+ read-write
+
+
+ LVDF
+ Low Voltage Detector Status Flag
+ 2
+ 1
+ read-only
+
+
+ STBF
+ Standby flag
+ 1
+ 1
+ read-only
+
+
+ WUF
+ Wakeup flag
+ 0
+ 1
+ read-only
+
+
+
+
+
+
+ RCU
+ Reset and clock unit
+ RCU
+ 0x40021000
+
+ 0x0
+ 0x400
+ registers
+
+
+ RCU
+ 4
+
+
+
+ CTL0
+ CTL0
+ Control register 0
+ 0x0
+ 0x20
+ 0x00000083
+
+
+ PLLSTB
+ PLL Clock Stabilization Flag
+ 25
+ 1
+ read-only
+
+
+ PLLEN
+ PLL enable
+ 24
+ 1
+ read-write
+
+
+ CKMEN
+ HXTAL Clock Monitor Enable
+ 19
+ 1
+ read-write
+
+
+ HXTALBPS
+ External crystal oscillator (HXTAL) clock bypass mode enable
+ 18
+ 1
+ read-write
+
+
+ HXTALSTB
+ External crystal oscillator (HXTAL) clock stabilization flag
+ 17
+ 1
+ read-only
+
+
+ HXTALEN
+ External High Speed oscillator Enable
+ 16
+ 1
+ read-write
+
+
+ IRC8MCALIB
+ High Speed Internal Oscillator calibration value register
+ 8
+ 8
+ read-only
+
+
+ IRC8MADJ
+ High Speed Internal Oscillator clock trim adjust value
+ 3
+ 5
+ read-write
+
+
+ IRC8MSTB
+ IRC8M High Speed Internal Oscillator stabilization Flag
+ 1
+ 1
+ read-only
+
+
+ IRC8MEN
+ Internal High Speed oscillator Enable
+ 0
+ 1
+ read-write
+
+
+
+
+ CFG0
+ CFG0
+ Clock configuration register 0
+ (RCU_CFG0)
+ 0x04
+ 0x20
+ 0x00000000
+
+
+ PLLDV
+ The CK_PLL divide by 1 or 2 for CK_OUT
+
+ 31
+ 1
+ read-write
+
+
+ CKOUTDIV
+ The CK_OUT divider which the CK_OUT frequency can be reduced
+ 28
+ 3
+ read-write
+
+
+ PLLMF_MSB
+ Bit 4 of PLLMF register
+ 27
+ 1
+ read-write
+
+
+ CKOUTSEL
+ CK_OUT Clock Source Selection
+ 24
+ 3
+ read-write
+
+
+ PLLMF
+ PLL multiply factor
+ 18
+ 4
+ read-write
+
+
+ PLLPREDV
+ HXTAL divider for PLL source clock selection.
+ 17
+ 1
+ read-write
+
+
+ PLLSEL
+ PLL Clock Source Selection
+ 16
+ 1
+ read-write
+
+
+ ADCPSC
+ ADC clock prescaler selection
+ 14
+ 2
+ read-write
+
+
+ APB2PSC
+ APB2 prescaler selection
+ 11
+ 3
+ read-write
+
+
+ APB1PSC
+ APB1 prescaler selection
+ 8
+ 3
+ read-write
+
+
+ AHBPSC
+ AHB prescaler selection
+ 4
+ 4
+ read-write
+
+
+ SCSS
+ System clock switch status
+ 2
+ 2
+ read-only
+
+
+ SCS
+ System clock switch
+ 0
+ 2
+ read-write
+
+
+
+
+ INT
+ INT
+ Clock interrupt register
+ (RCU_INT)
+ 0x08
+ 0x20
+ 0x00000000
+
+
+ CKMIC
+ HXTAL Clock Stuck Interrupt Clear
+ 23
+ 1
+ write-only
+
+
+ IRC28MSTBIC
+ IRC28M stabilization Interrupt Clear
+ 21
+ 1
+ write-only
+
+
+ PLLSTBIC
+ PLL stabilization Interrupt Clear
+ 20
+ 1
+ write-only
+
+
+ HXTALSTBIC
+ HXTAL Stabilization Interrupt Clear
+ 19
+ 1
+ write-only
+
+
+ IRC8MSTBIC
+ IRC8M Stabilization Interrupt Clear
+ 18
+ 1
+ write-only
+
+
+ LXTALSTBIC
+ LXTAL Stabilization Interrupt Clear
+ 17
+ 1
+ write-only
+
+
+ IRC40KSTBIC
+ IRC40K Stabilization Interrupt Clear
+ 16
+ 1
+ write-only
+
+
+ IRC28MSTBIE
+ IRC28M Stabilization Interrupt Enable
+ 13
+ 1
+ read-write
+
+
+ PLLSTBIE
+ PLL Stabilization Interrupt Enable
+ 12
+ 1
+ read-write
+
+
+ HXTALSTBIE
+ HXTAL Stabilization Interrupt Enable
+ 11
+ 1
+ read-write
+
+
+ IRC8MSTBIE
+ IRC8M Stabilization Interrupt Enable
+ 10
+ 1
+ read-write
+
+
+ LXTALSTBIE
+ LXTAL Stabilization Interrupt Enable
+ 9
+ 1
+ read-write
+
+
+ IRC40KSTBIE
+ IRC40K Stabilization interrupt enable
+ 8
+ 1
+ read-write
+
+
+ CKMIF
+ HXTAL Clock Stuck Interrupt Flag
+ 7
+ 1
+ read-only
+
+
+ IRC28MSTBIF
+ IRC28M stabilization interrupt flag
+ 5
+ 1
+ read-only
+
+
+ PLLSTBIF
+ PLL stabilization interrupt flag
+ 4
+ 1
+ read-only
+
+
+ HXTALSTBIF
+ HXTAL stabilization interrupt flag
+ 3
+ 1
+ read-only
+
+
+ IRC8MSTBIF
+ IRC8M stabilization interrupt flag
+ 2
+ 1
+ read-only
+
+
+ LXTALSTBIF
+ LXTAL stabilization interrupt flag
+ 1
+ 1
+ read-only
+
+
+ IRC40KSTBIF
+ IRC40K stabilization interrupt flag
+ 0
+ 1
+ read-only
+
+
+
+
+ APB2RST
+ APB2RST
+ APB2 reset register
+ (RCU_APB2RST)
+ 0x0C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ TIMER16RST
+ TIMER16 reset
+ 18
+ 1
+
+
+ TIMER15RST
+ TIMER15 reset
+ 17
+ 1
+
+
+ TIMER14RST
+ TIMER14 reset
+ 16
+ 1
+
+
+ USART0RST
+ USART0 Reset
+ 14
+ 1
+
+
+ SPI0RST
+ SPI0 Reset
+ 12
+ 1
+
+
+ TIMER0RST
+ TIMER0 reset
+ 11
+ 1
+
+
+ ADCRST
+ ADC reset
+ 9
+ 1
+
+
+ CFGCMPRST
+ System configuration and comparator reset
+ 0
+ 1
+
+
+
+
+ APB1RST
+ APB1RST
+ APB1 reset register
+ (RCU_APB1RST)
+ 0x10
+ 0x20
+ read-write
+ 0x00000000
+
+
+ PMURST
+ Power control reset
+ 28
+ 1
+
+
+ I2C1RST
+ I2C1 reset
+ 22
+ 1
+
+
+ I2C0RST
+ I2C0 reset
+ 21
+ 1
+
+
+ USART1RST
+ USART1 reset
+ 17
+ 1
+
+
+ SPI1RST
+ SPI1 reset
+ 14
+ 1
+
+
+ WWDGTRST
+ Window watchdog timer reset
+ 11
+ 1
+
+
+ TIMER13RST
+ TIMER13 timer reset
+ 8
+ 1
+
+
+ TIMER5RST
+ TIMER5 timer reset
+ 4
+ 1
+
+
+ TIMER2RST
+ TIMER2 timer reset
+ 1
+ 1
+
+
+
+
+ AHBEN
+ AHBEN
+ AHB enable register
+ (RCU_AHBEN)
+ 0x14
+ 0x20
+ read-write
+ 0x00000014
+
+
+ PFEN
+ GPIO port F clock enable
+ 22
+ 1
+
+
+ PCEN
+ GPIO port C clock enable
+ 19
+ 1
+
+
+ PBEN
+ GPIO port B clock enable
+ 18
+ 1
+
+
+ PAEN
+ GPIO port A clock enable
+ 17
+ 1
+
+
+ CRCEN
+ CRC clock enable
+ 6
+ 1
+
+
+ FMCSPEN
+ FMC clock during sleep mode enable
+ 4
+ 1
+
+
+ SRAMSPEN
+ SRAM interface clock during sleep mode enable
+ 2
+ 1
+
+
+ DMAEN
+ DMA clock enable
+ 0
+ 1
+
+
+
+
+ APB2EN
+ APB2EN
+ APB2 enable register
+ (RCU_APB2EN)
+ 0x18
+ 0x20
+ read-write
+ 0x00000000
+
+
+ DBGMCUEN
+ DBGMCU clock enable
+ 22
+ 1
+
+
+ TIMER16EN
+ TIMER16 timer clock enable
+ 18
+ 1
+
+
+ TIMER15EN
+ TIMER15 timer clock enable
+ 17
+ 1
+
+
+ TIMER14EN
+ TIMER14 timer clock enable
+ 16
+ 1
+
+
+ USART0EN
+ USART0 clock enable
+ 14
+ 1
+
+
+ SPI0EN
+ SPI0 clock enable
+ 12
+ 1
+
+
+ TIMER0EN
+ TIMER0 timer clock enable
+ 11
+ 1
+
+
+ ADCEN
+ ADC interface clock enable
+ 9
+ 1
+
+
+ CFGCMPEN
+ System configuration and comparator clock enable
+ 0
+ 1
+
+
+
+
+ APB1EN
+ APB1EN
+ APB1 enable register
+ (RCU_APB1EN)
+ 0x1C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ PMUEN
+ Power interface clock enable
+ 28
+ 1
+
+
+ I2C1EN
+ I2C1 clock enable
+ 22
+ 1
+
+
+ I2C0EN
+ I2C0 clock enable
+ 21
+ 1
+
+
+ USART1EN
+ USART1 clock enable
+ 17
+ 1
+
+
+ SPI1EN
+ SPI1 clock enable
+ 14
+ 1
+
+
+ WWDGTEN
+ Window watchdog timer clock enable
+ 11
+ 1
+
+
+ TIMER13EN
+ TIMER13 timer clock enable
+ 8
+ 1
+
+
+ TIMER5EN
+ TIMER5 timer clock enable
+ 4
+ 1
+
+
+ TIMER2EN
+ TIMER2 timer clock enable
+ 1
+ 1
+
+
+
+
+ BDCTL
+ BDCTL
+ Backup domain control register
+ (RCU_BDCTL)
+ 0x20
+ 0x20
+ 0x00000018
+
+
+ BKPRST
+ Backup domain reset
+ 16
+ 1
+ read-write
+
+
+ RTCEN
+ RTC clock enable
+ 15
+ 1
+ read-write
+
+
+ RTCSRC
+ RTC clock entry selection
+ 8
+ 2
+ read-write
+
+
+ LXTALDRI
+ LXTAL drive capability
+ 3
+ 2
+ read-write
+
+
+ LXTALBPS
+ LXTAL bypass mode enable
+ 2
+ 1
+ read-write
+
+
+ LXTALSTB
+ External low-speed oscillator stabilization
+ 1
+ 1
+ read-only
+
+
+ LXTALEN
+ LXTAL enable
+ 0
+ 1
+ read-write
+
+
+
+
+ RSTSCK
+ RSTSCK
+ Reset source /clock register
+ (RCU_RSTSCK)
+ 0x24
+ 0x20
+ 0x0C000000
+
+
+ LPRSTF
+ Low-power reset flag
+ 31
+ 1
+ read-write
+
+
+ WWDGTRSTF
+ Window watchdog timer reset flag
+ 30
+ 1
+ read-write
+
+
+ FWDGTRSTF
+ Free Watchdog timer reset flag
+ 29
+ 1
+ read-write
+
+
+ SWRSTF
+ Software reset flag
+ 28
+ 1
+ read-write
+
+
+ PORRSTF
+ Power reset flag
+ 27
+ 1
+ read-write
+
+
+ EPRSTF
+ External PIN reset flag
+ 26
+ 1
+ read-write
+
+
+ OBLRSTF
+ Option byte loader reset flag
+ 25
+ 1
+ read-write
+
+
+ RSTFC
+ Reset flag clear
+ 24
+ 1
+ read-write
+
+
+ V12RSTF
+ V12 domain Power reset flag
+ 23
+ 1
+ read-write
+
+
+ IRC40KSTB
+ IRC40K stabilization
+ 1
+ 1
+ read-only
+
+
+ IRC40KEN
+ IRC40K enable
+ 0
+ 1
+ read-write
+
+
+
+
+ AHBRST
+ AHBRST
+ AHB reset register
+ 0x28
+ 0x20
+ read-write
+ 0x00000000
+
+
+ PFRST
+ GPIO port F reset
+ 22
+ 1
+
+
+ PCRST
+ GPIO port C reset
+ 19
+ 1
+
+
+ PBRST
+ GPIO port B reset
+ 18
+ 1
+
+
+ PARST
+ GPIO port A reset
+ 17
+ 1
+
+
+
+
+ CFG1
+ CFG1
+ Configuration register 1
+ 0x2C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ PREDV
+ CK_HXTAL or CK_IRC48M divider previous PLL
+ 0
+ 4
+
+
+
+
+ CFG2
+ CFG2
+ Configuration register 2
+ 0x30
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ADCPSC
+ Bit 2 of ADCPSC
+ 31
+ 1
+
+
+ IRC28MDIV
+ CK_IRC28M divider 2 or not
+ 16
+ 1
+
+
+ ADCSEL
+ CK_ADC clock source selection
+ 8
+ 1
+
+
+ USART0SEL
+ CK_USART0 clock source selection
+ 0
+ 2
+
+
+
+
+ CTL1
+ CTL1
+ Control register 1
+ 0x34
+ 0x20
+ 0x00000080
+
+
+ IRC28MCALIB
+ Internal 28M RC Oscillator calibration value register
+ 8
+ 8
+ read-only
+
+
+ IRC28MADJ
+ Internal 28M RC Oscillator clock trim adjust value
+ 3
+ 5
+ read-write
+
+
+ IRC28MSTB
+ IRC28M Internal 28M RC Oscillator stabilization Flag
+ 1
+ 1
+ read-only
+
+
+ IRC28MEN
+ IRC28M Internal 28M RC oscillator Enable
+ 0
+ 1
+ read-write
+
+
+
+
+ VKEY
+ VKEY
+ Voltage key register
+ 0x100
+ 0x20
+ 0x00000000
+
+
+ KEY
+ The key of RCU_DSV register
+ 0
+ 32
+ write
+
+
+
+
+ DSV
+ DSV
+ Deep-sleep mode voltage register
+ 0x134
+ 0x20
+ 0x00000000
+
+
+ DSLPVS
+ Deep-sleep mode voltage select
+ 0
+ 2
+ read-write
+
+
+
+
+
+
+ RTC
+ Real-time clock
+ RTC
+ 0x40002800
+
+ 0x0
+ 0x400
+ registers
+
+
+ RTC
+ 2
+
+
+
+ TIME
+ TIME
+ time register
+ 0x0
+ 0x20
+ read-write
+ 0x00000000
+
+
+ PM
+ AM/PM mark
+ 22
+ 1
+
+
+ HRT
+ Hour tens in BCD code
+ 20
+ 2
+
+
+ HRU
+ Hour units in BCD format
+ 16
+ 4
+
+
+ MNT
+ Minute tens in BCD code
+ 12
+ 3
+
+
+ MNU
+ Minute units in BCD code
+ 8
+ 4
+
+
+ SCT
+ Second tens in BCD code
+ 4
+ 3
+
+
+ SCU
+ Second units in BCD code
+ 0
+ 4
+
+
+
+
+ DATE
+ DATE
+ date register
+ 0x4
+ 0x20
+ read-write
+ 0x00002101
+
+
+ YRT
+ Year tens in BCD code
+ 20
+ 4
+
+
+ YRU
+ Year units in BCD code
+ 16
+ 4
+
+
+ DOW
+ Days of the week
+ 13
+ 3
+
+
+ MONT
+ Month tens in BCD code
+ 12
+ 1
+
+
+ MONU
+ Month units in BCD code
+ 8
+ 4
+
+
+ DAYT
+ Date tens in BCD code
+ 4
+ 2
+
+
+ DAYU
+ Date units in BCD code
+ 0
+ 4
+
+
+
+
+ CTL
+ CTL
+ control register
+ 0x8
+ 0x20
+ 0x00000000
+
+
+ COEN
+ Calibration output enable
+ 23
+ 1
+ read-write
+
+
+ OS
+ Output selection
+ 21
+ 2
+ read-write
+
+
+ OPOL
+ Output polarity
+ 20
+ 1
+ read-write
+
+
+ COS
+ Calibration output
+ selection
+ 19
+ 1
+ read-write
+
+
+ DSM
+ Backup
+ 18
+ 1
+ read-write
+
+
+ S1H
+ Subtract 1 hour (winter time
+ change)
+ 17
+ 1
+ write-only
+
+
+ A1H
+ Add 1 hour (summer time
+ change)
+ 16
+ 1
+ write-only
+
+
+ TSIE
+ Time-stamp interrupt
+ enable
+ 15
+ 1
+ read-write
+
+
+ ALRM0IE
+ Alarm A interrupt enable
+ 12
+ 1
+ read-write
+
+
+ TSEN
+ timestamp enable
+ 11
+ 1
+ read-write
+
+
+ ALRM0EN
+ Alarm A enable
+ 8
+ 1
+ read-write
+
+
+ CS
+ Hour format
+ 6
+ 1
+ read-write
+
+
+ BPSHAD
+ Bypass the shadow
+ registers
+ 5
+ 1
+ read-write
+
+
+ REFEN
+ RTC_REFIN reference clock detection
+ enable (50 or 60 Hz)
+ 4
+ 1
+ read-write
+
+
+ TSEG
+ Time-stamp event active
+ edge
+ 3
+ 1
+ read-write
+
+
+
+
+ STAT
+ STAT
+ initialization and status
+ register
+ 0xC
+ 0x20
+ 0x00000007
+
+
+ SCPF
+ Recalibration pending Flag
+ 16
+ 1
+ read-only
+
+
+ TP1F
+ RTC_TAMP1 detection flag
+ 14
+ 1
+ read-write
+
+
+ TP0F
+ RTC_TAMP0 detection flag
+ 13
+ 1
+ read-write
+
+
+ TSOVRF
+ Time-stamp overflow flag
+ 12
+ 1
+ read-write
+
+
+ TSF
+ Time-stamp flag
+ 11
+ 1
+ read-write
+
+
+ ALRM0F
+ Alarm A flag
+ 8
+ 1
+ read-write
+
+
+ INITM
+ Initialization mode
+ 7
+ 1
+ read-write
+
+
+ INITF
+ Initialization flag
+ 6
+ 1
+ read-only
+
+
+ RSYNF
+ Registers synchronization
+ flag
+ 5
+ 1
+ read-write
+
+
+ YCM
+ Initialization status flag
+ 4
+ 1
+ read-only
+
+
+ SOPF
+ Shift operation pending
+ 3
+ 1
+ read-only
+
+
+ ALRM0WF
+ Alarm A write flag
+ 0
+ 1
+ read-only
+
+
+
+
+ PSC
+ PSC
+ prescaler register
+ 0x10
+ 0x20
+ read-write
+ 0x007F00FF
+
+
+ FACTOR_A
+ Asynchronous prescaler
+ factor
+ 16
+ 7
+
+
+ FACTOR_S
+ Synchronous prescaler
+ factor
+ 0
+ 15
+
+
+
+
+ ALRM0TD
+ ALRM0TD
+ alarm A register
+ 0x1C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ MSKD
+ Alarm date mask
+ 31
+ 1
+
+
+ DOWS
+ Week day selection
+ 30
+ 1
+
+
+ DAYT
+ Date tens in BCD format.
+ 28
+ 2
+
+
+ DAYU
+ Date units or day in BCD
+ format.
+ 24
+ 4
+
+
+ MSKH
+ Alarm hours mask
+ 23
+ 1
+
+
+ PM
+ AM/PM notation
+ 22
+ 1
+
+
+ HRT
+ Hour tens in BCD format.
+ 20
+ 2
+
+
+ HRU
+ Hour units in BCD format.
+ 16
+ 4
+
+
+ MSKM
+ Alarm minutes mask
+ 15
+ 1
+
+
+ MNT
+ Minute tens in BCD format.
+ 12
+ 3
+
+
+ MNU
+ Minute units in BCD
+ format.
+ 8
+ 4
+
+
+ MSKS
+ Alarm seconds mask
+ 7
+ 1
+
+
+ SCT
+ Second tens in BCD format.
+ 4
+ 3
+
+
+ SCU
+ Second units in BCD
+ format.
+ 0
+ 4
+
+
+
+
+ WPK
+ WPK
+ write protection register
+ 0x24
+ 0x20
+ write-only
+ 0x00000000
+
+
+ WPK
+ Write protection key
+ 0
+ 8
+
+
+
+
+ SS
+ SS
+ sub second register
+ 0x28
+ 0x20
+ read-only
+ 0x00000000
+
+
+ SSC
+ Sub second value
+ 0
+ 16
+
+
+
+
+ SHIFTCTL
+ SHIFTCTL
+ shift control register
+ 0x2C
+ 0x20
+ write-only
+ 0x00000000
+
+
+ A1S
+ One second add
+ 31
+ 1
+
+
+ SFS
+ Subtract a fraction of a
+ second
+ 0
+ 15
+
+
+
+
+ TTS
+ TTS
+ timestamp time register
+ 0x30
+ 0x20
+ read-only
+ 0x00000000
+
+
+ PM
+ AM/PM mark
+ 22
+ 1
+
+
+ HRT
+ Hour tens in BCD code
+ 20
+ 2
+
+
+ HRU
+ Hour units in BCD code
+ 16
+ 4
+
+
+ MNT
+ Minute tens in BCD code
+ 12
+ 3
+
+
+ MNU
+ Minute units in BCD code
+ 8
+ 4
+
+
+ SCT
+ Second tens in BCD code
+ 4
+ 3
+
+
+ SCU
+ Second units in BCD code
+ 0
+ 4
+
+
+
+
+ DTS
+ DTS
+ Date of time stamp register
+ 0x34
+ 0x20
+ read-only
+ 0x00000000
+
+
+ DOW
+ Week day units
+ 13
+ 3
+
+
+ MONT
+ Month tens in BCD code
+ 12
+ 1
+
+
+ MONU
+ Month units in BCD code
+ 8
+ 4
+
+
+ DAYT
+ Date tens in BCD code
+ 5
+ 2
+
+
+ DAYU
+ Date units in BCD code
+ 0
+ 5
+
+
+
+
+ SSTS
+ SSTS
+ time-stamp sub second register
+ 0x38
+ 0x20
+ read-only
+ 0x00000000
+
+
+ SSC
+ Sub second value
+ 0
+ 16
+
+
+
+
+ HRFC
+ HRFC
+ High resolution frequency compensation register
+ 0x3C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ FREQI
+ Increase RTC frequency by 488.5PPM
+ 15
+ 1
+
+
+ CWND8
+ Frequency compensation window 8 second selected
+ 14
+ 1
+
+
+ CWND16
+ Frequency compensation window 16 second selected
+ 13
+ 1
+
+
+ CMSK
+ Calibration mask number
+ 0
+ 9
+
+
+
+
+ TAMP
+ TAMP
+ tamper and alternate function configuration
+ register
+ 0x40
+ 0x20
+ read-write
+ 0x00000000
+
+
+ PC15MDE
+ PC15 mode
+ 23
+ 1
+
+
+ PC15VAL
+ PC15 value
+ 22
+ 1
+
+
+ PC14MDE
+ PC14 mode
+ 21
+ 1
+
+
+ PC14VAL
+ PC14 value
+ 20
+ 1
+
+
+ PC13MDE
+ PC13 mode
+ 19
+ 1
+
+
+ PC13VAL
+ RTC_ALARM output type/PC13
+ value
+ 18
+ 1
+
+
+ DISPU
+ RTC_TAMPx pull-up disable
+ 15
+ 1
+
+
+ PRCH
+ RTC_TAMPx precharge
+ duration
+ 13
+ 2
+
+
+ FLT
+ RTC_TAMPx filter count
+ 11
+ 2
+
+
+ FREQ
+ Tamper sampling frequency
+ 8
+ 3
+
+
+ TPTS
+ Activate timestamp on tamper detection
+ event
+ 7
+ 1
+
+
+ TP1EG
+ Tamper 1 event trigger edge
+ 4
+ 1
+
+
+ TP1EN
+ Tamper 1 detection enable
+ 3
+ 1
+
+
+ TPIE
+ Tamper detection interrupt enable
+ 2
+ 1
+
+
+ TP0EG
+ Active level for RTC_TAMP1
+ input
+ 1
+ 1
+
+
+ TP0EN
+ Tamper 0 event trigger edge
+ 0
+ 1
+
+
+
+
+ ALRM0SS
+ ALRM0SS
+ alarm 0 sub second register
+ 0x44
+ 0x20
+ read-write
+ 0x00000000
+
+
+ MSKSSC
+ Mask control bit of SSC
+ 24
+ 4
+
+
+ SSC
+ Alarm sub second value
+ 0
+ 15
+
+
+
+
+ BKP0
+ BKP0
+ backup register
+ 0x50
+ 0x20
+ read-write
+ 0x00000000
+
+
+ DATA
+ BKP data
+ 0
+ 32
+
+
+
+
+ BKP1
+ BKP1
+ backup register
+ 0x54
+ 0x20
+ read-write
+ 0x00000000
+
+
+ DATA
+ BKP data
+ 0
+ 32
+
+
+
+
+ BKP2
+ BKP2
+ backup register
+ 0x58
+ 0x20
+ read-write
+ 0x00000000
+
+
+ DATA
+ BKP data
+ 0
+ 32
+
+
+
+
+ BKP3
+ BKP3
+ backup register
+ 0x5C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ DATA
+ BKP data
+ 0
+ 32
+
+
+
+
+ BKP4
+ BKP4
+ backup register
+ 0x60
+ 0x20
+ read-write
+ 0x00000000
+
+
+ DATA
+ BKP data
+ 0
+ 32
+
+
+
+
+
+
+ SPI0
+ Serial peripheral interface
+ SPI
+ 0x40013000
+
+ 0x0
+ 0x400
+ registers
+
+
+ SPI0
+ 25
+
+
+
+ CTL0
+ CTL0
+ control register 0
+ 0x0
+ 0x20
+ read-write
+ 0x0000
+
+
+ BDEN
+ Bidirectional enable
+ 15
+ 1
+
+
+ BDOEN
+ Bidirectional Transmit output enable
+ 14
+ 1
+
+
+ CRCEN
+ Hardware CRC calculation enable
+ 13
+ 1
+
+
+ CRCNT
+ CRC transfer next
+ 12
+ 1
+
+
+ FF16
+ Data frame format
+ 11
+ 1
+
+
+ RO
+ Receive only
+ 10
+ 1
+
+
+ SWNSSEN
+ NSS Software Mode Selection
+ 9
+ 1
+
+
+ SWNSS
+ NSS Pin Selection In NSS Software Mode
+ 8
+ 1
+
+
+ LF
+ LSB First Mode
+ 7
+ 1
+
+
+ SPIEN
+ SPI enable
+ 6
+ 1
+
+
+ PSC
+ Master Clock Prescaler Selection
+ 3
+ 3
+
+
+ MSTMOD
+ Master Mode Enable
+ 2
+ 1
+
+
+ CKPL
+ Clock Polarity Selection
+ 1
+ 1
+
+
+ CKPH
+ Clock Phase Selection
+ 0
+ 1
+
+
+
+
+ CTL1
+ CTL1
+ control register 1
+ 0x04
+ 0x20
+ read-write
+ 0x0000
+
+
+ TBEIE
+ Transmit Buffer Empty Interrupt Enable
+ 7
+ 1
+
+
+ RBNEIE
+ Receive Buffer Not Empty Interrupt Enable
+ 6
+ 1
+
+
+ ERRIE
+ Error interrupt enable
+ 5
+ 1
+
+
+ TMOD
+ SPI TI Mode Enable
+ 4
+ 1
+
+
+ NSSP
+ SPI NSS Pulse Mode Enable
+ 3
+ 1
+
+
+ NSSDRV
+ NSS output enable
+ 2
+ 1
+
+
+ DMATEN
+ Tx buffer DMA enable
+ 1
+ 1
+
+
+ DMAREN
+ Rx buffer DMA enable
+ 0
+ 1
+
+
+
+
+ STAT
+ STAT
+ status register
+ 0x08
+ 0x20
+ 0x0002
+
+
+ FERR
+ Format Error
+ 8
+ 1
+ read-write
+
+
+ TRANS
+ Transmitting On-going Bit
+ 7
+ 1
+ read-only
+
+
+ RXORERR
+ Reception Overrun Error Bit
+ 6
+ 1
+ read-only
+
+
+ CONFERR
+ SPI Configuration error
+ 5
+ 1
+ read-only
+
+
+ CRCERR
+ SPI CRC Error Bit
+ 4
+ 1
+ read-write
+
+
+ TXURERR
+ Transmission underrun error bit
+ 3
+ 1
+ read-only
+
+
+ I2SCH
+ I2S channel side
+ 2
+ 1
+ read-only
+
+
+ TBE
+ Transmit Buffer Empty
+ 1
+ 1
+ read-only
+
+
+ RBNE
+ Receive Buffer Not Empty
+ 0
+ 1
+ read-only
+
+
+
+
+ DATA
+ DATA
+ data register
+ 0x0C
+ 0x20
+ read-write
+ 0x0000
+
+
+ DATA
+ Data register
+ 0
+ 16
+
+
+
+
+ CPCPOLY
+ CPCPOLY
+ CRC polynomial register
+ 0x10
+ 0x20
+ read-write
+ 0x0007
+
+
+ CRCPOLY
+ CRC polynomial register
+ 0
+ 16
+
+
+
+
+ RCRC
+ RCRC
+ RX CRC register
+ 0x14
+ 0x20
+ read-only
+ 0x0000
+
+
+ RCRC
+ RX RCR register
+ 0
+ 16
+
+
+
+
+ TCRC
+ TCRC
+ TX CRC register
+ 0x18
+ 0x20
+ read-only
+ 0x0000
+
+
+ TCRC
+ Tx CRC register
+ 0
+ 16
+
+
+
+
+ I2SCTL
+ I2SCTL
+ I2S configuration register
+ 0x1C
+ 0x20
+ read-write
+ 0x0000
+
+
+ I2SSEL
+ I2S mode selection
+ 11
+ 1
+
+
+ I2SEN
+ I2S Enable
+ 10
+ 1
+
+
+ I2SOPMOD
+ I2S configuration mode
+ 8
+ 2
+
+
+ PCMSMOD
+ PCM frame synchronization
+ 7
+ 1
+
+
+ I2SSTD
+ I2S standard selection
+ 4
+ 2
+
+
+ CKPL
+ Idle state clock polarity
+ 3
+ 1
+
+
+ DTLEN
+ Data length to be
+ transferred
+ 1
+ 2
+
+
+ CHLEN
+ Channel length (number of bits per audio
+ channel)
+ 0
+ 1
+
+
+
+
+ I2SPSC
+ I2SPSC
+ I2S prescaler register
+ 0x20
+ 0x20
+ read-write
+ 0x0002
+
+
+ MCKOEN
+ I2S_MCK output enable
+ 9
+ 1
+
+
+ OF
+ Odd factor for the
+ prescaler
+ 8
+ 1
+
+
+ DIV
+ Dividing factor for the prescaler
+ 0
+ 8
+
+
+
+
+
+
+ SPI1
+ Serial Peripheral Interface 1
+ 0x40003800
+
+ 0x0
+ 0x400
+ registers
+
+
+ SPI1
+ 26
+
+
+
+ CTL0
+ CTL0
+ control register 0
+ 0x0
+ 0x20
+ read-write
+ 0x0000
+
+
+ BDEN
+ Bidirectional enable
+ 15
+ 1
+
+
+ BDOEN
+ Bidirectional Transmit output enable
+ 14
+ 1
+
+
+ CRCEN
+ Hardware CRC calculation enable
+ 13
+ 1
+
+
+ CRCNT
+ CRC transfer next
+ 12
+ 1
+
+
+ CRCL
+ CRC length
+ 11
+ 1
+
+
+ RO
+ Receive only
+ 10
+ 1
+
+
+ SWNSSEN
+ NSS Software Mode Selection
+ 9
+ 1
+
+
+ SWNSS
+ NSS Pin Selection In NSS Software Mode
+ 8
+ 1
+
+
+ LF
+ LSB First Mode
+ 7
+ 1
+
+
+ SPIEN
+ SPI enable
+ 6
+ 1
+
+
+ PSC
+ Master Clock Prescaler Selection
+ 3
+ 3
+
+
+ MSTMOD
+ Master Mode Enable
+ 2
+ 1
+
+
+ CKPL
+ Clock Polarity Selection
+ 1
+ 1
+
+
+ CKPH
+ Clock Phase Selection
+ 0
+ 1
+
+
+
+
+ CTL1
+ CTL1
+ control register 1
+ 0x04
+ 0x20
+ read-write
+ 0x0000
+
+
+ TXDMA_ODD
+ Odd bytes in TX DMA channel
+ 14
+ 1
+
+
+ RXDMA_ODD
+ Odd bytes in RX DMA channel
+ 13
+ 1
+
+
+ BYTEN
+ Byte access enable
+ 12
+ 1
+
+
+ DZ
+ Date size
+ 8
+ 4
+
+
+ TBEIE
+ Transmit Buffer Empty Interrupt Enable
+ 7
+ 1
+
+
+ RBNEIE
+ Receive Buffer Not Empty Interrupt Enable
+ 6
+ 1
+
+
+ ERRIE
+ Error interrupt enable
+ 5
+ 1
+
+
+ TMOD
+ SPI TI Mode Enable
+ 4
+ 1
+
+
+ NSSP
+ SPI NSS Pulse Mode Enable
+ 3
+ 1
+
+
+ NSSDRV
+ NSS output enable
+ 2
+ 1
+
+
+ DMATEN
+ Tx buffer DMA enable
+ 1
+ 1
+
+
+ DMAREN
+ Rx buffer DMA enable
+ 0
+ 1
+
+
+
+
+ STAT
+ STAT
+ status register
+ 0x08
+ 0x20
+ 0x0002
+
+
+ TXLVL
+ Tx FIFO level
+ 11
+ 2
+ read-only
+
+
+ RXLVL
+ Rx FIFO level
+ 9
+ 2
+ read-only
+
+
+ FERR
+ Format Error
+ 8
+ 1
+ read-write
+
+
+ TRANS
+ Transmitting On-going Bit
+ 7
+ 1
+ read-only
+
+
+ RXORERR
+ Reception Overrun Error Bit
+ 6
+ 1
+ read-only
+
+
+ CONFERR
+ SPI Configuration error
+ 5
+ 1
+ read-only
+
+
+ CRCERR
+ SPI CRC Error Bit
+ 4
+ 1
+ read-write
+
+
+ TBE
+ Transmit Buffer Empty
+ 1
+ 1
+ read-only
+
+
+ RBNE
+ Receive Buffer Not Empty
+ 0
+ 1
+ read-only
+
+
+
+
+ DATA
+ DATA
+ data register
+ 0x0C
+ 0x20
+ read-write
+ 0x0000
+
+
+ DATA
+ Data register
+ 0
+ 16
+
+
+
+
+ CPCPOLY
+ CPCPOLY
+ CRC polynomial register
+ 0x10
+ 0x20
+ read-write
+ 0x0007
+
+
+ CRCPOLY
+ CRC polynomial register
+ 0
+ 16
+
+
+
+
+ RCRC
+ RCRC
+ RX CRC register
+ 0x14
+ 0x20
+ read-only
+ 0x0000
+
+
+ RCRC
+ RX RCR register
+ 0
+ 16
+
+
+
+
+ TCRC
+ TCRC
+ TX CRC register
+ 0x18
+ 0x20
+ read-only
+ 0x0000
+
+
+ TCRC
+ Tx CRC register
+ 0
+ 16
+
+
+
+
+ I2SCTL
+ I2SCTL
+ I2S configuration register
+ 0x1C
+ 0x20
+ read-write
+ 0x0000
+
+
+ I2SSEL
+ I2S mode selection
+ 11
+ 1
+
+
+ I2SEN
+ I2S Enable
+ 10
+ 1
+
+
+ I2SOPMOD
+ I2S configuration mode
+ 8
+ 2
+
+
+ PCMSMOD
+ PCM frame synchronization
+ 7
+ 1
+
+
+ I2SSTD
+ I2S standard selection
+ 4
+ 2
+
+
+ CKPL
+ Idle state clock polarity
+ 3
+ 1
+
+
+ DTLEN
+ Data length to be
+ transferred
+ 1
+ 2
+
+
+ CHLEN
+ Channel length (number of bits per audio
+ channel)
+ 0
+ 1
+
+
+
+
+ I2SPSC
+ I2SPSC
+ I2S prescaler register
+ 0x20
+ 0x20
+ read-write
+ 0x0002
+
+
+ MCKOEN
+ I2S_MCK output enable
+ 9
+ 1
+
+
+ OF
+ Odd factor for the
+ prescaler
+ 8
+ 1
+
+
+ DIV
+ Dividing factor for the prescaler
+ 0
+ 8
+
+
+
+
+ QCTL
+ QCTL
+ SPI quad wird control register
+ 0x80
+ 0x20
+ read-write
+ 0000
+
+
+ IO23_DRV
+ Drive IO2 and IO3 enable
+ 2
+ 1
+
+
+ QRD
+ Quad wire read select
+ 1
+ 1
+
+
+ QMOD
+ Quad wire mode enable
+ 0
+ 1
+
+
+
+
+
+
+
+ SYSCFG
+ System configuration controller
+ SYSCFG
+ 0x40010000
+
+ 0x0
+ 0x0400
+ registers
+
+
+
+ CFG0
+ CFG0
+ System configuration register 0
+ 0x0
+ 0x20
+ read-write
+ 0x00000000
+
+
+ PB9_HCCE
+ PB9 pin high current capability enable
+ 19
+ 1
+
+
+ TIMER16_DMA_RMP
+ Timer 16 DMA request remapping enable
+ 12
+ 1
+
+
+ TIMER15_DMA_RMP
+ Timer 15 DMA request remapping enable
+ 11
+ 1
+
+
+ USART0_RX_DMA_RMP
+ USART0_RX DMA request remapping enable
+ 10
+ 1
+
+
+ USART0_TX_DMA_RMP
+ USART0_TX DMA request remapping enable
+ 9
+ 1
+
+
+ ADC_DMA_RMP
+ ADC DMA request remapping enable
+ 8
+ 1
+
+
+ PA11_PA12_RMP
+ PA11 and PA12 remapping bit for small packages
+ 4
+ 1
+
+
+ BOOT_MODE
+ Boot mode
+ 0
+ 2
+ read-only
+
+
+
+
+ EXTISS0
+ EXTISS0
+ EXTI sources selection register
+ 0
+ 0x8
+ 0x20
+ read-write
+ 0x00000000
+
+
+ EXTI3_SS
+ EXTI 3 sources selection
+ 12
+ 4
+
+
+ EXTI2_SS
+ EXTI 2 sources selection
+ 8
+ 4
+
+
+ EXTI1_SS
+ EXTI 1 sources selection
+ 4
+ 4
+
+
+ EXTI0_SS
+ EXTI 0 sources selection
+ 0
+ 4
+
+
+
+
+ EXTISS1
+ EXTISS1
+ EXTI sources selection register
+ 1
+ 0xC
+ 0x20
+ read-write
+ 0x00000000
+
+
+ EXTI7_SS
+ EXTI 7 sources selection
+ 12
+ 4
+
+
+ EXTI6_SS
+ EXTI 6 sources selection
+ 8
+ 4
+
+
+ EXTI5_SS
+ EXTI 5 sources selection
+ 4
+ 4
+
+
+ EXTI4_SS
+ EXTI 4 sources selection
+ 0
+ 4
+
+
+
+
+ EXTISS2
+ EXTISS2
+ EXTI sources selection register
+ 2
+ 0x10
+ 0x20
+ read-write
+ 0x00000000
+
+
+ EXTI11_SS
+ EXTI 11 sources selection
+ 12
+ 4
+
+
+ EXTI10_SS
+ EXTI 10 sources selection
+ 8
+ 4
+
+
+ EXTI9_SS
+ EXTI 9 sources selection
+ 4
+ 4
+
+
+ EXTI8_SS
+ EXTI 8 sources selection
+ 0
+ 4
+
+
+
+
+ EXTISS3
+ EXTISS3
+ EXTI sources selection register
+ 3
+ 0x14
+ 0x20
+ read-write
+ 0x00000000
+
+
+ EXTI15_SS
+ EXTI 15 sources selection
+ 12
+ 4
+
+
+ EXTI14_SS
+ EXTI 14 sources selection
+ 8
+ 4
+
+
+ EXTI13_SS
+ EXTI 13 sources selection
+ 4
+ 4
+
+
+ EXTI12_SS
+ EXTI 12 sources selection
+ 0
+ 4
+
+
+
+
+ CFG2
+ CFG2
+ System configuration register 2
+ 0x18
+ 0x20
+ read-write
+ 0x00000000
+
+
+ SRAM_PCEF
+ SRAM parity check error flag
+ 8
+ 1
+
+
+ LVD_LOCK
+ LVD lock
+ 2
+ 1
+
+
+ SRAM_PARITY_ERROR_LOCK
+ SRAM parity check error lock
+ 1
+ 1
+
+
+ LOCKUP_LOCK
+ Cortex-M4 LOCKUP output lock
+ 0
+ 1
+
+
+
+
+ CPU_IRQ_LAT
+ CPU_IRQ_LAT
+ IRQ Latency register
+ 0x100
+ 0x20
+ read-write
+ 0x00000000
+
+
+ IRQ_LATENCY
+ specifies the minimum number of cycles between an interrupt
+ 0
+ 8
+
+
+
+
+
+
+ TIMER0
+ Advanced-timers
+ TIMER
+ 0x40012C00
+
+ 0x0
+ 0x400
+ registers
+
+
+ TIMER0_BRK_UP_TRG_COM
+ 13
+
+
+ TIMER0_CC
+ 14
+
+
+
+ CTL0
+ CTL0
+ control register 0
+ 0x0
+ 0x20
+ read-write
+ 0x0000
+
+
+ CKDIV
+ Clock division
+ 8
+ 2
+
+
+ ARSE
+ Auto-reload preload enable
+ 7
+ 1
+
+
+ CAM
+ Center-aligned mode
+ selection
+ 5
+ 2
+
+
+ DIR
+ Direction
+ 4
+ 1
+
+
+ SPM
+ One-pulse mode
+ 3
+ 1
+
+
+ UPS
+ Update request source
+ 2
+ 1
+
+
+ UPDIS
+ Update disable
+ 1
+ 1
+
+
+ CEN
+ Counter enable
+ 0
+ 1
+
+
+
+
+ CTL1
+ CTL1
+ control register 1
+ 0x04
+ 0x20
+ read-write
+ 0x0000
+
+
+ ISO3
+ Idle state of channel 3 output
+ 14
+ 1
+
+
+ ISO2N
+ Idle state of channel 2 complementary output
+ 13
+ 1
+
+
+ ISO2
+ Idle state of channel 2 output
+ 12
+ 1
+
+
+ ISO1N
+ Idle state of channel 1 complementary output
+ 11
+ 1
+
+
+ ISO1
+ Idle state of channel 1 output
+ 10
+ 1
+
+
+ ISO0N
+ Idle state of channel 0 complementary output
+ 9
+ 1
+
+
+ ISO0
+ Idle state of channel 0 output
+ 8
+ 1
+
+
+ TI0S
+ Channel 0 trigger input selection
+ 7
+ 1
+
+
+ MMC
+ Master mode control
+ 4
+ 3
+
+
+ DMAS
+ DMA request source selection
+ 3
+ 1
+
+
+ CCUC
+ Commutation control shadow register update control
+ 2
+ 1
+
+
+ CCSE
+ Commutation control shadow enable
+ 0
+ 1
+
+
+
+
+ SMCFG
+ SMCFG
+ slave mode configuration register
+ 0x08
+ 0x20
+ read-write
+ 0x0000
+
+
+ ETP
+ External trigger polarity
+ 15
+ 1
+
+
+ SCM1
+ Part of SMC for enable External clock mode1
+ 14
+ 1
+
+
+ ETPSC
+ External trigger prescaler
+ 12
+ 2
+
+
+ ETFC
+ External trigger filter
+ 8
+ 4
+
+
+ MSM
+ Master/Slave mode
+ 7
+ 1
+
+
+ TRGS
+ Trigger selection
+ 4
+ 3
+
+
+ OCRC
+ Trigger selection
+ 3
+ 1
+
+
+ SMC
+ Slave mode selection
+ 0
+ 3
+
+
+
+
+ DMAINTEN
+ DMAINTEN
+ DMA/Interrupt enable register
+ 0x0C
+ 0x20
+ read-write
+ 0x0000
+
+
+ TRGDEN
+ Trigger DMA request enable
+ 14
+ 1
+
+
+ CMTDEN
+ Reserved
+ 13
+ 1
+
+
+ CH3DEN
+ Capture/Compare 3 DMA request
+ enable
+ 12
+ 1
+
+
+ CH2DEN
+ Capture/Compare 2 DMA request
+ enable
+ 11
+ 1
+
+
+ CH1DEN
+ Capture/Compare 1 DMA request
+ enable
+ 10
+ 1
+
+
+ CH0DEN
+ Capture/Compare 0 DMA request
+ enable
+ 9
+ 1
+
+
+ UPDEN
+ Update DMA request enable
+ 8
+ 1
+
+
+ BRKIE
+ Break interrupt enable
+ 7
+ 1
+
+
+ TRGIE
+ Trigger interrupt enable
+ 6
+ 1
+
+
+ CMTIE
+ COM interrupt enable
+ 5
+ 1
+
+
+ CH3IE
+ Capture/Compare 3 interrupt
+ enable
+ 4
+ 1
+
+
+ CH2IE
+ Capture/Compare 2 interrupt
+ enable
+ 3
+ 1
+
+
+ CH1IE
+ Capture/Compare 1 interrupt
+ enable
+ 2
+ 1
+
+
+ CH0IE
+ Capture/Compare 0 interrupt
+ enable
+ 1
+ 1
+
+
+ UPIE
+ Update interrupt enable
+ 0
+ 1
+
+
+
+
+ INTF
+ INTF
+ status register
+ 0x10
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH3OF
+ Channel 3 over capture flag
+ 12
+ 1
+
+
+ CH2OF
+ Channel 2 over capture flag
+ 11
+ 1
+
+
+ CH1OF
+ Channel 1 over capture flag
+ 10
+ 1
+
+
+ CH0OF
+ Channel 0 over capture flag
+ 9
+ 1
+
+
+ BRKIF
+ Break interrupt flag
+ 7
+ 1
+
+
+ TRGIF
+ Trigger interrupt flag
+ 6
+ 1
+
+
+ CMTIF
+ COM interrupt flag
+ 5
+ 1
+
+
+ CH3IF
+ Capture/Compare 3 interrupt
+ flag
+ 4
+ 1
+
+
+ CH2IF
+ Capture/Compare 2 interrupt
+ flag
+ 3
+ 1
+
+
+ CH1IF
+ Capture/Compare 1 interrupt
+ flag
+ 2
+ 1
+
+
+ CH0IF
+ Capture/compare 0 interrupt
+ flag
+ 1
+ 1
+
+
+ UPIF
+ Update interrupt flag
+ 0
+ 1
+
+
+
+
+ SWEVG
+ SWEVG
+ Software event generation register
+ 0x14
+ 0x20
+ write-only
+ 0x0000
+
+
+ BRKG
+ Break event generation
+ 7
+ 1
+
+
+ TRGG
+ Trigger event generation
+ 6
+ 1
+
+
+ CMTG
+ Channel commutation event generation
+ 5
+ 1
+
+
+ CH3G
+ Channel 3's capture or compare event generation
+ 4
+ 1
+
+
+ CH2G
+ Channel 2's capture or compare event generation
+ 3
+ 1
+
+
+ CH1G
+ Channel 1's capture or compare event generation
+ 2
+ 1
+
+
+ CH0G
+ Channel 0's capture or compare event generation
+ 1
+ 1
+
+
+ UPG
+ Update event generation
+ 0
+ 1
+
+
+
+
+ CHCTL0_Output
+ CHCTL0_Output
+ capture/compare mode register (output
+ mode)
+ 0x18
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH1COMCEN
+ Channel 1 output compare clear enable
+ 15
+ 1
+
+
+ CH1COMCTL
+ Channel 1 compare output control
+ 12
+ 3
+
+
+ CH1COMSEN
+ Channel 1 output compare shadow enable
+ 11
+ 1
+
+
+ CH1COMFEN
+ Channel 1 output compare fast enable
+ 10
+ 1
+
+
+ CH1MS
+ Channel 1 mode selection
+ 8
+ 2
+
+
+ CH0COMCEN
+ Channel 0 output compare clear enable
+ 7
+ 1
+
+
+ CH0COMCTL
+ Channel 0 compare output control
+ 4
+ 3
+
+
+ CH0COMSEN
+ Channel 0 compare output shadow enable
+ 3
+ 1
+
+
+ CH0COMFEN
+ Channel 0 output compare fast enable
+ 2
+ 1
+
+
+ CH0MS
+ Channel 0 I/O mode selection
+ 0
+ 2
+
+
+
+
+ CHCTL0_Input
+ CHCTL0_Input
+ capture/compare mode register 0 (input
+ mode)
+ CHCTL0_Output
+ 0x18
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH1CAPFLT
+ Channel 1 input capture filter control
+ 12
+ 4
+
+
+ CH1CAPPSC
+ Channel 1 input capture prescaler
+ 10
+ 2
+
+
+ CH1MS
+ Channel 1 mode selection
+ 8
+ 2
+
+
+ CH0CAPFLT
+ Channel 0 input capture filter control
+ 4
+ 4
+
+
+ CH0CAPPSC
+ Channel 0 input capture prescaler
+ 2
+ 2
+
+
+ CH0MS
+ Channel 0 mode selection
+ 0
+ 2
+
+
+
+
+ CHCTL1_Output
+ CHCTL1_Output
+ capture/compare mode register (output
+ mode)
+ 0x1C
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH3COMCEN
+ Channel 3 output compare clear enable
+ 15
+ 1
+
+
+ CH3COMCTL
+ Channel 3 compare output control
+ 12
+ 3
+
+
+ CH3COMSEN
+ Channel 3 output compare shadow enable
+ 11
+ 1
+
+
+ CH3COMFEN
+ Channel 3 output compare fast enable
+ 10
+ 1
+
+
+ CH3MS
+ Channel 3 mode selection
+ 8
+ 2
+
+
+ CH2COMCEN
+ Channel 2 output compare clear enable
+ 7
+ 1
+
+
+ CH2COMCTL
+ Channel 2 compare output control
+ 4
+ 3
+
+
+ CH2COMSEN
+ Channel 2 compare output shadow enable
+ 3
+ 1
+
+
+ CH2COMFEN
+ Channel 2 output compare fast enable
+ 2
+ 1
+
+
+ CH2MS
+ Channel 2 I/O mode selection
+ 0
+ 2
+
+
+
+
+ CHCTL1_Input
+ CHCTL1_Input
+ capture/compare mode register 1 (input
+ mode)
+ CHCTL1_Output
+ 0x1C
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH3CAPFLT
+ Channel 3 input capture filter control
+ 12
+ 4
+
+
+ CH3CAPPSC
+ Channel 3 input capture prescaler
+ 10
+ 2
+
+
+ CH3MS
+ Channel 3 mode selection
+ 8
+ 2
+
+
+ CH2CAPFLT
+ Input capture 2 filter
+ 4
+ 4
+
+
+ CH2CAPPSC
+ Input capture 2 prescaler
+ 2
+ 2
+
+
+ CH2MS
+ Capture/compare 2
+ selection
+ 0
+ 2
+
+
+
+
+ CHCTL2
+ CHCTL2
+ capture/compare enable
+ register
+ 0x20
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH3P
+ Capture/Compare 3 output
+ Polarity
+ 13
+ 1
+
+
+ CH3EN
+ Capture/Compare 3 output
+ enable
+ 12
+ 1
+
+
+ CH2NP
+ Capture/Compare 2 output
+ Polarity
+ 11
+ 1
+
+
+ CH2NEN
+ Capture/Compare 2 complementary output
+ enable
+ 10
+ 1
+
+
+ CH2P
+ Capture/Compare 2 output
+ Polarity
+ 9
+ 1
+
+
+ CH2EN
+ Capture/Compare 2 output
+ enable
+ 8
+ 1
+
+
+ CH1NP
+ Capture/Compare 1 output
+ Polarity
+ 7
+ 1
+
+
+ CH1NEN
+ Capture/Compare 1 complementary output
+ enable
+ 6
+ 1
+
+
+ CH1P
+ Capture/Compare 1 output
+ Polarity
+ 5
+ 1
+
+
+ CH1EN
+ Capture/Compare 1 output
+ enable
+ 4
+ 1
+
+
+ CH0NP
+ Capture/Compare 0 output
+ Polarity
+ 3
+ 1
+
+
+ CH0NEN
+ Capture/Compare 0 complementary output
+ enable
+ 2
+ 1
+
+
+ CH0P
+ Capture/Compare 0 output
+ Polarity
+ 1
+ 1
+
+
+ CH0EN
+ Capture/Compare 1 output
+ enable
+ 0
+ 1
+
+
+
+
+ CNT
+ CNT
+ counter
+ 0x24
+ 0x20
+ read-write
+ 0x0000
+
+
+ CNT
+ counter value
+ 0
+ 16
+
+
+
+
+ PSC
+ PSC
+ prescaler
+ 0x28
+ 0x20
+ read-write
+ 0x0000
+
+
+ PSC
+ Prescaler value
+ 0
+ 16
+
+
+
+
+ CAR
+ CAR
+ auto-reload register
+ 0x2C
+ 0x20
+ read-write
+ 0x0000
+
+
+ CARL
+ Counter auto reload value
+ 0
+ 16
+
+
+
+
+ CREP
+ CREP
+ repetition counter register
+ 0x30
+ 0x20
+ read-write
+ 0x0000
+
+
+ CREP
+ Repetition counter value
+ 0
+ 8
+
+
+
+
+ CH0CV
+ CH0CV
+ capture/compare register 0
+ 0x34
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH0VAL
+ Capture/Compare 0 value
+ 0
+ 16
+
+
+
+
+ CH1CV
+ CH1CV
+ capture/compare register 1
+ 0x38
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH1VAL
+ Capture/Compare 1 value
+ 0
+ 16
+
+
+
+
+ CH2CV
+ CH2CV
+ capture/compare register 2
+ 0x3C
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH2VAL
+ Capture/Compare 2 value
+ 0
+ 16
+
+
+
+
+ CH3CV
+ CH3CV
+ capture/compare register 3
+ 0x40
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH3VAL
+ Capture/Compare 3 value
+ 0
+ 16
+
+
+
+
+ CCHP
+ CCHP
+ channel complementary protection register
+ 0x44
+ 0x20
+ read-write
+ 0x0000
+
+
+ POEN
+ Main output enable
+ 15
+ 1
+
+
+ OAEN
+ Automatic output enable
+ 14
+ 1
+
+
+ BRKP
+ Break polarity
+ 13
+ 1
+
+
+ BRKEN
+ Break enable
+ 12
+ 1
+
+
+ ROS
+ Off-state selection for Run
+ mode
+ 11
+ 1
+
+
+ IOS
+ Off-state selection for Idle
+ mode
+ 10
+ 1
+
+
+ PROT
+ Lock configuration
+ 8
+ 2
+
+
+ DTCFG
+ Dead-time generator setup
+ 0
+ 8
+
+
+
+
+ DMACFG
+ DMACFG
+ DMA configuration register
+ 0x48
+ 0x20
+ read-write
+ 0x0000
+
+
+ DMATC
+ DMA transfer count
+ 8
+ 5
+
+
+ DMATA
+ DMA transfer access start address
+ 0
+ 5
+
+
+
+
+ DMATB
+ DMATB
+ DMA address for full transfer
+ 0x4C
+ 0x20
+ read-write
+ 0x0000
+
+
+ DMATB
+ DMA register for burst
+ accesses
+ 0
+ 16
+
+
+
+
+ CFG
+ CFG
+ Configuration register
+ 0xFC
+ 0x20
+ read-write
+ 0x0000
+
+
+ CHVSEL
+ Write CHxVAL register selection
+ 1
+ 1
+
+
+ OUTSEL
+ The output value selection
+ 0
+ 1
+
+
+
+
+
+
+ TIMER2
+ General-purpose-timers
+ TIMER
+ 0x40000400
+
+ 0x0
+ 0x400
+ registers
+
+
+ TIMER2
+ 16
+
+
+
+ CTL0
+ CTL0
+ control register 0
+ 0x0
+ 0x20
+ read-write
+ 0x0000
+
+
+ CKDIV
+ Clock division
+ 8
+ 2
+
+
+ ARSE
+ Auto-reload preload enable
+ 7
+ 1
+
+
+ CAM
+ Center-aligned mode
+ selection
+ 5
+ 2
+
+
+ DIR
+ Direction
+ 4
+ 1
+
+
+ SPM
+ One-pulse mode
+ 3
+ 1
+
+
+ UPS
+ Update request source
+ 2
+ 1
+
+
+ UPDIS
+ Update disable
+ 1
+ 1
+
+
+ CEN
+ Counter enable
+ 0
+ 1
+
+
+
+
+ CTL1
+ CTL1
+ control register 1
+ 0x04
+ 0x20
+ read-write
+ 0x0000
+
+
+ TI0S
+ TI0 selection
+ 7
+ 1
+
+
+ MMC
+ Master mode selection
+ 4
+ 3
+
+
+ DMAS
+ Capture/compare DMA
+ selection
+ 3
+ 1
+
+
+
+
+ SMCFG
+ SMCFG
+ slave mode control register
+ 0x08
+ 0x20
+ read-write
+ 0x0000
+
+
+ ETP
+ External trigger polarity
+ 15
+ 1
+
+
+ SMC1
+ External clock enable
+ 14
+ 1
+
+
+ ETPSC
+ External trigger prescaler
+ 12
+ 2
+
+
+ ETFC
+ External trigger filter
+ 8
+ 4
+
+
+ MSM
+ Master/Slave mode
+ 7
+ 1
+
+
+ TRGS
+ Trigger selection
+ 4
+ 3
+
+
+ OCRC
+ OCREF clear source selection
+ 3
+ 1
+
+
+ SMC
+ Slave mode selection
+ 0
+ 3
+
+
+
+
+ DMAINTEN
+ DMAINTEN
+ DMA/Interrupt enable register
+ 0x0C
+ 0x20
+ read-write
+ 0x0000
+
+
+ TRGDEN
+ Trigger DMA request enable
+ 14
+ 1
+
+
+ CH3DEN
+ Capture/Compare 3 DMA request
+ enable
+ 12
+ 1
+
+
+ CH2DEN
+ Capture/Compare 2 DMA request
+ enable
+ 11
+ 1
+
+
+ CH1DEN
+ Capture/Compare 1 DMA request
+ enable
+ 10
+ 1
+
+
+ CH0DEN
+ Capture/Compare 1 DMA request
+ enable
+ 9
+ 1
+
+
+ UPDEN
+ Update DMA request enable
+ 8
+ 1
+
+
+ TRGIE
+ Trigger interrupt enable
+ 6
+ 1
+
+
+ CH3IE
+ Capture/Compare 3 interrupt
+ enable
+ 4
+ 1
+
+
+ CH2IE
+ Capture/Compare 2 interrupt
+ enable
+ 3
+ 1
+
+
+ CH1IE
+ Capture/Compare 1 interrupt
+ enable
+ 2
+ 1
+
+
+ CH0IE
+ Capture/Compare 0 interrupt
+ enable
+ 1
+ 1
+
+
+ UPIE
+ Update interrupt enable
+ 0
+ 1
+
+
+
+
+ INTF
+ INTF
+ interrupt flag register
+ 0x10
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH3OF
+ Capture/Compare 3 overcapture
+ flag
+ 12
+ 1
+
+
+ CH2OF
+ Capture/Compare 2 overcapture
+ flag
+ 11
+ 1
+
+
+ CH1OF
+ Capture/compare 1 overcapture
+ flag
+ 10
+ 1
+
+
+ CH0OF
+ Capture/Compare 0 overcapture
+ flag
+ 9
+ 1
+
+
+ TRGIF
+ Trigger interrupt flag
+ 6
+ 1
+
+
+ CH3IF
+ Capture/Compare 3 interrupt
+ flag
+ 4
+ 1
+
+
+ CH2IF
+ Capture/Compare 2 interrupt
+ flag
+ 3
+ 1
+
+
+ CH1IF
+ Capture/Compare 1 interrupt
+ flag
+ 2
+ 1
+
+
+ CH0IF
+ Capture/compare 0 interrupt
+ flag
+ 1
+ 1
+
+
+ UPIF
+ Update interrupt flag
+ 0
+ 1
+
+
+
+
+ SWEVG
+ SWEVG
+ event generation register
+ 0x14
+ 0x20
+ write-only
+ 0x0000
+
+
+ TRGG
+ Trigger generation
+ 6
+ 1
+
+
+ CH3G
+ Capture/compare 3
+ generation
+ 4
+ 1
+
+
+ CH2G
+ Capture/compare 2
+ generation
+ 3
+ 1
+
+
+ CH1G
+ Capture/compare 1
+ generation
+ 2
+ 1
+
+
+ CH0G
+ Capture/compare 0
+ generation
+ 1
+ 1
+
+
+ UPG
+ Update generation
+ 0
+ 1
+
+
+
+
+ CHCTL0_Output
+ CHCTL0_Output
+ capture/compare mode register 0 (output
+ mode)
+ 0x18
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH1COMCEN
+ Output compare 1 clear
+ enable
+ 15
+ 1
+
+
+ CH1COMCTL
+ Output compare 1 mode
+ 12
+ 3
+
+
+ CH1COMSEN
+ Output compare 1 preload
+ enable
+ 11
+ 1
+
+
+ CH1COMFEN
+ Output compare 1 fast
+ enable
+ 10
+ 1
+
+
+ CH1MS
+ Capture/Compare 1
+ selection
+ 8
+ 2
+
+
+ CH0COMCEN
+ Output compare 0 clear
+ enable
+ 7
+ 1
+
+
+ CH0COMCTL
+ Output compare 0 mode
+ 4
+ 3
+
+
+ CH0COMSEN
+ Output compare 0 preload
+ enable
+ 3
+ 1
+
+
+ CH0COMFEN
+ Output compare 0 fast
+ enable
+ 2
+ 1
+
+
+ CH0MS
+ Capture/Compare 0
+ selection
+ 0
+ 2
+
+
+
+
+ CHCTL0_Input
+ CHCTL0_Input
+ capture/compare mode register 0 (input
+ mode)
+ CHCTL0_Output
+ 0x18
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CH1CAPFLT
+ Input capture 1 filter
+ 12
+ 4
+
+
+ CH1CAPPSC
+ Input capture 1 prescaler
+ 10
+ 2
+
+
+ CH1MS
+ Capture/compare 1
+ selection
+ 8
+ 2
+
+
+ CH0CAPFLT
+ Input capture 0 filter
+ 4
+ 4
+
+
+ CH0CAPPSC
+ Input capture 0 prescaler
+ 2
+ 2
+
+
+ CH0MS
+ Capture/Compare 0
+ selection
+ 0
+ 2
+
+
+
+
+ CHCTL1_Output
+ CHCTL1_Output
+ capture/compare mode register 1 (output
+ mode)
+ 0x1C
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH3COMCEN
+ Output compare 3 clear
+ enable
+ 15
+ 1
+
+
+ CH3COMCTL
+ Output compare 3 mode
+ 12
+ 3
+
+
+ CH3COMSEN
+ Output compare 3 preload
+ enable
+ 11
+ 1
+
+
+ CH3COMFEN
+ Output compare 3 fast
+ enable
+ 10
+ 1
+
+
+ CH3MS
+ Capture/Compare 3
+ selection
+ 8
+ 2
+
+
+ CH2COMCEN
+ Output compare 2 clear
+ enable
+ 7
+ 1
+
+
+ CH2COMCTL
+ Output compare 2 mode
+ 4
+ 3
+
+
+ CH2COMSEN
+ Output compare 2 preload
+ enable
+ 3
+ 1
+
+
+ CH2COMFEN
+ Output compare 2 fast
+ enable
+ 2
+ 1
+
+
+ CH2MS
+ Capture/Compare 2
+ selection
+ 0
+ 2
+
+
+
+
+ CHCTL1_Input
+ CHCTL1_Input
+ capture/compare mode register 1 (input
+ mode)
+ CHCTL1_Output
+ 0x1C
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH3CAPFLT
+ Input capture 3 filter
+ 12
+ 4
+
+
+ CH3CAPPSC
+ Input capture 3 prescaler
+ 10
+ 2
+
+
+ CH3MS
+ Capture/Compare 3
+ selection
+ 8
+ 2
+
+
+ CH2CAPFLT
+ Input capture 2 filter
+ 4
+ 4
+
+
+ CH2CAPPSC
+ Input capture 2 prescaler
+ 2
+ 2
+
+
+ CH2MS
+ Capture/Compare 2
+ selection
+ 0
+ 2
+
+
+
+
+ CHCTL2
+ CHCTL2
+ capture/compare enable
+ register
+ 0x20
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH3NP
+ Capture/Compare 3 output
+ Polarity
+ 15
+ 1
+
+
+ CH3P
+ Capture/Compare 3 output
+ Polarity
+ 13
+ 1
+
+
+ CH3EN
+ Capture/Compare 3 output
+ enable
+ 12
+ 1
+
+
+ CH2NP
+ Capture/Compare 2 output
+ Polarity
+ 11
+ 1
+
+
+ CH2P
+ Capture/Compare 2 output
+ Polarity
+ 9
+ 1
+
+
+ CH2EN
+ Capture/Compare 2 output
+ enable
+ 8
+ 1
+
+
+ CH1NP
+ Capture/Compare 1 output
+ Polarity
+ 7
+ 1
+
+
+ CH1P
+ Capture/Compare 1 output
+ Polarity
+ 5
+ 1
+
+
+ CH1EN
+ Capture/Compare 1 output
+ enable
+ 4
+ 1
+
+
+ CH0NP
+ Capture/Compare 0 output
+ Polarity
+ 3
+ 1
+
+
+ CH0P
+ Capture/Compare 0 output
+ Polarity
+ 1
+ 1
+
+
+ CH0EN
+ Capture/Compare 0 output
+ enable
+ 0
+ 1
+
+
+
+
+ CNT
+ CNT
+ counter
+ 0x24
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CNT
+ counter value
+ 0
+ 16
+
+
+
+
+ PSC
+ PSC
+ prescaler
+ 0x28
+ 0x20
+ read-write
+ 0x0000
+
+
+ PSC
+ Prescaler value
+ 0
+ 16
+
+
+
+
+ CAR
+ CAR
+ auto-reload register
+ 0x2C
+ 0x20
+ read-write
+ 0x0000
+
+
+ CARL
+ Low Auto-reload value
+ 0
+ 16
+
+
+
+
+ CH0CV
+ CH0CV
+ capture/compare register 1
+ 0x34
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CH0VAL
+ Low Capture/Compare 1
+ value
+ 0
+ 16
+
+
+
+
+ CH1CV
+ CH1CV
+ capture/compare register 2
+ 0x38
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CH1VAL
+ Low Capture/Compare 2
+ value
+ 0
+ 16
+
+
+
+
+ CH2CV
+ CH2CV
+ capture/compare register 2
+ 0x3C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CH2VAL
+ High Capture/Compare value (TIM2
+ only)
+ 0
+ 16
+
+
+
+
+ CH3CV
+ CH3CV
+ capture/compare register 3
+ 0x40
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CH3VAL
+ High Capture/Compare value (TIM2
+ only)
+ 0
+ 16
+
+
+
+
+ DMACFG
+ DMACFG
+ DMA control register
+ 0x48
+ 0x20
+ read-write
+ 0x0000
+
+
+ DMATC
+ DMA burst length
+ 8
+ 5
+
+
+ DMATA
+ DMA base address
+ 0
+ 5
+
+
+
+
+ DMATB
+ DMATB
+ DMA address for full transfer
+ 0x4C
+ 0x20
+ read-write
+ 0x0000
+
+
+ DMATB
+ DMA register for burst
+ accesses
+ 0
+ 16
+
+
+
+
+ CFG
+ CFG
+ Configuration
+ 0xFC
+ 0x20
+ read-write
+ 0x0000
+
+
+ CHVSEL
+ Write CHxVAL register selection
+ 1
+ 1
+
+
+
+
+
+
+ TIMER5
+ Basic-timers
+ TIMER
+ 0x40001000
+
+ 0x0
+ 0x400
+ registers
+
+
+ TIMER5
+ 17
+
+
+
+ CTL0
+ CTL0
+ control register 0
+ 0x0
+ 0x20
+ read-write
+ 0x0000
+
+
+ ARSE
+ Auto-reload preload enable
+ 7
+ 1
+
+
+ SPM
+ One-pulse mode
+ 3
+ 1
+
+
+ UPS
+ Update request source
+ 2
+ 1
+
+
+ UPDIS
+ Update disable
+ 1
+ 1
+
+
+ CEN
+ Counter enable
+ 0
+ 1
+
+
+
+
+ CTL1
+ CTL1
+ control register 1
+ 0x04
+ 0x20
+ read-write
+ 0x0000
+
+
+ MMC
+ Master mode selection
+ 4
+ 3
+
+
+
+
+ DMAINTEN
+ DMAINTEN
+ DMA/Interrupt enable register
+ 0x0C
+ 0x20
+ read-write
+ 0x0000
+
+
+ UPDEN
+ Update DMA request enable
+ 8
+ 1
+
+
+ UPIE
+ Update interrupt enable
+ 0
+ 1
+
+
+
+
+ INTF
+ INTF
+ status register
+ 0x10
+ 0x20
+ read-write
+ 0x0000
+
+
+ UPIF
+ Update interrupt flag
+ 0
+ 1
+
+
+
+
+ SWEVG
+ SWEVG
+ event generation register
+ 0x14
+ 0x20
+ write-only
+ 0x0000
+
+
+ UPG
+ Update generation
+ 0
+ 1
+
+
+
+
+ CNT
+ CNT
+ counter
+ 0x24
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CNT
+ Low counter value
+ 0
+ 16
+
+
+
+
+ PSC
+ PSC
+ prescaler
+ 0x28
+ 0x20
+ read-write
+ 0x0000
+
+
+ PSC
+ Prescaler value
+ 0
+ 16
+
+
+
+
+ CAR
+ CAR
+ auto-reload register
+ 0x2C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CARL
+ Low Auto-reload value
+ 0
+ 16
+
+
+
+
+
+
+ TIMER13
+ General-purpose-timers
+ TIMER
+ 0x40002000
+
+ 0x0
+ 0x400
+ registers
+
+
+ TIMER13
+ 19
+
+
+
+ CTL0
+ CTL0
+ control register 1
+ 0x00
+ 0x20
+ read-write
+ 0x0000
+
+
+ CKDIV
+ Clock division
+ 8
+ 2
+
+
+ ARSE
+ Auto-reload preload enable
+ 7
+ 1
+
+
+ UPS
+ Update request source
+ 2
+ 1
+
+
+ UPDIS
+ Update disable
+ 1
+ 1
+
+
+ CEN
+ Counter enable
+ 0
+ 1
+
+
+
+
+ DMAINTEN
+ DMAINTEN
+ DMA/Interrupt enable register
+ 0x0C
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH0IE
+ Capture/Compare 0 interrupt
+ enable
+ 1
+ 1
+
+
+ UPIE
+ Update interrupt enable
+ 0
+ 1
+
+
+
+
+ INTF
+ INTF
+ interrupt flag register
+ 0x10
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH0OF
+ Capture/Compare 0 overcapture
+ flag
+ 9
+ 1
+
+
+ CH0IF
+ Capture/compare 0 interrupt
+ flag
+ 1
+ 1
+
+
+ UPIF
+ Update interrupt flag
+ 0
+ 1
+
+
+
+
+ SWEVG
+ SWEVG
+ event generation register
+ 0x14
+ 0x20
+ write-only
+ 0x0000
+
+
+ CH0G
+ Capture/compare 0
+ generation
+ 1
+ 1
+
+
+ UPG
+ Update generation
+ 0
+ 1
+
+
+
+
+ CHCTL0_Output
+ CHCTL0_Output
+ capture/compare mode register (output
+ mode)
+ 0x18
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH0MS
+ Capture/Compare 0
+ selection
+ 0
+ 2
+
+
+ CH0COMFEN
+ Output compare 0 fast
+ enable
+ 2
+ 1
+
+
+ CH0COMSEN
+ Output Compare 0 preload
+ enable
+ 3
+ 1
+
+
+ CH0COMCTL
+ Output Compare 0 mode
+ 4
+ 3
+
+
+
+
+ CHCTL0_Input
+ CHCTL0_Input
+ capture/compare mode register (input
+ mode)
+ CHCTL0_Output
+ 0x18
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH0CAPFLT
+ Input capture 0 filter
+ 4
+ 4
+
+
+ CH0CAPPSC
+ Input capture 0 prescaler
+ 2
+ 2
+
+
+ CH0MS
+ Capture/Compare 0
+ selection
+ 0
+ 2
+
+
+
+
+ CHCTL2
+ CHCTL2
+ capture/compare enable
+ register
+ 0x20
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH0NP
+ Capture/Compare 0 output
+ Polarity
+ 3
+ 1
+
+
+ CH0P
+ Capture/Compare 0 output
+ Polarity
+ 1
+ 1
+
+
+ CH0EN
+ Capture/Compare 1 output
+ enable
+ 0
+ 1
+
+
+
+
+ CNT
+ CNT
+ counter
+ 0x24
+ 0x20
+ read-write
+ 0x0000
+
+
+ CNT
+ counter value
+ 0
+ 16
+
+
+
+
+ PSC
+ PSC
+ prescaler
+ 0x28
+ 0x20
+ read-write
+ 0x0000
+
+
+ PSC
+ Prescaler value
+ 0
+ 16
+
+
+
+
+ CAR
+ CAR
+ auto-reload register
+ 0x2C
+ 0x20
+ read-write
+ 0x0000
+
+
+ CARL
+ Auto-reload value
+ 0
+ 16
+
+
+
+
+ CH0CV
+ CH0CV
+ capture/compare register 0
+ 0x34
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH0VAL
+ Capture/Compare 1 value
+ 0
+ 16
+
+
+
+
+ IRMP
+ IRMP
+ channel input remap register
+ 0x50
+ 0x20
+ read-write
+ 0x0000
+
+
+ CI0_RMP
+ Timer input 0 remap
+ 0
+ 2
+
+
+
+
+ CFG
+ CFG
+ configuration register
+ 0xFC
+ 0x20
+ read-write
+ 0x0000
+
+
+ CHVSEL
+ Write CHxVAL register selection
+ 1
+ 1
+
+
+
+
+
+
+ TIMER14
+ General-purpose-timers
+ TIMER
+ 0x40014000
+
+ 0x0
+ 0x400
+ registers
+
+
+ TIMER14
+ 20
+
+
+
+ CTL0
+ CTL0
+ control register 0
+ 0x0
+ 0x20
+ read-write
+ 0x0000
+
+
+ CKDIV
+ Clock division
+ 8
+ 2
+
+
+ ARSE
+ Auto-reload preload enable
+ 7
+ 1
+
+
+ SPM
+ One-pulse mode
+ 3
+ 1
+
+
+ UPS
+ Update request source
+ 2
+ 1
+
+
+ UPDIS
+ Update disable
+ 1
+ 1
+
+
+ CEN
+ Counter enable
+ 0
+ 1
+
+
+
+
+ CTL1
+ CTL1
+ control register 1
+ 0x4
+ 0x20
+ read-write
+ 0x0000
+
+
+ ISO1
+ Output Idle state 1
+ 10
+ 1
+
+
+ ISO0N
+ Output Idle state 0
+ 9
+ 1
+
+
+ ISO0
+ Output Idle state 0
+ 8
+ 1
+
+
+ MMC
+ Master mode selection
+ 4
+ 3
+
+
+ DMAS
+ Capture/compare DMA
+ selection
+ 3
+ 1
+
+
+ CCUC
+ Capture/compare control update
+ selection
+ 2
+ 1
+
+
+ CCSE
+ Capture/compare preloaded
+ control
+ 0
+ 1
+
+
+
+
+ SMCFG
+ SMCFG
+ slave mode configuration register
+ 0x08
+ 0x20
+ read-write
+ 0x0000
+
+
+ MSM
+ Master/Slave mode
+ 7
+ 1
+
+
+ TRGS
+ Trigger selection
+ 4
+ 3
+
+
+ SMC
+ Slave mode selection
+ 0
+ 3
+
+
+
+
+ DMAINTEN
+ DMAINTEN
+ DMA/Interrupt enable register
+ 0x0C
+ 0x20
+ read-write
+ 0x0000
+
+
+ TRGDEN
+ Trigger DMA request enable
+ 14
+ 1
+
+
+ CMTDEN
+ Commutation DMA request enable
+ 13
+ 1
+
+
+ CH1DEN
+ Capture/Compare 1 DMA request
+ enable
+ 10
+ 1
+
+
+ CH0DEN
+ Capture/Compare 0 DMA request
+ enable
+ 9
+ 1
+
+
+ UPDEN
+ Update DMA request enable
+ 8
+ 1
+
+
+ BRKIE
+ Break interrupt enable
+ 7
+ 1
+
+
+ TRGIE
+ Trigger interrupt enable
+ 6
+ 1
+
+
+ CMTIE
+ COM interrupt enable
+ 5
+ 1
+
+
+ CH1IE
+ Capture/Compare 2 interrupt
+ enable
+ 2
+ 1
+
+
+ CH0IE
+ Capture/Compare 1 interrupt
+ enable
+ 1
+ 1
+
+
+ UPIE
+ Update interrupt enable
+ 0
+ 1
+
+
+
+
+ INTF
+ INTF
+ interrupt flag register
+ 0x10
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH1OF
+ Capture/compare 1 overcapture
+ flag
+ 10
+ 1
+
+
+ CH0OF
+ Capture/Compare 0 overcapture
+ flag
+ 9
+ 1
+
+
+ BRKIF
+ Break interrupt flag
+ 7
+ 1
+
+
+ TRGIF
+ Trigger interrupt flag
+ 6
+ 1
+
+
+ CMTIF
+ COM interrupt flag
+ 5
+ 1
+
+
+ CH1IF
+ Capture/Compare 1 interrupt
+ flag
+ 2
+ 1
+
+
+ CH0IF
+ Capture/compare 0 interrupt
+ flag
+ 1
+ 1
+
+
+ UPIF
+ Update interrupt flag
+ 0
+ 1
+
+
+
+
+ SWEVG
+ SWEVG
+ event generation register
+ 0x14
+ 0x20
+ write-only
+ 0x0000
+
+
+ BRKG
+ Break generation
+ 7
+ 1
+
+
+ TRGG
+ Trigger generation
+ 6
+ 1
+
+
+ CMTG
+ Capture/Compare control update
+ generation
+ 5
+ 1
+
+
+ CH1G
+ Capture/compare 1
+ generation
+ 2
+ 1
+
+
+ CH0G
+ Capture/compare 0
+ generation
+ 1
+ 1
+
+
+ UPG
+ Update generation
+ 0
+ 1
+
+
+
+
+ CHCTL0_Output
+ CHCTL0_Output
+ capture/compare mode register (output
+ mode)
+ 0x18
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CH1COMCTL
+ Output Compare 1 mode
+ 12
+ 3
+
+
+ CH1COMSEN
+ Output Compare 1 preload
+ enable
+ 11
+ 1
+
+
+ CH1COMFEN
+ Output Compare 1 fast
+ enable
+ 10
+ 1
+
+
+ CH1MS
+ Capture/Compare 1
+ selection
+ 8
+ 2
+
+
+ CH0COMCTL
+ Output Compare 0 mode
+ 4
+ 3
+
+
+ CH0COMSEN
+ Output Compare 0 preload
+ enable
+ 3
+ 1
+
+
+ CH0COMFEN
+ Output Compare 0 fast
+ enable
+ 2
+ 1
+
+
+ CH0MS
+ Capture/Compare 0
+ selection
+ 0
+ 2
+
+
+
+
+ CHCTL0_Input
+ CHCTL0_Input
+ capture/compare mode register 0 (input
+ mode)
+ CHCTL0_Output
+ 0x18
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CH1CAPFLT
+ Input capture 1 filter
+ 12
+ 4
+
+
+ CH1CAPPSC
+ Input capture 1 prescaler
+ 10
+ 2
+
+
+ CH1MS
+ Capture/Compare 1
+ selection
+ 8
+ 2
+
+
+ CH0CAPFLT
+ Input capture 0 filter
+ 4
+ 4
+
+
+ CH0CAPPSC
+ Input capture 0 prescaler
+ 2
+ 2
+
+
+ CH0MS
+ Capture/Compare 0
+ selection
+ 0
+ 2
+
+
+
+
+ CHCTL2
+ CHCTL2
+ capture/compare enable
+ register
+ 0x20
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH1NP
+ Capture/Compare 1 output
+ Polarity
+ 7
+ 1
+
+
+ CH1P
+ Capture/Compare 1 output
+ Polarity
+ 5
+ 1
+
+
+ CH1EN
+ Capture/Compare 1 output
+ enable
+ 4
+ 1
+
+
+ CH0NP
+ Capture/Compare 0 output
+ Polarity
+ 3
+ 1
+
+
+ CH0NEN
+ Capture/Compare 0 complementary output
+ enable
+ 2
+ 1
+
+
+ CH0P
+ Capture/Compare 0 output
+ Polarity
+ 1
+ 1
+
+
+ CH0EN
+ Capture/Compare 0 output
+ enable
+ 0
+ 1
+
+
+
+
+ CNT
+ CNT
+ counter
+ 0x24
+ 0x20
+ read-write
+ 0x0000
+
+
+ CNT
+ counter value
+ 0
+ 16
+
+
+
+
+ PSC
+ PSC
+ prescaler
+ 0x28
+ 0x20
+ read-write
+ 0x0000
+
+
+ PSC
+ Prescaler value
+ 0
+ 16
+
+
+
+
+ CAR
+ CAR
+ auto-reload register
+ 0x2C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CARL
+ Auto-reload value
+ 0
+ 16
+
+
+
+
+ CREP
+ CREP
+ repetition counter register
+ 0x30
+ 0x20
+ read-write
+ 0x0000
+
+
+ CREP
+ Repetition counter value
+ 0
+ 8
+
+
+
+
+ CH0CV
+ CH0CV
+ capture/compare register 0
+ 0x34
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CH0VAL
+ Capture/Compare 0 value
+ 0
+ 16
+
+
+
+
+ CH1CV
+ CH1CV
+ capture/compare register 1
+ 0x38
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CH1VAL
+ Capture/Compare 1 value
+ 0
+ 16
+
+
+
+
+ CCHP
+ CCHP
+ break and dead-time register
+ 0x44
+ 0x20
+ read-write
+ 0x0000
+
+
+ POEN
+ Main output enable
+ 15
+ 1
+
+
+ OAEN
+ Automatic output enable
+ 14
+ 1
+
+
+ BRKP
+ Break polarity
+ 13
+ 1
+
+
+ BRKEN
+ Break enable
+ 12
+ 1
+
+
+ ROS
+ Off-state selection for Run
+ mode
+ 11
+ 1
+
+
+ IOS
+ Off-state selection for Idle
+ mode
+ 10
+ 1
+
+
+ PROT
+ complementary register protect control
+ 8
+ 2
+
+
+ DTCFG
+ Dead-time generator configure
+ 0
+ 8
+
+
+
+
+ DMACFG
+ DMACFG
+ DMA configuration register
+ 0x48
+ 0x20
+ read-write
+ 0x0000
+
+
+ DMATC
+ DMA burst length
+ 8
+ 5
+
+
+ DMATA
+ DMA base address
+ 0
+ 5
+
+
+
+
+ DMATB
+ DMATB
+ DMA transfer buffer register
+ 0x4C
+ 0x20
+ read-write
+ 0x0000
+
+
+ DMATB
+ DMA register for burst
+ accesses
+ 0
+ 16
+
+
+
+
+ CFG
+ CFG
+ configuration register
+ 0xFC
+ 0x20
+ read-write
+ 0x0000
+
+
+ CHVSEL
+ Write CHxVAL register selection
+ 1
+ 1
+
+
+ OUTSEL
+ The output value selection
+ 0
+ 1
+
+
+
+
+
+
+ TIMER15
+ General-purpose-timers
+ TIMER
+ 0x40014400
+
+ 0x0
+ 0x400
+ registers
+
+
+ TIMER15
+ 21
+
+
+
+ CTL0
+ CTL0
+ control register 0
+ 0x0
+ 0x20
+ read-write
+ 0x0000
+
+
+ CKDIV
+ Clock division
+ 8
+ 2
+
+
+ ARSE
+ Auto-reload preload enable
+ 7
+ 1
+
+
+ SPM
+ One-pulse mode
+ 3
+ 1
+
+
+ UPS
+ Update request source
+ 2
+ 1
+
+
+ UPDIS
+ Update disable
+ 1
+ 1
+
+
+ CEN
+ Counter enable
+ 0
+ 1
+
+
+
+
+ CTL1
+ CTL1
+ control register 1
+ 0x04
+ 0x20
+ read-write
+ 0x0000
+
+
+ ISO0N
+ Output Idle state 0
+ 9
+ 1
+
+
+ ISO0
+ Output Idle state 0
+ 8
+ 1
+
+
+ DMAS
+ Capture/compare DMA
+ selection
+ 3
+ 1
+
+
+ CCUC
+ Capture/compare control update
+ selection
+ 2
+ 1
+
+
+ CCSE
+ Capture/compare preloaded
+ control
+ 0
+ 1
+
+
+
+
+ DMAINTEN
+ DMAINTEN
+ DMA/Interrupt enable register
+ 0x0C
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH0DEN
+ Capture/Compare 0 DMA request
+ enable
+ 9
+ 1
+
+
+ UPDEN
+ Update DMA request enable
+ 8
+ 1
+
+
+ BRKIE
+ Break interrupt enable
+ 7
+ 1
+
+
+ CMTIE
+ COM interrupt enable
+ 5
+ 1
+
+
+ CH0IE
+ Capture/Compare 0 interrupt
+ enable
+ 1
+ 1
+
+
+ UPIE
+ Update interrupt enable
+ 0
+ 1
+
+
+
+
+ INTF
+ INTF
+ interrupt flag register
+ 0x10
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH0OF
+ Capture/Compare 0 overcapture
+ flag
+ 9
+ 1
+
+
+ BRKIF
+ Break interrupt flag
+ 7
+ 1
+
+
+ CMTIF
+ COM interrupt flag
+ 5
+ 1
+
+
+ CH0IF
+ Capture/compare 0 interrupt
+ flag
+ 1
+ 1
+
+
+ UPIF
+ Update interrupt flag
+ 0
+ 1
+
+
+
+
+ SWEVG
+ SWEVG
+ event generation register
+ 0x14
+ 0x20
+ write-only
+ 0x0000
+
+
+ BRKG
+ Break generation
+ 7
+ 1
+
+
+ CMTG
+ Capture/Compare control update
+ generation
+ 5
+ 1
+
+
+ CH0G
+ Capture/compare 0
+ generation
+ 1
+ 1
+
+
+ UPG
+ Update generation
+ 0
+ 1
+
+
+
+
+ CHCTL0_Output
+ CHCTL0_Output
+ capture/compare mode register (output
+ mode)
+ 0x18
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CH0COMCTL
+ Output Compare 0 mode
+ 4
+ 3
+
+
+ CH0COMSEN
+ Output Compare 0 preload
+ enable
+ 3
+ 1
+
+
+ CH0COMFEN
+ Output Compare 0 fast
+ enable
+ 2
+ 1
+
+
+ CH0MS
+ Capture/Compare 0
+ selection
+ 0
+ 2
+
+
+
+
+ CHCTL0_Input
+ CHCTL0_Input
+ capture/compare mode register 0 (input
+ mode)
+ CHCTL0_Output
+ 0x18
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH0CAPFLT
+ Input capture 0 filter
+ 4
+ 4
+
+
+ CH0CAPPSC
+ Input capture 0 prescaler
+ 2
+ 2
+
+
+ CH0MS
+ Capture/Compare 0
+ selection
+ 0
+ 2
+
+
+
+
+ CHCTL2
+ CHCTL2
+ capture/compare enable
+ register
+ 0x20
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH0NP
+ Capture/Compare 0 output
+ Polarity
+ 3
+ 1
+
+
+ CH0NEN
+ Capture/Compare 0 complementary output
+ enable
+ 2
+ 1
+
+
+ CH0P
+ Capture/Compare 0 output
+ Polarity
+ 1
+ 1
+
+
+ CH0EN
+ Capture/Compare 0 output
+ enable
+ 0
+ 1
+
+
+
+
+ CNT
+ CNT
+ counter
+ 0x24
+ 0x20
+ read-write
+ 0x0000
+
+
+ CNT
+ counter value
+ 0
+ 16
+
+
+
+
+ PSC
+ PSC
+ prescaler
+ 0x28
+ 0x20
+ read-write
+ 0x0000
+
+
+ PSC
+ Prescaler value
+ 0
+ 16
+
+
+
+
+ CAR
+ CAR
+ auto-reload register
+ 0x2C
+ 0x20
+ read-write
+ 0x00000000
+
+
+ CARL
+ Auto-reload value
+ 0
+ 16
+
+
+
+
+ CREP
+ CREP
+ repetition counter register
+ 0x30
+ 0x20
+ read-write
+ 0x0000
+
+
+ CREP
+ Repetition counter value
+ 0
+ 8
+
+
+
+
+ CH0CV
+ CH0CV
+ capture/compare register 0
+ 0x34
+ 0x20
+ read-write
+ 0x0000
+
+
+ CH0VAL
+ Capture/Compare 0 value
+ 0
+ 16
+
+
+
+
+ CCHP
+ CCHP
+ break and dead-time register
+ 0x44
+ 0x20
+ read-write
+ 0x0000
+
+
+ POEN
+ Main output enable
+ 15
+ 1
+
+
+ OAEN
+ Automatic output enable
+ 14
+ 1
+
+
+ BRKP
+ Break polarity
+ 13
+ 1
+
+
+ BRKEN
+ Break enable
+ 12
+ 1
+
+
+ ROS
+ Off-state selection for Run
+ mode
+ 11
+ 1
+
+
+ IOS
+ Off-state selection for Idle
+ mode
+ 10
+ 1
+
+
+ PROT
+ complementary register protect control
+ 8
+ 2
+
+
+ DTCFG
+ Dead-time generator setup
+ 0
+ 8
+
+
+
+
+ DMACFG
+ DMACFG
+ DMA configuration register
+ 0x48
+ 0x20
+ read-write
+ 0x0000
+
+
+ DMATC
+ DMA transfer count
+ 8
+ 5
+
+
+ DMATA
+ DMA transfer access start address
+ 0
+ 5
+
+
+
+
+ DMATB
+ DMATB
+ DMA transfer buffer register
+ 0x4C
+ 0x20
+ read-write
+ 0x0000
+
+
+ DMATB
+ DMA register for burst
+ accesses
+ 0
+ 16
+
+
+
+
+ CFG
+ CFG
+ configuration register
+ 0xFC
+ 0x20
+ read-write
+ 0x0000
+
+
+ OUTSEL
+ The output value selection
+ 0
+ 1
+
+
+ CHVSEL
+ Write CHxVAL register selection
+ 1
+ 1
+
+
+
+
+
+
+ TIMER16
+ 0x40014800
+
+ TIMER16
+ 22
+
+
+
+ USART0
+ Universal synchronous asynchronous receiver
+ transmitter
+ USART
+ 0x40013800
+
+ 0x0
+ 0x400
+ registers
+
+
+ USART0
+ 27
+
+
+
+ CTL0
+ CTL0
+ Control register 0
+ 0x0
+ 0x20
+ read-write
+ 0x00000000
+
+
+ EBIE
+ End of Block interrupt
+ enable
+ 27
+ 1
+
+
+ RTIE
+ Receiver timeout interrupt
+ enable
+ 26
+ 1
+
+
+ DEA
+ Driver Enable assertion
+ time
+ 21
+ 5
+
+
+ DED
+ Driver Enable deassertion
+ time
+ 16
+ 5
+
+
+ OVSMOD
+ Oversampling mode
+ 15
+ 1
+
+
+ AMIE
+ Character match interrupt
+ enable
+ 14
+ 1
+
+
+ MEN
+ Mute mode enable
+ 13
+ 1
+
+
+ WL
+ Word length
+ 12
+ 1
+
+
+ WM
+ Receiver wakeup method
+ 11
+ 1
+
+
+ PCEN
+ Parity control enable
+ 10
+ 1
+
+
+ PM
+ Parity selection
+ 9
+ 1
+
+
+ PERRIE
+ PE interrupt enable
+ 8
+ 1
+
+
+ TBEIE
+ interrupt enable
+ 7
+ 1
+
+
+ TCIE
+ Transmission complete interrupt
+ enable
+ 6
+ 1
+
+
+ RBNEIE
+ RXNE interrupt enable
+ 5
+ 1
+
+
+ IDLEIE
+ IDLE interrupt enable
+ 4
+ 1
+
+
+ TEN
+ Transmitter enable
+ 3
+ 1
+
+
+ REN
+ Receiver enable
+ 2
+ 1
+
+
+ UESM
+ USART enable in Stop mode
+ 1
+ 1
+
+
+ UEN
+ USART enable
+ 0
+ 1
+
+
+
+
+ CTL1
+ CTL1
+ Control register 1
+ 0x4
+ 0x20
+ read-write
+ 0x00000000
+
+
+ ADDR
+ Address of the USART node
+ 24
+ 8
+
+
+ RTEN
+ Receiver timeout enable
+ 23
+ 1
+
+
+ ABDM
+ Auto baud rate mode
+ 21
+ 2
+
+
+ ABDEN
+ Auto baud rate enable
+ 20
+ 1
+
+
+ MSBF
+ Most significant bit first
+ 19
+ 1
+
+
+ DINV
+ Binary data inversion
+ 18
+ 1
+
+
+ TINV
+ TX pin active level
+ inversion
+ 17
+ 1
+
+
+ RINV
+ RX pin active level
+ inversion
+ 16
+ 1
+
+
+ STRP
+ Swap TX/RX pins
+ 15
+ 1
+
+
+ LMEN
+ LIN mode enable
+ 14
+ 1
+
+
+ STB
+ STOP bits
+ 12
+ 2
+
+
+ CKEN
+ Clock enable
+ 11
+ 1
+
+
+ CPL
+ Clock polarity
+ 10
+ 1
+
+
+ CPH
+ Clock phase
+ 9
+ 1
+
+
+ CLEN
+ Last bit clock pulse
+ 8
+ 1
+
+
+ LBDIE
+ LIN break detection interrupt
+ enable
+ 6
+ 1
+
+
+ LBLEN
+ LIN break detection length
+ 5
+ 1
+
+
+ ADDM
+ 7-bit Address Detection/4-bit Address
+ Detection
+ 4
+ 1
+
+
+
+
+ CTL2
+ CTL2
+ Control register 2
+ 0x8
+ 0x20
+ read-write
+ 0x00000000
+
+
+ WUIE
+ Wakeup from Stop mode interrupt
+ enable
+ 22
+ 1
+
+
+ WUM
+ Wakeup from Stop mode interrupt flag
+ selection
+ 20
+ 2
+
+
+ SCRTNUM
+ Smartcard auto-retry count
+ 17
+ 3
+
+
+ DEP
+ Driver enable polarity
+ selection
+ 15
+ 1
+
+
+ DEM
+ Driver enable mode
+ 14
+ 1
+
+
+ DDRE
+ DMA Disable on Reception
+ Error
+ 13
+ 1
+
+
+ OVRD
+ Overrun Disable
+ 12
+ 1
+
+
+ OSB
+ One sample bit method
+ enable
+ 11
+ 1
+
+
+ CTSIE
+ CTS interrupt enable
+ 10
+ 1
+
+
+ CTSEN
+ CTS enable
+ 9
+ 1
+
+
+ RTSEN
+ RTS enable
+ 8
+ 1
+
+
+ DENT
+ DMA enable transmitter
+ 7
+ 1
+
+
+ DENR
+ DMA enable receiver
+ 6
+ 1
+
+
+ SCEN
+ Smartcard mode enable
+ 5
+ 1
+
+
+ NKEN
+ Smartcard NACK enable
+ 4
+ 1
+
+
+ HDEN
+ Half-duplex selection
+ 3
+ 1
+
+
+ IRLP
+ IrDA low-power
+ 2
+ 1
+
+
+ IREN
+ IrDA mode enable
+ 1
+ 1
+
+
+ ERRIE
+ Error interrupt enable
+ 0
+ 1
+
+
+
+
+ BAUD
+ BAUD
+ Baud rate register
+ 0xC
+ 0x20
+ read-write
+ 0x00000000
+
+
+ BRR_INT
+ integer of baud-rate divider
+ 4
+ 12
+
+
+ BRR_FRA
+ integer of baud-rate divider
+ 0
+ 4
+
+
+
+
+ GP
+ GP
+ Guard time and prescaler
+ register
+ 0x10
+ 0x20
+ read-write
+ 0x00000000
+
+
+ GUAT
+ Guard time value
+ 8
+ 8
+
+
+ PSC
+ Prescaler value
+ 0
+ 8
+
+
+
+
+ RT
+ RT
+ Receiver timeout register
+ 0x14
+ 0x20
+ read-write
+ 0x00000000
+
+
+ BL
+ Block Length
+ 24
+ 8
+
+
+ RT
+ Receiver timeout value
+ 0
+ 24
+
+
+
+
+ CMD
+ CMD
+ Request register
+ 0x18
+ 0x20
+ write-only
+ 0x00000000
+
+
+ TXFCMD
+ Transmit data flush
+ request
+ 4
+ 1
+
+
+ RXFCMD
+ Receive data flush request
+ 3
+ 1
+
+
+ MMCMD
+ Mute mode request
+ 2
+ 1
+
+
+ SBKCMD
+ Send break request
+ 1
+ 1
+
+
+ ABDCMD
+ Auto baud rate request
+ 0
+ 1
+
+
+
+
+ STAT
+ STAT
+ Interrupt & status
+ register
+ 0x1C
+ 0x20
+ read-only
+ 0x000000C0
+
+
+ REA
+ Receive enable acknowledge
+ flag
+ 22
+ 1
+
+
+ TEA
+ Transmit enable acknowledge
+ flag
+ 21
+ 1
+
+
+ WUF
+ Wakeup from Stop mode flag
+ 20
+ 1
+
+
+ RWU
+ Receiver wakeup from Mute
+ mode
+ 19
+ 1
+
+
+ SBF
+ Send break flag
+ 18
+ 1
+
+
+ AMF
+ character match flag
+ 17
+ 1
+
+
+ BSY
+ Busy flag
+ 16
+ 1
+
+
+ ABDF
+ Auto baud rate flag
+ 15
+ 1
+
+
+ ABDE
+ Auto baud rate error
+ 14
+ 1
+
+
+ EBF
+ End of block flag
+ 12
+ 1
+
+
+ RTF
+ Receiver timeout
+ 11
+ 1
+
+
+ CTS
+ CTS flag
+ 10
+ 1
+
+
+ CTSF
+ CTS interrupt flag
+ 9
+ 1
+
+
+ LBDF
+ LIN break detection flag
+ 8
+ 1
+
+
+ TBE
+ Transmit data register
+ empty
+ 7
+ 1
+
+
+ TC
+ Transmission complete
+ 6
+ 1
+
+
+ RBNE
+ Read data register not
+ empty
+ 5
+ 1
+
+
+ IDLEF
+ Idle line detected
+ 4
+ 1
+
+
+ ORERR
+ Overrun error
+ 3
+ 1
+
+
+ NERR
+ Noise detected flag
+ 2
+ 1
+
+
+ FERR
+ Framing error
+ 1
+ 1
+
+
+ PERR
+ Parity error
+ 0
+ 1
+
+
+
+
+ INTC
+ INTC
+ Interrupt flag clear register
+ 0x20
+ 0x20
+ write-only
+ 0x00000000
+
+
+ WUC
+ Wakeup from Stop mode clear
+ flag
+ 20
+ 1
+
+
+ AMC
+ Character match clear flag
+ 17
+ 1
+
+
+ EBC
+ End of timeout clear flag
+ 12
+ 1
+
+
+ RTC
+ Receiver timeout clear
+ flag
+ 11
+ 1
+
+
+ CTSC
+ CTS clear flag
+ 9
+ 1
+
+
+ LBDC
+ LIN break detection clear
+ flag
+ 8
+ 1
+
+
+ TCC
+ Transmission complete clear
+ flag
+ 6
+ 1
+
+
+ IDLEC
+ Idle line detected clear
+ flag
+ 4
+ 1
+
+
+ OREC
+ Overrun error clear flag
+ 3
+ 1
+
+
+ NEC
+ Noise detected clear flag
+ 2
+ 1
+
+
+ FEC
+ Framing error clear flag
+ 1
+ 1
+
+
+ PEC
+ Parity error clear flag
+ 0
+ 1
+
+
+
+
+ RDATA
+ RDATA
+ Receive data register
+ 0x24
+ 0x20
+ read-only
+ 0x00000000
+
+
+ RDATA
+ Receive data value
+ 0
+ 9
+
+
+
+
+ TDATA
+ TDATA
+ Transmit data register
+ 0x28
+ 0x20
+ read-write
+ 0x00000000
+
+
+ TDATA
+ Transmit data value
+ 0
+ 9
+
+
+
+
+ CHC
+ CHC
+ coherence control register
+ 0xC0
+ 0x20
+ read-write
+ 0x00000000
+
+
+ EPERR
+ Early parity error flag
+ 8
+ 1
+
+
+ HCM
+ Hardware flow control coherence mode
+ 0
+ 1
+
+
+
+
+ RFCS
+ RFCS
+ USART receive FIFO control and status register
+ 0xD0
+ 0x20
+ 0x00000400
+
+
+ RFFINT
+ Receive FIFO full interrupt flag
+ 15
+ 1
+ read-write
+
+
+ RFCNT
+ Receive FIFO count number
+ 12
+ 3
+ read-only
+
+
+ RFF
+ Receive FIFO full flag
+ 11
+ 1
+ read-only
+
+
+ RFE
+ Receive FIFO empty flag
+ 10
+ 1
+ read-only
+
+
+ RFFIE
+ Receive FIFO full interrupt enable
+ 9
+ 1
+ read-write
+
+
+ RFEN
+ Receive FIFO enable
+ 8
+ 1
+ read-write
+
+
+ ELNACK
+ Early NKEN when smartcard mode is selected
+ 0
+ 1
+ read-write
+
+
+
+
+
+
+ USART1
+ 0x40004400
+
+ USART1
+ 28
+
+
+
+ WWDGT
+ Window watchdog timer
+ WWDGT
+ 0x40002C00
+
+ 0x0
+ 0x400
+ registers
+
+
+ WWDGT
+ 0
+
+
+
+ CTL
+ CTL
+ Control register
+ 0x0
+ 0x20
+ read-write
+ 0x0000007F
+
+
+ WDGTEN
+ Activation bit
+ 7
+ 1
+
+
+ CNT
+ 7-bit counter
+ 0
+ 7
+
+
+
+
+ CFG
+ CFG
+ Configuration register
+ 0x04
+ 0x20
+ read-write
+ 0x0000007F
+
+
+ EWIE
+ Early wakeup interrupt
+ 9
+ 1
+
+
+ PSC
+ Prescaler
+ 7
+ 2
+
+
+ WIN
+ 7-bit window value
+ 0
+ 7
+
+
+
+
+ STAT
+ STAT
+ Status register
+ 0x08
+ 0x20
+ read-write
+ 0x00000000
+
+
+ EWIF
+ Early wakeup interrupt
+ flag
+ 0
+ 1
+
+
+
+
+
+
+
+
+
diff --git a/Inc/board_config.h b/Inc/board_config.h
index 006612d..164c619 100644
--- a/Inc/board_config.h
+++ b/Inc/board_config.h
@@ -1,92 +1,86 @@
-#ifndef BOARD_CONFIG_H
-#define BOARD_CONFIG_H
-
-#include "version.h"
-
-#define GD32E23XF4 0x10
-#define GD32E23XF6 0x20
-#define GD32E23XF8 0x40
-
-/* >>>>>>>>>>>>>>>>>>>>[RS485 PHY DEFINE]<<<<<<<<<<<<<<<<<<<< */
-
-// #define RS485_MAX13487 // RS485 PHY : MAX13487 (AutoDir)
-#undef RS485_MAX13487 // RS485 PHY : SP3487 (no AutoDir)
-
-/* >>>>>>>>>>>>>>>>>>>>[IIC TYPE DEFINE]<<<<<<<<<<<<<<<<<<<< */
-
-// #define SOFTWARE_IIC // IIC Type : Software IIC
-#undef SOFTWARE_IIC // IIC Type : Hardware IIC
-
-/* >>>>>>>>>>>>>>>>>>>>[DEBUG ASSERTIONS DEFINE]<<<<<<<<<<<<<<<<<<<< */
-
-// #define DEBUG_VERBOSE // Debug Assertions Status : Debug Verbose Information
-#undef DEBUG_VERBOSE // Debug Assertions Status : No Debug Verbose Information
-
-/* >>>>>>>>>>>>>>>>>>>>[EDDY DRIVE CURRENT DETECTION]<<<<<<<<<<<<<<<<<<<< */
-
-// #define EDDY_DRIVE_CURRENT_DETECTION // Eddy Drive Current Detection : Enable
-#undef EDDY_DRIVE_CURRENT_DETECTION // Eddy Drive Current Detection : Disable
-
-/* >>>>>>>>>>>>>>>>>>>>[COMMAND DEBUG]<<<<<<<<<<<<<<<<<<<< */
-
-// #define COM_DEBUG // Enable Command Debug Information
-#undef COM_DEBUG // Disable Command Debug Information
-
-/* >>>>>>>>>>>>>>>>>>>>>[LDC1612 DEBUG]<<<<<<<<<<<<<<<<<<<< */
-
-// #define LDC_DEBUG // LDC1612 Driver Debug : Enable
-#undef LDC_DEBUG // LDC1612 Driver Debug : Disable
-
-/******************************************************************************/
-
-/* Dynamic USART Configuration Structure */
-typedef struct {
- uint32_t rcu_usart;
- uint32_t usart_periph;
- IRQn_Type irq_type;
- void (*irq_handler)(void); // 函数指针:指向中断处理函数
-} usart_config_t;
-
-extern usart_config_t g_usart_config;
-extern uint8_t g_mcu_flash_size;
-
-/* USART中断处理函数声明 */
-void usart0_irq_handler(void);
-void usart1_irq_handler(void);
-
-/******************************************************************************/
-
-#define RCU_GPIO_I2C RCU_GPIOF
-#define RCU_I2C RCU_I2C0
-#define I2C_SCL_PORT GPIOF
-#define I2C_SCL_PIN GPIO_PIN_1
-#define I2C_SDA_PORT GPIOF
-#define I2C_SDA_PIN GPIO_PIN_0
-#define I2C_GPIO_AF GPIO_AF_1
-
-#define I2C_DEBUG_UART USART0
-
-/******************************************************************************/
-
-#define LED_RCU RCU_GPIOA
-#define LED_PORT GPIOA
-#define LED_PIN GPIO_PIN_7
-
-/******************************************************************************/
-
-#define RS485_RCU (g_usart_config.rcu_usart)
-#define RS485_PHY (g_usart_config.usart_periph)
-#define RS485_IRQ (g_usart_config.irq_type)
-#define RS485_GPIO_RCU RCU_GPIOA
-#define RS485_GPIO_PORT GPIOA
-#define RS485_EN_PIN GPIO_PIN_1
-#define RS485_TX_PIN GPIO_PIN_2
-#define RS485_RX_PIN GPIO_PIN_3
-#define RS485_BAUDRATE 115200U
-
-/******************************************************************************/
-
-void mcu_detect_and_config(void);
-uint8_t get_flash_size(void);
-
-#endif //BOARD_CONFIG_H
+#ifndef BOARD_CONFIG_H
+#define BOARD_CONFIG_H
+
+#define GD32E23XF4 0x10
+#define GD32E23XF6 0x20
+#define GD32E23XF8 0x40
+
+/* >>>>>>>>>>>>>>>>>>>>[RS485 PHY DEFINE]<<<<<<<<<<<<<<<<<<<< */
+
+// #define RS485_MAX13487 // RS485 PHY : MAX13487 (AutoDir)
+#undef RS485_MAX13487 // RS485 PHY : SP3487 (no AutoDir)
+
+/* >>>>>>>>>>>>>>>>>>>>[IIC TYPE DEFINE]<<<<<<<<<<<<<<<<<<<< */
+
+// #define SOFTWARE_IIC // IIC Type : Software IIC
+#undef SOFTWARE_IIC // IIC Type : Hardware IIC
+
+/* >>>>>>>>>>>>>>>>>>>>[DEBUG ASSERTIONS DEFINE]<<<<<<<<<<<<<<<<<<<< */
+
+// #define DEBUG_VERBOSE // Debug Assertions Status : Debug Verbose Information
+#undef DEBUG_VERBOSE // Debug Assertions Status : No Debug Verbose Information
+
+/* >>>>>>>>>>>>>>>>>>>>[EDDY DRIVE CURRENT DETECTION]<<<<<<<<<<<<<<<<<<<< */
+
+// #define EDDY_DRIVE_CURRENT_DETECTION // Eddy Drive Current Detection : Enable
+#undef EDDY_DRIVE_CURRENT_DETECTION // Eddy Drive Current Detection : Disable
+
+/******************************************************************************/
+
+#define MCU_CODE 24U
+
+#define FW_VERSION_MAJOR 1
+#define FW_VERSION_MINOR 1
+#define FW_VERSION_PATCH 3
+
+/* Dynamic USART Configuration Structure */
+typedef struct {
+ uint32_t rcu_usart;
+ uint32_t usart_periph;
+ IRQn_Type irq_type;
+ void (*irq_handler)(void); // 函数指针:指向中断处理函数
+} usart_config_t;
+
+extern usart_config_t g_usart_config;
+extern uint8_t g_mcu_flash_size;
+
+/* USART中断处理函数声明 */
+void usart0_irq_handler(void);
+void usart1_irq_handler(void);
+
+/******************************************************************************/
+
+#define RCU_GPIO_I2C RCU_GPIOF
+#define RCU_I2C RCU_I2C0
+#define I2C_SCL_PORT GPIOF
+#define I2C_SCL_PIN GPIO_PIN_1
+#define I2C_SDA_PORT GPIOF
+#define I2C_SDA_PIN GPIO_PIN_0
+#define I2C_GPIO_AF GPIO_AF_1
+
+#define I2C_DEBUG_UART USART0
+
+/******************************************************************************/
+
+#define LED_RCU RCU_GPIOA
+#define LED_PORT GPIOA
+#define LED_PIN GPIO_PIN_7
+
+/******************************************************************************/
+
+#define RS485_RCU (g_usart_config.rcu_usart)
+#define RS485_PHY (g_usart_config.usart_periph)
+#define RS485_IRQ (g_usart_config.irq_type)
+#define RS485_GPIO_RCU RCU_GPIOA
+#define RS485_GPIO_PORT GPIOA
+#define RS485_EN_PIN GPIO_PIN_1
+#define RS485_TX_PIN GPIO_PIN_2
+#define RS485_RX_PIN GPIO_PIN_3
+#define RS485_BAUDRATE 115200U
+
+/******************************************************************************/
+
+void mcu_detect_and_config(void);
+uint8_t get_flash_size(void);
+
+#endif //BOARD_CONFIG_H
diff --git a/Inc/command.h b/Inc/command.h
index 7541fc9..8aec02d 100644
--- a/Inc/command.h
+++ b/Inc/command.h
@@ -1,112 +1,108 @@
-/**
- * @file command.h
- * @brief 串口命令解析与处理模块接口声明。
- * @details 提供基于环形缓冲区的串口协议解析、命令处理及状态管理功能,
- * 支持格式为 D5 03 LEN [cmd] CRC 的命令帧解析与响应。
- */
-#ifndef COMMAND_H
-#define COMMAND_H
-
-#include
-#include
-
-/**
- * @defgroup Command 命令处理模块
- * @brief 串口命令解析与处理
- * @{
- */
-
-/** @brief 传感器周期上报使能标志 */
-extern volatile bool g_eddy_current_sensor_report_enabled;
-
-/**
- * @section Command_Protocol 协议格式
- * 接收命令帧格式:
- * @code
- * [0] HEADER = 0xD5 // 包头标识
- * [1] BOARD_TYPE = 0x03 // 板卡类型标识
- * [2] LEN = 数据区字节数 // 有效载荷长度
- * [3..(3+LEN-1)] 数据 // 命令数据
- * [last] CRC // 校验码(从索引1累加到len-2的低8位)
- * @endcode
- *
- * 响应帧格式:
- * @code
- * [0] HEADER = 0xB5 // 响应包头
- * [1] TYPE // 响应类型(0xF0=成功,0xF1..=错误类型)
- * [2] LEN // 响应数据长度
- * [3..(3+LEN-1)] 数据 // 响应数据
- * [last] CRC // 校验码
- * @endcode
- *
- * @section Command_Usage 使用说明
- * 1) 初始化环形缓冲区:
- * @code{.c}
- * uart_ring_buffer_init();
- * @endcode
- *
- * 2) 在主循环中调用命令处理:
- * @code{.c}
- * while(1) {
- * command_process(); // 处理接收到的命令
- * // 其他业务逻辑
- * }
- * @endcode
- *
- * 3) 查询传感器上报状态:
- * @code{.c}
- * if(get_sensor_report_enabled()) {
- * // 执行传感器数据上报
- * }
- * @endcode
- */
-
-/**
- * @brief 获取电涡流传感器周期上报使能状态。
- * @return bool 上报状态。
- * @retval true 传感器周期上报已启用。
- * @retval false 传感器周期上报已禁用。
- * @ingroup Command
- */
-bool get_eddy_sensor_report_enabled(void);
-
-/**
- * @brief 设置电涡流传感器周期上报使能状态。
- * @param enabled 上报使能标志。
- * @arg true 启用传感器周期上报。
- * @arg false 禁用传感器周期上报。
- * @note 推荐通过此函数修改状态,便于后续功能扩展。
- * @ingroup Command
- */
-void set_eddy_sensor_report_status(bool enabled);
-
-/**
- * @brief 处理串口环形缓冲区中的命令数据。
- * @details 基于状态机的非阻塞协议解析器,处理完整的命令帧并自动响应。
- * 每次调用处理缓冲区中所有可用数据,遇到错误时自动重置状态机。
- * @note 使用静态变量维护解析状态,函数不可重入。
- * @warning 依赖环形缓冲区正确实现,建议在主循环中周期调用。
- * @ingroup Command
- */
-void command_process(void);
-
-/**
- * @brief 解析并处理完整的命令帧。
- * @param cmd 指向完整命令帧的缓冲区(从包头0xD5开始)。
- * @param len 命令帧总长度(字节)。
- * @note 内部函数,由 command_process() 调用,一般不直接使用。
- * @ingroup Command
- */
-void handle_command(const uint8_t *cmd, uint8_t len);
-
-/** @} */ // end of Command group
-
-void eddy_current_report(void);
-
-void temperature_raw_value_report(void);
-
-void eddy_current_compensated_report(void);
-
-void calibration_data_report(void);
-
-#endif // COMMAND_H
+/**
+ * @file command.h
+ * @brief 串口命令解析与处理模块接口声明。
+ * @details 提供基于环形缓冲区的串口协议解析、命令处理及状态管理功能,
+ * 支持格式为 D5 03 LEN [cmd] CRC 的命令帧解析与响应。
+ */
+#ifndef COMMAND_H
+#define COMMAND_H
+
+#include
+#include
+
+/**
+ * @defgroup Command 命令处理模块
+ * @brief 串口命令解析与处理
+ * @{
+ */
+
+/** @brief 传感器周期上报使能标志 */
+extern volatile bool g_eddy_current_sensor_report_enabled;
+
+/**
+ * @section Command_Protocol 协议格式
+ * 接收命令帧格式:
+ * @code
+ * [0] HEADER = 0xD5 // 包头标识
+ * [1] BOARD_TYPE = 0x03 // 板卡类型标识
+ * [2] LEN = 数据区字节数 // 有效载荷长度
+ * [3..(3+LEN-1)] 数据 // 命令数据
+ * [last] CRC // 校验码(从索引1累加到len-2的低8位)
+ * @endcode
+ *
+ * 响应帧格式:
+ * @code
+ * [0] HEADER = 0xB5 // 响应包头
+ * [1] TYPE // 响应类型(0xF0=成功,0xF1..=错误类型)
+ * [2] LEN // 响应数据长度
+ * [3..(3+LEN-1)] 数据 // 响应数据
+ * [last] CRC // 校验码
+ * @endcode
+ *
+ * @section Command_Usage 使用说明
+ * 1) 初始化环形缓冲区:
+ * @code{.c}
+ * uart_ring_buffer_init();
+ * @endcode
+ *
+ * 2) 在主循环中调用命令处理:
+ * @code{.c}
+ * while(1) {
+ * command_process(); // 处理接收到的命令
+ * // 其他业务逻辑
+ * }
+ * @endcode
+ *
+ * 3) 查询传感器上报状态:
+ * @code{.c}
+ * if(get_sensor_report_enabled()) {
+ * // 执行传感器数据上报
+ * }
+ * @endcode
+ */
+
+/**
+ * @brief 获取电涡流传感器周期上报使能状态。
+ * @return bool 上报状态。
+ * @retval true 传感器周期上报已启用。
+ * @retval false 传感器周期上报已禁用。
+ * @ingroup Command
+ */
+bool get_eddy_sensor_report_enabled(void);
+
+/**
+ * @brief 设置电涡流传感器周期上报使能状态。
+ * @param enabled 上报使能标志。
+ * @arg true 启用传感器周期上报。
+ * @arg false 禁用传感器周期上报。
+ * @note 推荐通过此函数修改状态,便于后续功能扩展。
+ * @ingroup Command
+ */
+void set_eddy_sensor_report_status(bool enabled);
+
+/**
+ * @brief 处理串口环形缓冲区中的命令数据。
+ * @details 基于状态机的非阻塞协议解析器,处理完整的命令帧并自动响应。
+ * 每次调用处理缓冲区中所有可用数据,遇到错误时自动重置状态机。
+ * @note 使用静态变量维护解析状态,函数不可重入。
+ * @warning 依赖环形缓冲区正确实现,建议在主循环中周期调用。
+ * @ingroup Command
+ */
+void command_process(void);
+
+/**
+ * @brief 解析并处理完整的命令帧。
+ * @param cmd 指向完整命令帧的缓冲区(从包头0xD5开始)。
+ * @param len 命令帧总长度(字节)。
+ * @note 内部函数,由 command_process() 调用,一般不直接使用。
+ * @ingroup Command
+ */
+void handle_command(const uint8_t *cmd, uint8_t len);
+
+/** @} */ // end of Command group
+
+void eddy_current_report(void);
+
+void temperature_raw_value_report(void);
+
+#endif // COMMAND_H
diff --git a/Inc/gd32e23x_it.h b/Inc/gd32e23x_it.h
index 04a9d99..171ecfb 100644
--- a/Inc/gd32e23x_it.h
+++ b/Inc/gd32e23x_it.h
@@ -1,52 +1,52 @@
-/*!
- \file gd32e23x_it.h
- \brief the header file of the ISR
-
- \version 2025-02-10, V2.4.0, demo for GD32E23x
-*/
-
-/*
- Copyright (c) 2025, GigaDevice Semiconductor Inc.
-
- Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- 3. Neither the name of the copyright holder nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
-OF SUCH DAMAGE.
-*/
-
-#ifndef GD32E23X_IT_H
-#define GD32E23X_IT_H
-
-#include "gd32e23x.h"
-
-/* function declarations */
-/* this function handles NMI exception */
-void NMI_Handler(void);
-/* this function handles HardFault exception */
-void HardFault_Handler(void);
-/* this function handles SVC exception */
-void SVC_Handler(void);
-/* this function handles PendSV exception */
-void PendSV_Handler(void);
-/* this function handles SysTick exception */
-void SysTick_Handler(void);
-
-#endif /* GD32E23X_IT_H */
+/*!
+ \file gd32e23x_it.h
+ \brief the header file of the ISR
+
+ \version 2025-02-10, V2.4.0, demo for GD32E23x
+*/
+
+/*
+ Copyright (c) 2025, GigaDevice Semiconductor Inc.
+
+ Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ 3. Neither the name of the copyright holder nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGE.
+*/
+
+#ifndef GD32E23X_IT_H
+#define GD32E23X_IT_H
+
+#include "gd32e23x.h"
+
+/* function declarations */
+/* this function handles NMI exception */
+void NMI_Handler(void);
+/* this function handles HardFault exception */
+void HardFault_Handler(void);
+/* this function handles SVC exception */
+void SVC_Handler(void);
+/* this function handles PendSV exception */
+void PendSV_Handler(void);
+/* this function handles SysTick exception */
+void SysTick_Handler(void);
+
+#endif /* GD32E23X_IT_H */
diff --git a/Inc/gd32e23x_libopt.h b/Inc/gd32e23x_libopt.h
index 197ebde..14b89e8 100644
--- a/Inc/gd32e23x_libopt.h
+++ b/Inc/gd32e23x_libopt.h
@@ -1,58 +1,58 @@
-/*!
- \file gd32e23x_libopt.h
- \brief library optional for gd32e23x
-
- \version 2025-02-10, V2.4.0, demo for GD32E23x
-*/
-
-/*
- Copyright (c) 2025, GigaDevice Semiconductor Inc.
-
- Redistribution and use in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
- 1. Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
- 3. Neither the name of the copyright holder nor the names of its contributors
- may be used to endorse or promote products derived from this software without
- specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
-INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
-OF SUCH DAMAGE.
-*/
-
-#ifndef GD32E23X_LIBOPT_H
-#define GD32E23X_LIBOPT_H
-
-#include "gd32e23x_adc.h"
-#include "gd32e23x_crc.h"
-#include "gd32e23x_dbg.h"
-#include "gd32e23x_dma.h"
-#include "gd32e23x_exti.h"
-#include "gd32e23x_fmc.h"
-#include "gd32e23x_gpio.h"
-#include "gd32e23x_syscfg.h"
-#include "gd32e23x_i2c.h"
-#include "gd32e23x_fwdgt.h"
-#include "gd32e23x_pmu.h"
-#include "gd32e23x_rcu.h"
-#include "gd32e23x_rtc.h"
-#include "gd32e23x_spi.h"
-#include "gd32e23x_timer.h"
-#include "gd32e23x_usart.h"
-#include "gd32e23x_wwdgt.h"
-#include "gd32e23x_misc.h"
-#include "gd32e23x_cmp.h"
-
-#endif /* GD32E23X_LIBOPT_H */
+/*!
+ \file gd32e23x_libopt.h
+ \brief library optional for gd32e23x
+
+ \version 2025-02-10, V2.4.0, demo for GD32E23x
+*/
+
+/*
+ Copyright (c) 2025, GigaDevice Semiconductor Inc.
+
+ Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ 1. Redistributions of source code must retain the above copyright notice, this
+ list of conditions and the following disclaimer.
+ 2. Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+ 3. Neither the name of the copyright holder nor the names of its contributors
+ may be used to endorse or promote products derived from this software without
+ specific prior written permission.
+
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
+OF SUCH DAMAGE.
+*/
+
+#ifndef GD32E23X_LIBOPT_H
+#define GD32E23X_LIBOPT_H
+
+#include "gd32e23x_adc.h"
+#include "gd32e23x_crc.h"
+#include "gd32e23x_dbg.h"
+#include "gd32e23x_dma.h"
+#include "gd32e23x_exti.h"
+#include "gd32e23x_fmc.h"
+#include "gd32e23x_gpio.h"
+#include "gd32e23x_syscfg.h"
+#include "gd32e23x_i2c.h"
+#include "gd32e23x_fwdgt.h"
+#include "gd32e23x_pmu.h"
+#include "gd32e23x_rcu.h"
+#include "gd32e23x_rtc.h"
+#include "gd32e23x_spi.h"
+#include "gd32e23x_timer.h"
+#include "gd32e23x_usart.h"
+#include "gd32e23x_wwdgt.h"
+#include "gd32e23x_misc.h"
+#include "gd32e23x_cmp.h"
+
+#endif /* GD32E23X_LIBOPT_H */
diff --git a/Inc/i2c.h b/Inc/i2c.h
index eaa7097..874b7cd 100644
--- a/Inc/i2c.h
+++ b/Inc/i2c.h
@@ -1,189 +1,127 @@
-//
-// Created by dell on 24-12-20.
-//
-
-#ifndef I2C_H
-#define I2C_H
-
-#include "gd32e23x_it.h"
-#include "gd32e23x.h"
-#include "systick.h"
-#include
-#include
-#include
-#include
-#include
-
-#include "board_config.h"
-
-/******************************************************************************/
-
-#define I2C_SPEED 100000U /* 100kHz */
-#define I2C_TIME_OUT 5000U /* 5000 loops timeout */
-#define I2C_MAX_RETRY 3U /* Maximum retry attempts */
-#define I2C_DELAY_10US 10U /* Delay in microseconds for bus reset */
-#define I2C_RECOVERY_CLOCKS 9U /* Clock pulses for bus recovery */
-#define I2C_MASTER_ADDRESS 0x00U /* Master address (not used) */
-
-/* Legacy compatibility */
-#define I2C_OK 1
-#define I2C_FAIL 0
-#define I2C_END 1
-
-/******************************************************************************/
-
-/* I2C result enumeration */
-typedef enum {
- I2C_RESULT_SUCCESS = 0, /* Operation successful */
- I2C_RESULT_TIMEOUT, /* Timeout occurred */
- I2C_RESULT_NACK, /* No acknowledge received */
- I2C_RESULT_BUS_BUSY, /* Bus is busy */
- I2C_RESULT_ERROR, /* General error */
- I2C_RESULT_INVALID_PARAM, /* Invalid parameter */
- I2C_RECOVERY_OK,
- I2C_RECOVERY_SDA_STUCK_LOW,
- I2C_RECOVERY_SCL_STUCK_LOW
-} i2c_result_t;
-
-/* I2C state machine enumeration */
-typedef enum {
- I2C_STATE_IDLE = 0, /* Idle state */
- I2C_STATE_START, /* Generate start condition */
- I2C_STATE_SEND_ADDRESS, /* Send slave address */
- I2C_STATE_CLEAR_ADDRESS, /* Clear address flag */
- I2C_STATE_TRANSMIT_REG, /* Transmit register address */
- I2C_STATE_TRANSMIT_DATA, /* Transmit data */
- I2C_STATE_RESTART, /* Generate restart condition */
- I2C_STATE_RECEIVE_DATA, /* Receive data */
- I2C_STATE_STOP, /* Generate stop condition */
- I2C_STATE_ERROR, /* Error state */
- I2C_STATE_END
-} i2c_state_t;
-
-/******************************************************************************/
-
-
-/* Function declarations */
-/*!
- \brief configure the I2C interface
- \param[in] none
- \param[out] none
- \retval i2c_result_t
-*/
-i2c_result_t i2c_config(void);
-
-/*!
- \brief reset I2C bus with proper recovery
- \param[in] none
- \param[out] none
- \retval i2c_result_t
-*/
-i2c_result_t i2c_bus_reset(void);
-
-/*!
- \brief scan I2C bus for devices
- \param[in] none
- \param[out] none
- \retval none
-*/
-void i2c_scan(void);
-
-/*!
- \brief write 16-bit data to I2C device
- \param[in] slave_addr: 7-bit slave address
- \param[in] reg_addr: register address
- \param[in] data: pointer to 2-byte data array
- \param[out] none
- \retval i2c_result_t
-*/
-i2c_result_t i2c_write_16bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t data[2]);
-
-/*!
- \brief read 16-bit data from I2C device
- \param[in] slave_addr: 7-bit slave address
- \param[in] reg_addr: register address
- \param[out] data: pointer to 2-byte data buffer
- \retval i2c_result_t
-*/
-i2c_result_t i2c_read_16bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data);
-
-/* Generic read/write functions with configurable length */
-/*!
- \brief write data to I2C device with configurable length
- \param[in] slave_addr: slave device address (7-bit)
- \param[in] reg_addr: register address
- \param[in] data: pointer to data buffer
- \param[in] length: number of bytes to write (1-255)
- \param[out] none
- \retval i2c_result_t: operation result
-*/
-i2c_result_t i2c_write(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data, uint8_t length);
-
-/*!
- \brief read data from I2C device with configurable length
- \param[in] slave_addr: slave device address (7-bit)
- \param[in] reg_addr: register address
- \param[out] data: pointer to data buffer
- \param[in] length: number of bytes to read (1-255)
- \retval i2c_result_t: operation result
-*/
-i2c_result_t i2c_read(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data, uint8_t length);
-
-/* Convenience functions for common operations */
-/*!
- \brief write single byte to I2C device
- \param[in] slave_addr: slave device address (7-bit)
- \param[in] reg_addr: register address
- \param[in] data: data byte to write
- \retval i2c_result_t: operation result
-*/
-i2c_result_t i2c_write_8bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t data);
-
-/*!
- \brief read single byte from I2C device
- \param[in] slave_addr: slave device address (7-bit)
- \param[in] reg_addr: register address
- \param[out] data: pointer to data byte
- \retval i2c_result_t: operation result
-*/
-i2c_result_t i2c_read_8bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data);
-
-/*!
- \brief write 32-bit data to I2C device
- \param[in] slave_addr: slave device address (7-bit)
- \param[in] reg_addr: register address
- \param[in] data: pointer to 4-byte data array
- \retval i2c_result_t: operation result
-*/
-i2c_result_t i2c_write_32bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t data[4]);
-
-/*!
- \brief read 32-bit data from I2C device
- \param[in] slave_addr: slave device address (7-bit)
- \param[in] reg_addr: register address
- \param[out] data: pointer to 4-byte data buffer
- \retval i2c_result_t: operation result
-*/
-i2c_result_t i2c_read_32bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data);
-
-/*!
- \brief read display panel parameters (multi-byte)
- \param[in] slave_addr: slave device address (7-bit)
- \param[in] reg_addr: register address
- \param[out] data: pointer to data buffer
- \param[in] length: number of bytes to read (1-13)
- \retval i2c_result_t: operation result
-*/
-i2c_result_t i2c_read_display_params(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data, uint8_t length);
-
-#ifdef DEBUG_VERBOSE
-/*!
- \brief get status string for debugging
- \param[in] status: i2c_result_t value
- \param[out] none
- \retval const char* status string
-*/
-const char* i2c_get_status_string(i2c_result_t status);
-#endif
-
-#endif //I2C_H
+//
+// Created by dell on 24-12-20.
+//
+
+#ifndef I2C_H
+#define I2C_H
+
+#include "gd32e23x_it.h"
+#include "gd32e23x.h"
+#include "systick.h"
+#include
+#include
+#include
+#include
+#include
+
+#include "board_config.h"
+
+/******************************************************************************/
+
+#define I2C_SPEED 100000U /* 100kHz */
+#define I2C_TIME_OUT 5000U /* 5000 loops timeout */
+#define I2C_MAX_RETRY 3U /* Maximum retry attempts */
+#define I2C_DELAY_10US 10U /* Delay in microseconds for bus reset */
+#define I2C_RECOVERY_CLOCKS 9U /* Clock pulses for bus recovery */
+#define I2C_MASTER_ADDRESS 0x00U /* Master address (not used) */
+
+/* Legacy compatibility */
+#define I2C_OK 1
+#define I2C_FAIL 0
+#define I2C_END 1
+
+/******************************************************************************/
+
+/* I2C result enumeration */
+typedef enum {
+ I2C_RESULT_SUCCESS = 0, /* Operation successful */
+ I2C_RESULT_TIMEOUT, /* Timeout occurred */
+ I2C_RESULT_NACK, /* No acknowledge received */
+ I2C_RESULT_BUS_BUSY, /* Bus is busy */
+ I2C_RESULT_ERROR, /* General error */
+ I2C_RESULT_INVALID_PARAM, /* Invalid parameter */
+ I2C_RECOVERY_OK,
+ I2C_RECOVERY_SDA_STUCK_LOW,
+ I2C_RECOVERY_SCL_STUCK_LOW
+} i2c_result_t;
+
+/* I2C state machine enumeration */
+typedef enum {
+ I2C_STATE_IDLE = 0, /* Idle state */
+ I2C_STATE_START, /* Generate start condition */
+ I2C_STATE_SEND_ADDRESS, /* Send slave address */
+ I2C_STATE_CLEAR_ADDRESS, /* Clear address flag */
+ I2C_STATE_TRANSMIT_REG, /* Transmit register address */
+ I2C_STATE_TRANSMIT_DATA, /* Transmit data */
+ I2C_STATE_RESTART, /* Generate restart condition */
+ I2C_STATE_RECEIVE_DATA, /* Receive data */
+ I2C_STATE_STOP, /* Generate stop condition */
+ I2C_STATE_ERROR, /* Error state */
+ I2C_STATE_END
+} i2c_state_t;
+
+/******************************************************************************/
+
+
+/* Function declarations */
+/*!
+ \brief configure the I2C interface
+ \param[in] none
+ \param[out] none
+ \retval i2c_result_t
+*/
+i2c_result_t i2c_config(void);
+
+/*!
+ \brief reset I2C bus with proper recovery
+ \param[in] none
+ \param[out] none
+ \retval i2c_result_t
+*/
+i2c_result_t i2c_bus_reset(void);
+
+/*!
+ \brief scan I2C bus for devices
+ \param[in] none
+ \param[out] none
+ \retval none
+*/
+void i2c_scan(void);
+
+/*!
+ \brief write 16-bit data to I2C device
+ \param[in] slave_addr: 7-bit slave address
+ \param[in] reg_addr: register address
+ \param[in] data: pointer to 2-byte data array
+ \param[out] none
+ \retval i2c_result_t
+*/
+i2c_result_t i2c_write_16bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t data[2]);
+
+/*!
+ \brief read 16-bit data from I2C device
+ \param[in] slave_addr: 7-bit slave address
+ \param[in] reg_addr: register address
+ \param[out] data: pointer to 2-byte data buffer
+ \retval i2c_result_t
+*/
+i2c_result_t i2c_read_16bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data);
+
+/*!
+ \brief read 16-bit data from I2C device
+ \param[in] slave_addr: 7-bit slave address
+ \param[in] reg_addr: register address
+ \param[out] data: pointer to 2-byte data buffer
+ \retval i2c_result_t
+*/
+i2c_result_t i2c_read_16bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data);
+
+/*!
+ \brief get status string for debugging
+ \param[in] status: i2c_result_t value
+ \param[out] none
+ \retval const char* status string
+*/
+const char* i2c_get_status_string(i2c_result_t status);
+
+#endif //I2C_H
diff --git a/Inc/ldc1612.h b/Inc/ldc1612.h
index f2b21a2..f4e27ac 100644
--- a/Inc/ldc1612.h
+++ b/Inc/ldc1612.h
@@ -1,488 +1,213 @@
-//
-// Created by dell on 24-12-3.
-//
-
-#ifndef LDC1612_H
-#define LDC1612_H
-
-#include "gd32e23x_it.h"
-#include "gd32e23x.h"
-#include "systick.h"
-#include
-#include
-#include
-#include
-#include "board_config.h"
-#include "i2c.h"
-
-/***************************************************************************/
-
-/* IIC Interface Selection */
-#ifdef SOFTWARE_IIC
- #define LDC1612_IIC_WRITE_16BITS(addr, reg, data) soft_i2c_write_16bits(addr, reg, data)
- #define LDC1612_IIC_READ_16BITS(addr, reg, data) soft_i2c_read_16bits(addr, reg, data)
- #define LDC1612_IIC_TYPE_STR "Software IIC"
-#else
- #define LDC1612_IIC_WRITE_16BITS(addr, reg, data) i2c_write_16bits(addr, reg, data)
- #define LDC1612_IIC_READ_16BITS(addr, reg, data) i2c_read_16bits(addr, reg, data)
- #define LDC1612_IIC_TYPE_STR "Hardware IIC"
-#endif
-
-/* >>>>>>>>>>>>>>>>>>>>>>>>>>>>[EXT CLK(MHz)]<<<<<<<<<<<<<<<<<<<< */
-
-#define LDC1612_EXT_CLK_MHZ 40
-
-/***************************************************************************/
-
-#define LDC1612_ADDR (0x2B)
-
-/******************************************************************************/
-
-#define COIL_L_UH 40.9
-#define COIL_C_PF 180
-
-/************************Register Addr***************************************/
-
-#define CONVERSION_RESULT_REG_START 0X00
-#define SET_CONVERSION_TIME_REG_START 0X08
-#define SET_CONVERSION_OFFSET_REG_START 0X0C
-#define SET_SETTLECOUNT_REG_START 0X10
-#define SET_FREQ_REG_START 0X14
-#define SENSOR_STATUS_REG 0X18
-#define ERROR_CONFIG_REG 0X19
-#define SENSOR_CONFIG_REG 0X1A
-#define MUX_CONFIG_REG 0X1B
-#define SENSOR_RESET_REG 0X1C
-#define SET_DRIVER_CURRENT_REG 0X1E
-#define READ_MANUFACTURER_ID 0X7E
-#define READ_DEVICE_ID 0X7F
-
-/**********************Sensor Channel****************************************/
-
-#define CHANNEL_0 0
-#define CHANNEL_1 1
-
-/**************************DATA (0x00-0x03)*******************************************/
-/*
- * 作用: 存储28位的传感器转换结果。结果分为高字节(MSB)和低字节(LSB)两个寄存器。
- *
- * 结构说明:
- * - DATA_CHx_MSB: 包含错误标志和数据的高12位 [27:16]。
- * - DATA_CHx_LSB: 包含数据的低16位 [15:0]。
- *
- * MSB寄存器位域:
- * [15] ERR_UR: 转换下溢错误标志 (1 = 发生错误)
- * [14] ERR_OR: 转换上溢错误标志 (1 = 发生错误)
- * [13] ERR_WD: 看门狗超时错误标志 (1 = 发生错误)
- * [12] ERR_AE: 振幅错误标志 (高或低) (1 = 发生错误)
- * [11:0] DATA[27:16]: 数据的高12位
- *
- * 注意:
- * - 仅当ERROR_CONFIG寄存器中对应的ERR2OUT位置1时,这些错误标志才会在MSB寄存器中被设置。
- * - 读取数据时,应先读取LSB,再读取MSB,以确保数据的一致性。
-*/
-
-/* --- 数据寄存器错误标志位掩码 --- */
-#define LDC1612_DATA_ERR_UR (1 << 15)
-#define LDC1612_DATA_ERR_OR (1 << 14)
-#define LDC1612_DATA_ERR_WD (1 << 13)
-#define LDC1612_DATA_ERR_AE (1 << 12)
-#define LDC1612_DATA_ERR_MASK (0xF000)
-#define LDC1612_DATA_MSB_MASK (0x0FFF)
-
-/**************************RCOUNT (0x08, 0x09)****************************************/
-/*
- * 作用: 设置参考计数器值,决定了传感器的转换时间,从而影响测量分辨率。
- *
- * 位域说明:
- * [15:0] RCOUNT: 参考计数值。
- *
- * 计算公式:
- * t_CONVERSION = (RCOUNT * 16) / f_REF
- *
- * 注意:
- * - RCOUNT值必须 ≥ 0x0004。
- * - 该寄存器在复位后值为 0x0080。
- *
- * 配置建议:
- * - 需要高采样率: 使用较小的RCOUNT值。
- * - 需要高分辨率: 使用较大的RCOUNT值。
-*/
-
-/* --- 预设配置示例 --- */
-// 高速采样配置 (分辨率较低)
-#define LDC1612_RCOUNT_HIGH_SPEED (0x04D6) // 1238, 约 1kSPS @ 40MHz/2
-
-// 平衡配置 (常用)
-#define LDC1612_RCOUNT_BALANCED (0x1000) // 4096, 约 380SPS @ 40MHz/2
-
-// 高分辨率配置 (采样率较低)
-#define LDC1612_RCOUNT_HIGH_RESOLUTION (0xFFFF) // 65535, 约 24SPS @ 40MHz/2
-
-// 默认配置
-#define LDC1612_RCOUNT_TIME_CH0 LDC1612_RCOUNT_BALANCED // 0x1000=4096个时钟周期
-
-/**************************OFFSET (0x0C, 0x0D)****************************************/
-/*
- * 作用: 设置一个16位的数字偏移量,该值会从原始转换结果中减去。
- *
- * 位域说明:
- * [15:0] OFFSET: 数据偏移值。
- *
- * 计算公式:
- * 最终数据 = 原始转换数据 - OFFSET
- *
- * 注意:
- * - 如果减法结果为负,将触发下溢错误 (ERR_UR)。
- * - 该寄存器在复位后值为 0x0000。
- *
- * 应用场景:
- * - 消除传感器或环境的固有基线偏移。
- * - 实现“去皮”(Tare)功能,将当前读数设为新的零点。
-*/
-
-// 默认配置: 不设置偏移
-#define SET_CONVERSION_OFFSET_CH0 0x0000
-
-/**************************SETTLECOUNT (0x10, 0x11)***********************************/
-/*
- * 作用: 设置传感器振荡器在开始转换前所需的建立时间。
- *
- * 位域说明:
- * [15:0] SETTLECOUNT: 建立时间计数值。
- *
- * 计算公式:
- * t_SETTLE 的计算方式取决于SETTLECOUNT的值:
- * - 当 SETTLECOUNT = 0x0000 或 0x0001 时, t_SETTLE = 32 / f_REF
- * - 当 SETTLECOUNT ≥ 0x0002 时, t_SETTLE = (SETTLECOUNT * 16) / f_REF
- *
- * 配置建议:
- * - 传感器的Q值越高,所需的建立时间越短 (SETTLECOUNT值可以越小)。
- * - 值过小可能导致传感器未充分稳定,数据不准确。
- * - 值过大则会不必要地增加总转换时间,降低采样率。
- * - 对于大多数应用,0x0100 (256) 是一个很好的起始值。
-*/
-
-/* --- 预设配置示例 --- */
-// 适用于高Q值传感器 (建立时间短)
-#define LDC1612_SETTLECOUNT_HIGH_Q (0x000A) // 约 4µs @ 40MHz/2
-
-// 适用于中等Q值传感器 (通用)
-#define LDC1612_SETTLECOUNT_MEDIUM_Q (0x0100) // 约 102µs @ 40MHz/2
-
-// 适用于低Q值传感器 (建立时间长)
-#define LDC1612_SETTLECOUNT_LOW_Q (0x0400) // 约 410µs @ 40MHz/2
-
-// 默认配置
-#define LDC1612_SETTLECOUNT_CH0 LDC1612_SETTLECOUNT_MEDIUM_Q
-
-/**************************CLOCK_DIVIDER (0x14, 0x15)***********************************/
-/*
- * 作用: 配置传感器输入频率(f_sensor)和参考时钟(f_ref)的分频器。
- *
- * 位域说明:
- * [15:12] FIN_DIVIDER: 传感器输入分频器。
- * [11:10] RESERVED: 必须为00。
- * [9:0] FREF_DIVIDER: 参考时钟分频器。
- *
- * 配置逻辑:
- * 1. FIN_DIVIDER: 根据传感器的谐振频率 f_sensor 选择。
- * - 目标是使 f_sensor / FIN_DIVIDER <= 8.75MHz。
- * - 例如: 如果 f_sensor = 15MHz, 则 FIN_DIVIDER 必须 >= 2。
- *
- * 2. FREF_DIVIDER: 根据外部时钟 f_clk 和工作模式选择。
- * - 目标是使 f_ref = f_clk / FREF_DIVIDER。
- * - 单通道模式且 f_clk <= 35MHz: FREF_DIVIDER = 1。
- * - 双通道模式或 f_clk > 35MHz: FREF_DIVIDER = 2。
- *
- * 最终寄存器值 = (FIN_DIVIDER << 12) | FREF_DIVIDER;
-*/
-
-/* --- 位域选项宏 --- */
-// [15:12] Sensor Input Divider (FIN_DIVIDER)
-#define LDC1612_FIN_DIV_1 (0x1 << 12) // for f_sensor <= 8.75MHz
-#define LDC1612_FIN_DIV_2 (0x2 << 12) // for 8.75MHz < f_sensor <= 17.5MHz
-#define LDC1612_FIN_DIV_4 (0x3 << 12) // for 17.5MHz < f_sensor <= 35MHz
-
-// [9:0] Reference Clock Divider (FREF_DIVIDER)
-#define LDC1612_FREF_DIV_1 (0x001)
-#define LDC1612_FREF_DIV_2 (0x002)
-
-/* --- 组合宏 --- */
-#define LDC1612_CLOCK_DIVIDER_GEN(fin_div, fref_div) ((fin_div) | (fref_div))
-
-/* --- 预设配置示例 (基于40MHz外部时钟) --- */
-// 适用于 f_sensor <= 8.75MHz
-#define LDC1612_CLOCK_DIVIDER_DEFAULT LDC1612_CLOCK_DIVIDER_GEN(LDC1612_FIN_DIV_1, LDC1612_FREF_DIV_2) // 0x1002
-
-
-/**************************STATUS (0x18) MACROS****************************************
- *
- * 作用: 定义STATUS寄存器的位掩码,用于解析设备状态。
- *
-*/
-#define LDC1612_STATUS_DRDY (1 << 6) // 数据就绪
-#define LDC1612_STATUS_UNREAD_CH0 (1 << 3) // 通道0有未读数据
-#define LDC1612_STATUS_UNREAD_CH1 (1 << 2) // 通道1有未读数据
-
-#define LDC1612_STATUS_ERR_ZC (1 << 8) // 零计数错误
-#define LDC1612_STATUS_ERR_ALE (1 << 9) // 振幅过低
-#define LDC1612_STATUS_ERR_AHE (1 << 10) // 振幅过高
-#define LDC1612_STATUS_ERR_WD (1 << 11) // 看门狗超时
-#define LDC1612_STATUS_ERR_OR (1 << 12) // 转换上溢
-#define LDC1612_STATUS_ERR_UR (1 << 13) // 转换下溢
-#define LDC1612_STATUS_ERR_CHAN_MASK (3 << 14) // 错误通道掩码
-
-/**************************ERROR_CONFIG (0x19)****************************************/
-/*
- * 作用: 配置状态或错误输出或者触发INTB引脚中断。
- *
- * 位域说明:
- * [15] UR_ERR2OUT: 1 = 转换下溢错误输出到DATA_CHx寄存器
- * [14] OR_ERR2OUT: 1 = 转换上溢错误输出到DATA_CHx寄存器
- * [13] WD_ERR2OUT: 1 = 看门狗超时错误输出到DATA_CHx寄存器
- * [12] AH_ERR2OUT: 1 = 振幅过高错误输出到DATA_CHx寄存器
- * [11] AL_ERR2OUT: 1 = 振幅过低错误输出到DATA_CHx寄存器
- * [10:8] RESERVED
- * [7] UR_ERR2INT: 1 = 转换下溢错误触发INTB
- * [6] OR_ERR2INT: 1 = 转换上溢错误触发INTB
- * [5] WD_ERR2INT: 1 = 看门狗超时错误触发INTB
- * [4] AH_ERR2INT: 1 = 振幅过高错误触发INTB
- * [3] AL_ERR2INT: 1 = 振幅过低错误触发INTB
- * [2] ZC_ERR2INT: 1 = 零计数错误触发INTB
- * [1] RESERVED
- * [0] DRDY_2INT: 1 = 数据就绪标志触发INTB
-*/
-
-/* --- 位域选项宏 --- */
-
-// --- 中断触发 (ERR2INT) ---
-#define LDC1612_ERR_CFG_DRDY_INT_EN (1 << 0) // 数据就绪中断使能
-#define LDC1612_ERR_CFG_ZC_INT_EN (1 << 2) // 零计数错误中断使能
-#define LDC1612_ERR_CFG_AL_INT_EN (1 << 3) // 振幅过低错误中断使能
-#define LDC1612_ERR_CFG_AH_INT_EN (1 << 4) // 振幅过高错误中断使能
-#define LDC1612_ERR_CFG_WD_INT_EN (1 << 5) // 看门狗超时中断使能
-#define LDC1612_ERR_CFG_OR_INT_EN (1 << 6) // 转换上溢中断使能
-#define LDC1612_ERR_CFG_UR_INT_EN (1 << 7) // 转换下溢中断使能
-
-// --- 错误报告至数据寄存器 (ERR2OUT) ---
-#define LDC1612_ERR_CFG_AL_OUT_EN (1 << 11) // 振幅过低错误报告使能
-#define LDC1612_ERR_CFG_AH_OUT_EN (1 << 12) // 振幅过高错误报告使能
-#define LDC1612_ERR_CFG_WD_OUT_EN (1 << 13) // 看门狗超时错误报告使能
-#define LDC1612_ERR_CFG_OR_OUT_EN (1 << 14) // 转换上溢错误报告使能
-#define LDC1612_ERR_CFG_UR_OUT_EN (1 << 15) // 转换下溢错误报告使能
-
-// 常用配置: 仅使能 "数据就绪" 中断
-#define LDC1612_ERROR_CONFIG_DRDY_ONLY (LDC1612_ERR_CFG_DRDY_INT_EN) // 结果: 0x0001
-
-// 常用配置: 使能所有错误报告
-#define LDC1612_ERROR_CONFIG_OUT_ONLY (LDC1612_ERR_CFG_AL_OUT_EN | \
- LDC1612_ERR_CFG_AH_OUT_EN | \
- LDC1612_ERR_CFG_WD_OUT_EN | \
- LDC1612_ERR_CFG_OR_OUT_EN | \
- LDC1612_ERR_CFG_UR_OUT_EN) // 结果: 0xF800
-
-// 调试配置: 使能所有错误中断和错误报告
-#define LDC1612_ERROR_CONFIG_DEBUG_ALL (LDC1612_ERR_CFG_DRDY_INT_EN | \
- LDC1612_ERR_CFG_ZC_INT_EN | \
- LDC1612_ERR_CFG_AL_INT_EN | \
- LDC1612_ERR_CFG_AH_INT_EN | \
- LDC1612_ERR_CFG_WD_INT_EN | \
- LDC1612_ERR_CFG_OR_INT_EN | \
- LDC1612_ERR_CFG_UR_INT_EN | \
- LDC1612_ERR_CFG_AL_OUT_EN | \
- LDC1612_ERR_CFG_AH_OUT_EN | \
- LDC1612_ERR_CFG_WD_OUT_EN | \
- LDC1612_ERR_CFG_OR_OUT_EN | \
- LDC1612_ERR_CFG_UR_OUT_EN) // 结果: 0xF8FD
-
-// 默认配置: 所有功能都禁用
-#define LDC1612_ERROR_CONFIG_DEFAULT (0x0000)
-
-/**************************SENSOR_CONFIG (0x1A) MACROS***************************************/
-/*
- * CONFIG寄存器位域宏定义,用于灵活组合生成配置值。
- * 使用方法: LDC1612_CONFIG_GEN(ACTIVE_CHAN, SLEEP_MODE, RP_OVERRIDE, AUTO_AMP, CLK_SRC, INTB, CURRENT_DRV)
- *
- * 位域说明 (根据 LDC1612_REG_LIST.md):
- * [15:14] ACTIVE_CHAN: 激活通道选择 (仅在 AUTOSCAN_EN=0 时有效)
- * [13] SLEEP_MODE_EN: 1 = 睡眠模式使能
- * [12] RP_OVERRIDE_EN: 1 = 禁用自动校准 (使用手动的IDRIVE设置)
- * [11] SENSOR_ACTIVATE_SEL: 传感器激活电流选择 (0:低电流, 1:高电流)
- * [10] AUTO_AMP_DIS: 1 = 禁用自动幅度校正
- * [9] REF_CLK_SRC: 1 = 使用外部CLKIN时钟
- * [8] RESERVED: 必须为0
- * [7] INTB_DIS: 1 = 禁用INTB中断引脚
- * [6] HIGH_CURRENT_DRV: 1 = 通道0高电流驱动模式
- * [5:0] RESERVED: 必须写入 0x01
-*/
-
-/* --- 位域选项宏 --- */
-// [15:14] Active Channel Selection
-#define LDC1612_CONFIG_ACTIVE_CHAN_CH0 (0x00 << 14)
-#define LDC1612_CONFIG_ACTIVE_CHAN_CH1 (0x01 << 14)
-
-// [13] Sleep Mode Enable
-#define LDC1612_CONFIG_SLEEP_MODE_DISABLE (0x00 << 13)
-#define LDC1612_CONFIG_SLEEP_MODE_ENABLE (0x01 << 13)
-
-// [12] RP Override Enable (Auto-Calibration Disable)
-#define LDC1612_CONFIG_RP_OVERRIDE_DISABLE (0x00 << 12) // 启用自动校准
-#define LDC1612_CONFIG_RP_OVERRIDE_ENABLE (0x01 << 12) // 禁用自动校准
-
-// [11] Sensor Activation Current Selection
-#define LDC1612_CONFIG_SENSOR_ACT_LOW_I (0x00 << 11) // 低电流激活
-#define LDC1612_CONFIG_SENSOR_ACT_HIGH_I (0x01 << 11) // 高电流激活
-
-// [10] Auto Amplitude Correction Disable
-#define LDC1612_CONFIG_AUTO_AMP_ENABLE (0x00 << 10) // 启用自动幅度校正
-#define LDC1612_CONFIG_AUTO_AMP_DISABLE (0x01 << 10) // 禁用自动幅度校正
-
-// [9] Reference Clock Source
-#define LDC1612_CONFIG_CLK_SRC_INTERNAL (0x00 << 9)
-#define LDC1612_CONFIG_CLK_SRC_EXTERNAL (0x01 << 9)
-
-// [7] INTB Pin Disable
-#define LDC1612_CONFIG_INTB_ENABLE (0x00 << 7)
-#define LDC1612_CONFIG_INTB_DISABLE (0x01 << 7)
-
-// [6] High Current Drive (Channel 0)
-#define LDC1612_CONFIG_HIGH_CURRENT_DISABLE (0x00 << 6)
-#define LDC1612_CONFIG_HIGH_CURRENT_ENABLE (0x01 << 6)
-
-/* --- 组合宏 --- */
-// 将所有位域组合成一个16位值。注意,保留位0x01被固定添加。
-#define LDC1612_CONFIG_GEN(active_chan, sleep, rp_override, sensor_act, auto_amp, clk_src, intb, high_current) \
- ( (active_chan) | (sleep) | (rp_override) | (sensor_act) | (auto_amp) | (clk_src) | (intb) | (high_current) | 0x0001 )
-
-/* --- 预设配置示例 --- */
-// CH0连续转换, 外部时钟, 高驱动电流, 禁用自动幅度修正(适用于电流检测)
-#define LDC1612_SENSOR_CONFIG_CH0 LDC1612_CONFIG_GEN( \
- LDC1612_CONFIG_ACTIVE_CHAN_CH0, \
- LDC1612_CONFIG_SLEEP_MODE_DISABLE, \
- LDC1612_CONFIG_RP_OVERRIDE_ENABLE, /* Rp覆盖开启 */ \
- LDC1612_CONFIG_SENSOR_ACT_LOW_I, /* 低功耗启动 */ \
- LDC1612_CONFIG_AUTO_AMP_DISABLE, /* 禁用自动幅度校正 */ \
- LDC1612_CONFIG_CLK_SRC_EXTERNAL, /* 外部时钟 */ \
- LDC1612_CONFIG_INTB_ENABLE, /* 启用INTB引脚 */ \
- LDC1612_CONFIG_HIGH_CURRENT_ENABLE /* 大电流模式 */ ) // 结果: 0x1641
- // TODO 对比1601的不同(大电流与标准电流)
-
-// 睡眠模式, 外部时钟
-#define LDC1612_SLEEP_MODE LDC1612_CONFIG_GEN( \
- LDC1612_CONFIG_ACTIVE_CHAN_CH0, \
- LDC1612_CONFIG_SLEEP_MODE_ENABLE, \
- LDC1612_CONFIG_RP_OVERRIDE_DISABLE, \
- LDC1612_CONFIG_SENSOR_ACT_HIGH_I, \
- LDC1612_CONFIG_AUTO_AMP_ENABLE, \
- LDC1612_CONFIG_CLK_SRC_INTERNAL, \
- LDC1612_CONFIG_INTB_ENABLE, \
- LDC1612_CONFIG_HIGH_CURRENT_DISABLE ) // 结果: 0x2801
-
-/*************************MUX_CONFIG (0x1B) MACROS***************************************/
-/*
- * MUX_CONFIG寄存器位域宏定义,用于灵活组合生成配置值。
- *
- * 位域说明:
- * [15] AUTOSCAN_EN: 1 = 自动顺序扫描模式使能
- * [14:13] RR_SEQUENCE: 扫描序列 (00: CH0, CH1)
- * [12:3] RESERVED: 必须写入 0x041
- * [2:0] DEGLITCH: 输入消抖滤波器带宽
-*/
-/* --- 位域选项宏 --- */
-// [15] Auto Scan Mode
-#define LDC1612_MUX_AUTOSCAN_DISABLE (0x00 << 15) // 单通道连续模式
-#define LDC1612_MUX_AUTOSCAN_ENABLE (0x01 << 15) // 自动扫描模式
-
-// [14:13] Round Robin Sequence
-#define LDC1612_MUX_RR_SEQ_CH0_CH1 (0x00 << 13) // 扫描 CH0, CH1
-
-// [2:0] Deglitch Filter Bandwidth
-#define LDC1612_MUX_DEGLITCH_1MHZ (0x01)
-#define LDC1612_MUX_DEGLITCH_3_3MHZ (0x04)
-#define LDC1612_MUX_DEGLITCH_10MHZ (0x05)
-#define LDC1612_MUX_DEGLITCH_33MHZ (0x07)
-
-/* --- 组合宏 --- */
-// 将所有位域组合成一个16位值。注意,保留位0x0208 (0x041 << 3)被固定添加。
-#define LDC1612_MUX_CONFIG_GEN(autoscan, sequence, deglitch) \
- ( (autoscan) | (sequence) | (deglitch) | 0x0208 )
-
-/* --- 预设配置示例 --- */
-// 单通道模式, 3.3MHz 滤波
-#define LDC1612_MUX_CONFIG LDC1612_MUX_CONFIG_GEN( \
- LDC1612_MUX_AUTOSCAN_DISABLE, \
- LDC1612_MUX_RR_SEQ_CH0_CH1, /* 此模式下无效,但保持定义 */ \
- LDC1612_MUX_DEGLITCH_3_3MHZ ) // 0x020C
-
-/***********************RESET DEVICE (0x1C)***********************************/
-/*
- * 向RESET_DEV寄存器写入 LDC1612_RESET_CMD 会触发软件复位。
- * 复位后,所有寄存器将恢复为默认值,设备进入睡眠模式。
- * 需要大约10ms的稳定时间后才能重新配置。
-*/
-#define LDC1612_RESET_DEV 0x8000
-
-/**************************DRIVE_CURRENT (0x1E, 0x1F)****************************************/
-/*
- * 作用: 设置传感器的驱动电流,以确保振荡幅度(Vosc)在1.2V到1.8V之间。
- *
- * 位域说明:
- * [15:11] IDRIVE: 当前驱动电流设置值 (0-31)。
- * [10:6] INIT_IDRIVE: 初始驱动电流设置值 (0-31)。
- * [5:0] RESERVED: 必须为0。
- *
- * 配置建议:
- * 1. 初始阶段可启用自动校准 (CONFIG.RP_OVERRIDE_EN = 0),让芯片自动寻找合适的IDRIVE值。
- * 2. 读取DRIVE_CURRENT寄存器,获得自动校准后的IDRIVE值。
- * 3. 在最终代码中,禁用自动校准 (CONFIG.RP_OVERRIDE_EN = 1),并手动写入这个调试好的IDRIVE值。
- *
- * CH_INIT_IDRIVE will update when every conversion systick ==>AutoAmpDis is 0
- * CH_INIT_IDRIVE will store init drive current calculated ==> AutoAmpDis is 1
-*/
-
-/* --- 驱动电流值生成宏 --- */
-// 参数 idrive: 0-31之间的整数
-#define LDC1612_DRIVE_CURRENT_GEN(idrive) ( (uint16_t)(idrive) << 11 )
-
-#define LDC1612_DRIVE_CURRENT LDC1612_DRIVE_CURRENT_GEN(18) // 0x9000
-
-/**************************IDs (Read Only 0x7E 0x7F)***********************************/
-
-#define LDC1612_MANUFACTURER_ID 0x5449
-#define LDC1612_DEVICE_ID 0x3055
-
-/******************************************************************************/
-
-typedef enum {
- LDC1612_STATUS_SUCCESS = 0,
- LDC1612_STATUS_ERROR,
- LDC1612_STATUS_TIMEOUT,
- LDC1612_STATUS_INVALID_PARAM,
- LDC1612_STATUS_NO_COIL,
- LDC1612_STATUS_UNDER_RANGE,
- LDC1612_STATUS_OVER_RANGE
-} ldc1612_status_t;
-
-/******************************************************************************/
-ldc1612_status_t ldc1612_init(void);
-
-ldc1612_status_t ldc1612_reset_sensor(void);
-
-ldc1612_status_t ldc1612_config_single_channel(uint8_t channel);
-
-uint16_t ldc1612_get_manufacturer_id(void);
-
-uint16_t ldc1612_get_deveice_id(void);
-
-uint32_t ldc1612_get_raw_channel_result(uint8_t channel);
-
-void ldc1612_drvie_current_detect(uint8_t channel);
-
-uint16_t ldc1612_get_sensor_status(void);
-
-bool ldc1612_is_data_ready(uint8_t channel);
-
-uint16_t ldc1612_check_status_and_log_errors(void);
-
-#endif //LDC1612_H
+//
+// Created by dell on 24-12-3.
+//
+
+#ifndef LDC1612_H
+#define LDC1612_H
+
+#include "gd32e23x_it.h"
+#include "gd32e23x.h"
+#include "systick.h"
+#include
+#include
+#include
+#include
+#include
+#include "board_config.h"
+#include "i2c.h"
+
+/***************************************************************************/
+
+/* IIC Interface Selection */
+#ifdef SOFTWARE_IIC
+ #define LDC1612_IIC_WRITE_16BITS(addr, reg, data) soft_i2c_write_16bits(addr, reg, data)
+ #define LDC1612_IIC_READ_16BITS(addr, reg, data) soft_i2c_read_16bits(addr, reg, data)
+ #define LDC1612_IIC_TYPE_STR "Software IIC"
+#else
+ #define LDC1612_IIC_WRITE_16BITS(addr, reg, data) i2c_write_16bits(addr, reg, data)
+ #define LDC1612_IIC_READ_16BITS(addr, reg, data) i2c_read_16bits(addr, reg, data)
+ #define LDC1612_IIC_TYPE_STR "Hardware IIC"
+#endif
+
+/***************************************************************************/
+
+#define LDC1612_ADDR (0x2B)
+
+/************************Register Addr***************************************/
+
+#define CONVERTION_RESULT_REG_START 0X00
+#define SET_CONVERSION_TIME_REG_START 0X08
+#define SET_CONVERSION_OFFSET_REG_START 0X0C
+#define SET_SETTLECOUNT_REG_START 0X10
+#define SET_FREQ_REG_START 0X14
+
+#define SENSOR_STATUS_REG 0X18
+#define ERROR_CONFIG_REG 0X19
+#define SENSOR_CONFIG_REG 0X1A
+#define MUX_CONFIG_REG 0X1B
+#define SENSOR_RESET_REG 0X1C
+#define SET_DRIVER_CURRENT_REG 0X1E
+
+#define READ_MANUFACTURER_ID 0X7E
+#define READ_DEVICE_ID 0X7F
+
+/**********************Sensor Channel****************************************/
+
+#define CHANNEL_0 0
+#define CHANNEL_1 1
+
+/*************************MUX_CONFIG********************************************
+ * 0x0209 AutoScanEN: 0 / RR_SEQ: 00 / RESERVED: 0 0010 0000 1 / Deglitch: 001( 1MHz)
+ * 0x020C AutoScanEN: 0 / RR_SEQ: 00 / RESERVED: 0 0010 0000 1 / Deglitch: 100(3.3MHz)
+ * 0x020D AutoScanEN: 0 / RR_SEQ: 00 / RESERVED: 0 0010 0000 1 / Deglitch: 100( 10MHz)
+ * 0x020F AutoScanEN: 0 / RR_SEQ: 00 / RESERVED: 0 0010 0000 1 / Deglitch: 100( 33MHz)
+*/
+#define LDC1612_MUX_CONFIG 0x020C
+
+/***********************SENSOR_CONFIG********************************************
+ * 0x1601 Active CH0: 00 / SLEEP: 0 / OVERDRIVE: 1 / LowPowerMode: 0 / AutoAmpDis 1 / CLK(ext): 1 / RESERVED: 0 / INTB_Dis : 0 / HighCurrent: 0 / RESERVED: 00 0001
+ * 0x1201 Active CH0: 00 / SLEEP: 0 / OVERDRIVE: 1 / LowPowerMode: 0 / AutoAmpDis 0 / CLK(ext): 1 / RESERVED: 0 / INTB_Dis : 0 / HighCurrent: 0 / RESERVED: 00 0001
+ * 0x1641 Active CH0: 00 / SLEEP: 0 / OVERDRIVE: 1 / LowPowerMode: 0 / AutoAmpDis 1 / CLK(ext): 1 / RESERVED: 0 / INTB_Dis : 0 / HighCurrent: 1 / RESERVED: 00 0001
+ * 0x1241 Active CH0: 00 / SLEEP: 0 / OVERDRIVE: 1 / LowPowerMode: 0 / AutoAmpDis 0 / CLK(ext): 1 / RESERVED: 0 / INTB_Dis : 0 / HighCurrent: 1 / RESERVED: 00 0001
+*/
+
+#ifdef EDDY_DRIVE_CURRENT_DETECTION
+ #define LDC1612_SENSOR_CONFIG_CH0 0x1241
+#else
+ #define LDC1612_SENSOR_CONFIG_CH0 0x1641
+#endif
+#define LDC1612_SLEEP_MODE 0x2801
+
+/****************************CONVERSION_TIME************************************
+ * Freq_ref = 40MHz / CHx_FREF_DIVIDER
+ * ******RCOUNT_CHx*******
+ * Reference Count Conversion Interval Time
+ * 0x0005 ~ 0xFFFF
+ * default: 0x0080
+ * RCOUNT_CHx * 16 / Freq_ref = Conversion Interval Time
+ *
+ * ******SETTLECOUNT_CHx*******
+ * Conversion Settling Time
+ * 0x0000 ~ 0xFFFF
+ * default: 0x0000
+ * SETTLECOUNT_CHx * 16 / Freq_ref = Conversion Settling Time
+ * 0x1000 4096*16个时钟周期
+ * 0x0100 256*16个时钟周期
+ * 0x0000/0x0001 32*16个时钟周期
+ *
+ * ******RCOUNT_CHx*******
+*/
+#define LDC1612_RCOUNT_TIME_CH0 0x1000 // 0x1000=4096个时钟周期
+#define LDC1612_SETTLECOUNT_CH0 0x0100
+
+/**************************DRIVE_CURRENT****************************************
+ * 0xA000 CH_IDRIVE: 1010 0 / CH_INIT_IDRIVE: 000 00 / RESERVED: 00 0000
+ * 0x9000 CH_IDRIVE: 1001 0 / CH_INIT_IDRIVE: 000 00 / RESERVED: 00 0000
+ * CH_INIT_IDRIVE will update when every conversion systick ==>AutoAmpDis is 0
+ * CH_INIT_IDRIVE will store init drive current calculated ==> AutoAmpDis is 1
+*/
+#define LDC1612_DRIVE_CURRENT 0x9000
+
+/**************************SENSOR_CONFIG***************************************/
+
+
+
+/**************************ERROR_CONFIG****************************************
+ * [15] Under-Range ERR to OUT (DATA_CHx.CHx_ERR_UR)
+ * [14] Over-Range ERR to OUT (DATA_CHx.CHx_ERR_OR)
+ * [13] Watchdog-Timeout ERR to OUT (DATA_CHx.CHx_ERR_WD)
+ * [12] Amplitude-High-Error ERR to OUT (DATA_CHx.CHx_ERR_AE)
+ * [11] Amplitude-Low-Error ERR to OUT (DATA_CHx.CHx_ERR_AE)
+ * [10] RESERVED
+ * [ 9] RESERVED
+ * [ 8] RESERVED
+ * [ 7] Under-Range ERR to INTB (STATUS.ERR_UR)
+ * [ 6] Over-Range ERR to INTB (STATUS.ERR_OR)
+ * [ 5] Watchdog-Timeout ERR to INTB (STATUS.ERR_WD)
+ * [ 4] Amplitude-High-Error ERR to INTB (STATUS.ERR_AHE)
+ * [ 3] Amplitude-Low-Error ERR to INTB (STATUS.ERR_ALE)
+ * [ 2] Zero_Count_Error ERR to INTB (STATUS.ERR_ZC)
+ * [ 1] RESERVED
+ * [ 0] Data_Ready_Flag to INTB (STATUS.DRDY)
+ *
+ * 0x0000 No ERR to OUT or INTB
+*/
+
+#define LDC1612_ERROR_CONFIG 0x0000
+
+/**************************STATUS****************************************
+ * [15]
+ * [14] Error Channel 0b00: CH0 / 0b01: CH1 / 0b10: CH2 / 0b11: CH3
+ * [13] Conversion Under-Range Error 0b0: No / 0b1: Yes
+ * [12] Conversion Over-Range Error 0b0: No / 0b1: Yes
+ * [11] Watchdog Timeout Error 0b0: No / 0b1: Yes
+ * [10] Amplitude High Error 0b0: No / 0b1: Yes
+ * [ 9] Amplitude Low Error 0b0: No / 0b1: Yes
+ * [ 8] Zero Count Error 0b0: No / 0b1: Yes
+ * [ 7] RESERVED
+ * [ 6] Ddata Ready Flag 0b0: No new results / 0b1: New results available
+ * [ 5] RESERVED
+ * [ 4] RESERVED
+ * [ 3] CH0 Unread Conversion Result 0b0: No / 0b1: Yes(DATA_CH0)
+ * [ 2] CH1 Unread Conversion Result 0b0: No / 0b1: Yes(DATA_CH1)
+ * [ 1] CH2 Unread Conversion Result 0b0: No / 0b1: Yes(DATA_CH2)
+ * [ 0] CH3 Unread Conversion Result 0b0: No / 0b1: Yes(DATA_CH3)
+ *
+ * 0x0000 No ERR to OUT or INTB
+*/
+
+/*****************CONVERSION_OFFSET_CONFIG****************************************/
+
+#define SET_CONVERSION_OFFSET_CH0 0x0000
+
+/***********************RESET DEVICE********************************************
+0x8000 RESET_DEV: 1 / RESERVED: 000 0000 0000 0000
+*/
+
+#define LDC1612_RESET_DEV 0x8000 //[15:0] 0b1000 0000 0000 0000
+
+/***********************IDs****************************************************/
+
+#define LDC1612_MANUFACTURER_ID 0x5449
+#define LDC1612_DEVICE_ID 0x3055
+
+/******************************************************************************/
+
+#define COIL_RP_KOM 7.2
+#define COIL_L_UH 11.22
+#define COIL_C_PF 150
+#define COIL_Q_FACTOR 31.09
+#define COIL_FREQ_HZ 5323770
+
+/******************************************************************************/
+
+typedef enum {
+ LDC1612_STATUS_SUCCESS = 0,
+ LDC1612_STATUS_ERROR,
+ LDC1612_STATUS_TIMEOUT,
+ LDC1612_STATUS_INVALID_PARAM,
+ LDC1612_STATUS_NO_COIL,
+ LDC1612_STATUS_UNDER_RANGE,
+ LDC1612_STATUS_OVER_RANGE
+} ldc1612_status_t;
+
+/******************************************************************************/
+ldc1612_status_t ldc1612_init(void);
+
+ldc1612_status_t ldc1612_reset_sensor(void);
+
+ldc1612_status_t ldc1612_config_single_channel(uint8_t channel);
+
+uint16_t ldc1612_get_manufacturer_id(void);
+
+uint16_t ldc1612_get_deveice_id(void);
+
+uint32_t ldc1612_get_raw_channel_result(uint8_t channel);
+
+void ldc1612_drvie_current_detect(uint8_t channel);
+
+uint16_t ldc1612_get_sensor_status(void);
+
+bool ldc1612_is_data_ready(uint8_t channel);
+
+#endif //LDC1612_H
diff --git a/Inc/led.h b/Inc/led.h
index 7376a5e..e3bc7ce 100644
--- a/Inc/led.h
+++ b/Inc/led.h
@@ -1,13 +1,13 @@
-#ifndef LED_H
-#define LED_H
-
-#include "gd32e23x.h"
-#include "board_config.h"
-
-void led_init(void);
-void led_on(void);
-void led_off(void);
-void led_toggle(void);
-void led_heart_beat(void);
-
-#endif // LED_H
+#ifndef LED_H
+#define LED_H
+
+#include "gd32e23x.h"
+#include "board_config.h"
+
+void led_init(void);
+void led_on(void);
+void led_off(void);
+void led_toggle(void);
+void led_heart_beat(void);
+
+#endif // LED_H
diff --git a/Inc/soft_i2c.h b/Inc/soft_i2c.h
index aab2bda..4e60b12 100644
--- a/Inc/soft_i2c.h
+++ b/Inc/soft_i2c.h
@@ -1,52 +1,52 @@
-//
-// Created by dell on 24-12-28.
-//
-
-#ifndef SOFT_I2C_H
-#define SOFT_I2C_H
-
-#include "gd32e23x_it.h"
-#include "gd32e23x.h"
-#include "systick.h"
-
-#include "board_config.h"
-
-/******************************************************************************/
-
-#define I2C_SCL_HIGH() gpio_bit_set(I2C_SCL_PORT, I2C_SCL_PIN)
-#define I2C_SCL_LOW() gpio_bit_reset(I2C_SCL_PORT, I2C_SCL_PIN)
-#define I2C_SDA_HIGH() gpio_bit_set(I2C_SDA_PORT, I2C_SDA_PIN)
-#define I2C_SDA_LOW() gpio_bit_reset(I2C_SDA_PORT, I2C_SDA_PIN)
-#define I2C_SDA_READ() gpio_input_bit_get(I2C_SDA_PORT, I2C_SDA_PIN)
-
-/******************************************************************************/
-
-#define SOFT_I2C_OK 1
-#define SOFT_I2C_FAIL 0
-#define SOFT_I2C_END 1
-
-/******************************************************************************/
-
-void soft_i2c_delay(void);
-
-void soft_i2c_config(void);
-
-void soft_i2c_start(void);
-
-void soft_i2c_stop(void);
-
-void soft_i2c_send_ack(void);
-
-void soft_i2c_send_nack(void);
-
-uint8_t soft_i2c_wait_ack(void);
-
-void soft_i2c_send_byte(uint8_t data);
-
-uint8_t soft_i2c_receive_byte(uint8_t ack);
-
-uint8_t soft_i2c_write_16bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t data[2]);
-
-uint8_t soft_i2c_read_16bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data);
-
-#endif //SOFT_I2C_H
+//
+// Created by dell on 24-12-28.
+//
+
+#ifndef SOFT_I2C_H
+#define SOFT_I2C_H
+
+#include "gd32e23x_it.h"
+#include "gd32e23x.h"
+#include "systick.h"
+
+#include "board_config.h"
+
+/******************************************************************************/
+
+#define I2C_SCL_HIGH() gpio_bit_set(I2C_SCL_PORT, I2C_SCL_PIN)
+#define I2C_SCL_LOW() gpio_bit_reset(I2C_SCL_PORT, I2C_SCL_PIN)
+#define I2C_SDA_HIGH() gpio_bit_set(I2C_SDA_PORT, I2C_SDA_PIN)
+#define I2C_SDA_LOW() gpio_bit_reset(I2C_SDA_PORT, I2C_SDA_PIN)
+#define I2C_SDA_READ() gpio_input_bit_get(I2C_SDA_PORT, I2C_SDA_PIN)
+
+/******************************************************************************/
+
+#define SOFT_I2C_OK 1
+#define SOFT_I2C_FAIL 0
+#define SOFT_I2C_END 1
+
+/******************************************************************************/
+
+void soft_i2c_delay(void);
+
+void soft_i2c_config(void);
+
+void soft_i2c_start(void);
+
+void soft_i2c_stop(void);
+
+void soft_i2c_send_ack(void);
+
+void soft_i2c_send_nack(void);
+
+uint8_t soft_i2c_wait_ack(void);
+
+void soft_i2c_send_byte(uint8_t data);
+
+uint8_t soft_i2c_receive_byte(uint8_t ack);
+
+uint8_t soft_i2c_write_16bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t data[2]);
+
+uint8_t soft_i2c_read_16bits(uint8_t slave_addr, uint8_t reg_addr, uint8_t *data);
+
+#endif //SOFT_I2C_H
diff --git a/Inc/systick.h b/Inc/systick.h
index 202ecf6..cb73c84 100644
--- a/Inc/systick.h
+++ b/Inc/systick.h
@@ -1,36 +1,36 @@
-/**
-* ************************************************************************
- *
- * @file systick.h
- * @author GD32
- * @brief
- *
- * ************************************************************************
- * @copyright Copyright (c) 2024 GD32
- * ************************************************************************
- */
-#ifndef SYS_TICK_H
-#define SYS_TICK_H
-
-#include
-
-/* function declarations */
-/* configure systick */
-void systick_config(void);
-
-/* delay a time in 10 microseconds */
-void delay_10us(uint32_t count);
-
-/* delay a time in milliseconds */
-void delay_ms(uint32_t count);
-
-/* decrement delay counters */
-void delay_decrement(void);
-
-// /* delay function that doesn't interfere with SysTick interrupt */
-// void delay_ms_safe(uint32_t count);
-
-// /* delay a time in microseconds (safe version) */
-// void delay_us_safe(uint32_t count);
-
+/**
+* ************************************************************************
+ *
+ * @file systick.h
+ * @author GD32
+ * @brief
+ *
+ * ************************************************************************
+ * @copyright Copyright (c) 2024 GD32
+ * ************************************************************************
+ */
+#ifndef SYS_TICK_H
+#define SYS_TICK_H
+
+#include
+
+/* function declarations */
+/* configure systick */
+void systick_config(void);
+
+/* delay a time in 10 microseconds */
+void delay_10us(uint32_t count);
+
+/* delay a time in milliseconds */
+void delay_ms(uint32_t count);
+
+/* decrement delay counters */
+void delay_decrement(void);
+
+// /* delay function that doesn't interfere with SysTick interrupt */
+// void delay_ms_safe(uint32_t count);
+
+// /* delay a time in microseconds (safe version) */
+// void delay_us_safe(uint32_t count);
+
#endif /* SYS_TICK_H */
\ No newline at end of file
diff --git a/Inc/tmp112.h b/Inc/tmp112.h
index c473a83..270747d 100644
--- a/Inc/tmp112.h
+++ b/Inc/tmp112.h
@@ -1,157 +1,157 @@
-//
-// Created by dell on 24-12-20.
-// TMP112A Temperature Sensor Driver Header
-//
-
-#ifndef TMP112_H
-#define TMP112_H
-
-#include "gd32e23x_it.h"
-#include "gd32e23x.h"
-#include "systick.h"
-#include
-#include
-#include
-#include
-#include
-#include "board_config.h"
-#include "i2c.h"
-
-/******************************************************************************/
-/* TMP112A I2C Address */
-#define TMP112A_ADDR (0x49) // 7-bit address (ADD0=GND)
-
-/* Register Addresses */
-/******************************************************************************/
-#define TMP112A_TEMP_REG 0x00 // 温度寄存器
-#define TMP112A_CONFIG_REG 0x01 // 配置寄存器
-#define TMP112A_TLOW_REG 0x02 // 低温阈值寄存器
-#define TMP112A_THIGH_REG 0x03 // 高温阈值寄存器
-
-/* Configuration Register Bits */
-/******************************************************************************/
-#define TMP112A_CONFIG_OS (1 << 15) // One-shot
-#define TMP112A_CONFIG_R1 (1 << 14) // Converter resolution bit 1
-#define TMP112A_CONFIG_R0 (1 << 13) // Converter resolution bit 0
-#define TMP112A_CONFIG_F1 (1 << 12) // Fault queue bit 1
-#define TMP112A_CONFIG_F0 (1 << 11) // Fault queue bit 0
-#define TMP112A_CONFIG_POL (1 << 10) // Polarity
-#define TMP112A_CONFIG_TM (1 << 9) // Thermostat mode
-#define TMP112A_CONFIG_SD (1 << 8) // Shutdown
-#define TMP112A_CONFIG_CR1 (1 << 7) // Conversion rate bit 1
-#define TMP112A_CONFIG_CR0 (1 << 6) // Conversion rate bit 0
-#define TMP112A_CONFIG_AL (1 << 5) // Alert
-#define TMP112A_CONFIG_EM (1 << 4) // Extended mode
-
-/* Resolution Settings */
-/******************************************************************************/
-#define TMP112A_RESOLUTION_9BIT 0x0000 // 9-bit (0.5°C)
-#define TMP112A_RESOLUTION_10BIT 0x2000 // 10-bit (0.25°C)
-#define TMP112A_RESOLUTION_11BIT 0x4000 // 11-bit (0.125°C)
-#define TMP112A_RESOLUTION_12BIT 0x6000 // 12-bit (0.0625°C)
-
-/* Conversion Rate Settings */
-/******************************************************************************/
-#define TMP112A_RATE_0_25HZ 0x0000 // 0.25 Hz (4s)
-#define TMP112A_RATE_1HZ 0x0040 // 1 Hz (1s)
-#define TMP112A_RATE_4HZ 0x0080 // 4 Hz (250ms)
-#define TMP112A_RATE_8HZ 0x00C0 // 8 Hz (125ms)
-
-/* Default Configuration */
-/******************************************************************************/
-#define TMP112A_CONFIG_DEFAULT (TMP112A_RESOLUTION_12BIT | TMP112A_RATE_8HZ)
-
-/* Temperature Conversion Constants */
-/******************************************************************************/
-#define TMP112A_TEMP_RESOLUTION 0.0625f // 12-bit resolution (°C/LSB)
-#define TMP112A_TEMP_MIN -55.0f // 最低温度 (°C)
-#define TMP112A_TEMP_MAX 125.0f // 最高温度 (°C)
-
-/* Status Definitions */
-/******************************************************************************/
-typedef enum {
- TMP112A_STATUS_SUCCESS = 0,
- TMP112A_STATUS_ERROR,
- TMP112A_STATUS_TIMEOUT,
- TMP112A_STATUS_INVALID_PARAM,
- TMP112A_STATUS_OUT_OF_RANGE
-} tmp112a_status_t;
-
-typedef struct {
- uint16_t raw_data;
- float temperature_c;
- float temperature_f;
- bool alert_flag;
-} tmp112a_result_t;
-
-/******************************************************************************/
-/* Function Declarations */
-
-/*!
- \brief 初始化TMP112A传感器
- \param[in] none
- \param[out] none
- \retval tmp112a_status_t
-*/
-tmp112a_status_t tmp112a_init(void);
-
-/*!
- \brief 配置TMP112A传感器
- \param[in] config: 配置值
- \param[out] none
- \retval tmp112a_status_t
-*/
-tmp112a_status_t tmp112a_config(uint16_t config);
-
-/*!
- \brief 读取温度
- \param[in] none
- \param[out] result: 结果结构体指针
- \retval tmp112a_status_t
-*/
-tmp112a_status_t tmp112a_read_temperature(tmp112a_result_t *result);
-
-void tmp112a_get_raw_temperature_value(uint8_t *value);
-
-/*!
- \brief 设置温度阈值
- \param[in] low_temp: 低温阈值 (°C)
- \param[in] high_temp: 高温阈值 (°C)
- \param[out] none
- \retval tmp112a_status_t
-*/
-tmp112a_status_t tmp112a_set_thresholds(float low_temp, float high_temp);
-
-/*!
- \brief 进入关机模式
- \param[in] none
- \param[out] none
- \retval tmp112a_status_t
-*/
-tmp112a_status_t tmp112a_shutdown(void);
-
-/*!
- \brief 退出关机模式
- \param[in] none
- \param[out] none
- \retval tmp112a_status_t
-*/
-tmp112a_status_t tmp112a_wakeup(void);
-
-/*!
- \brief 单次转换
- \param[in] none
- \param[out] result: 结果结构体指针
- \retval tmp112a_status_t
-*/
-tmp112a_status_t tmp112a_one_shot(tmp112a_result_t *result);
-
-/*!
- \brief 获取状态字符串
- \param[in] status: 状态码
- \param[out] none
- \retval const char* 状态字符串
-*/
-const char* tmp112a_get_status_string(tmp112a_status_t status);
-
-#endif //TMP112_H
+//
+// Created by dell on 24-12-20.
+// TMP112A Temperature Sensor Driver Header
+//
+
+#ifndef TMP112_H
+#define TMP112_H
+
+#include "gd32e23x_it.h"
+#include "gd32e23x.h"
+#include "systick.h"
+#include
+#include
+#include
+#include
+#include
+#include "board_config.h"
+#include "i2c.h"
+
+/******************************************************************************/
+/* TMP112A I2C Address */
+#define TMP112A_ADDR (0x49) // 7-bit address (ADD0=GND)
+
+/* Register Addresses */
+/******************************************************************************/
+#define TMP112A_TEMP_REG 0x00 // 温度寄存器
+#define TMP112A_CONFIG_REG 0x01 // 配置寄存器
+#define TMP112A_TLOW_REG 0x02 // 低温阈值寄存器
+#define TMP112A_THIGH_REG 0x03 // 高温阈值寄存器
+
+/* Configuration Register Bits */
+/******************************************************************************/
+#define TMP112A_CONFIG_OS (1 << 15) // One-shot
+#define TMP112A_CONFIG_R1 (1 << 14) // Converter resolution bit 1
+#define TMP112A_CONFIG_R0 (1 << 13) // Converter resolution bit 0
+#define TMP112A_CONFIG_F1 (1 << 12) // Fault queue bit 1
+#define TMP112A_CONFIG_F0 (1 << 11) // Fault queue bit 0
+#define TMP112A_CONFIG_POL (1 << 10) // Polarity
+#define TMP112A_CONFIG_TM (1 << 9) // Thermostat mode
+#define TMP112A_CONFIG_SD (1 << 8) // Shutdown
+#define TMP112A_CONFIG_CR1 (1 << 7) // Conversion rate bit 1
+#define TMP112A_CONFIG_CR0 (1 << 6) // Conversion rate bit 0
+#define TMP112A_CONFIG_AL (1 << 5) // Alert
+#define TMP112A_CONFIG_EM (1 << 4) // Extended mode
+
+/* Resolution Settings */
+/******************************************************************************/
+#define TMP112A_RESOLUTION_9BIT 0x0000 // 9-bit (0.5°C)
+#define TMP112A_RESOLUTION_10BIT 0x2000 // 10-bit (0.25°C)
+#define TMP112A_RESOLUTION_11BIT 0x4000 // 11-bit (0.125°C)
+#define TMP112A_RESOLUTION_12BIT 0x6000 // 12-bit (0.0625°C)
+
+/* Conversion Rate Settings */
+/******************************************************************************/
+#define TMP112A_RATE_0_25HZ 0x0000 // 0.25 Hz (4s)
+#define TMP112A_RATE_1HZ 0x0040 // 1 Hz (1s)
+#define TMP112A_RATE_4HZ 0x0080 // 4 Hz (250ms)
+#define TMP112A_RATE_8HZ 0x00C0 // 8 Hz (125ms)
+
+/* Default Configuration */
+/******************************************************************************/
+#define TMP112A_CONFIG_DEFAULT (TMP112A_RESOLUTION_12BIT | TMP112A_RATE_8HZ)
+
+/* Temperature Conversion Constants */
+/******************************************************************************/
+#define TMP112A_TEMP_RESOLUTION 0.0625f // 12-bit resolution (°C/LSB)
+#define TMP112A_TEMP_MIN -55.0f // 最低温度 (°C)
+#define TMP112A_TEMP_MAX 125.0f // 最高温度 (°C)
+
+/* Status Definitions */
+/******************************************************************************/
+typedef enum {
+ TMP112A_STATUS_SUCCESS = 0,
+ TMP112A_STATUS_ERROR,
+ TMP112A_STATUS_TIMEOUT,
+ TMP112A_STATUS_INVALID_PARAM,
+ TMP112A_STATUS_OUT_OF_RANGE
+} tmp112a_status_t;
+
+typedef struct {
+ uint16_t raw_data;
+ float temperature_c;
+ float temperature_f;
+ bool alert_flag;
+} tmp112a_result_t;
+
+/******************************************************************************/
+/* Function Declarations */
+
+/*!
+ \brief 初始化TMP112A传感器
+ \param[in] none
+ \param[out] none
+ \retval tmp112a_status_t
+*/
+tmp112a_status_t tmp112a_init(void);
+
+/*!
+ \brief 配置TMP112A传感器
+ \param[in] config: 配置值
+ \param[out] none
+ \retval tmp112a_status_t
+*/
+tmp112a_status_t tmp112a_config(uint16_t config);
+
+/*!
+ \brief 读取温度
+ \param[in] none
+ \param[out] result: 结果结构体指针
+ \retval tmp112a_status_t
+*/
+tmp112a_status_t tmp112a_read_temperature(tmp112a_result_t *result);
+
+void tmp112a_get_raw_temperature_value(uint8_t *value);
+
+/*!
+ \brief 设置温度阈值
+ \param[in] low_temp: 低温阈值 (°C)
+ \param[in] high_temp: 高温阈值 (°C)
+ \param[out] none
+ \retval tmp112a_status_t
+*/
+tmp112a_status_t tmp112a_set_thresholds(float low_temp, float high_temp);
+
+/*!
+ \brief 进入关机模式
+ \param[in] none
+ \param[out] none
+ \retval tmp112a_status_t
+*/
+tmp112a_status_t tmp112a_shutdown(void);
+
+/*!
+ \brief 退出关机模式
+ \param[in] none
+ \param[out] none
+ \retval tmp112a_status_t
+*/
+tmp112a_status_t tmp112a_wakeup(void);
+
+/*!
+ \brief 单次转换
+ \param[in] none
+ \param[out] result: 结果结构体指针
+ \retval tmp112a_status_t
+*/
+tmp112a_status_t tmp112a_one_shot(tmp112a_result_t *result);
+
+/*!
+ \brief 获取状态字符串
+ \param[in] status: 状态码
+ \param[out] none
+ \retval const char* 状态字符串
+*/
+const char* tmp112a_get_status_string(tmp112a_status_t status);
+
+#endif //TMP112_H
diff --git a/Inc/uart.h b/Inc/uart.h
index b7edabc..f68da45 100644
--- a/Inc/uart.h
+++ b/Inc/uart.h
@@ -1,8 +1,8 @@
-#ifndef UART_H
-#define UART_H
-
-#include "gd32e23x.h"
-
-void rs485_init(void);
-
-#endif // UART_H
+#ifndef UART_H
+#define UART_H
+
+#include "gd32e23x.h"
+
+void rs485_init(void);
+
+#endif // UART_H
diff --git a/Inc/uart_ring_buffer.h b/Inc/uart_ring_buffer.h
index effeb35..34692ba 100644
--- a/Inc/uart_ring_buffer.h
+++ b/Inc/uart_ring_buffer.h
@@ -1,119 +1,119 @@
-/**
- * @file uart_ring_buffer.h
- * @brief 简单高效的环形接收缓冲区(字节队列)接口声明。
- * @details 提供字节写入/读取、可读长度查询、清空与丢弃统计等 API,
- * 适用于中断接收(写)与主循环解析(读)的典型嵌入式串口场景。
- */
-#ifndef UART_RING_BUFFER_H
-#define UART_RING_BUFFER_H
-
-#include
-#include
-
-/**
- * @def UART_RX_BUFFER_SIZE
- * @brief 接收环形缓冲区容量(单位:字节)。
- * @note 采用“预留一格”区分空/满策略,最大可用容量为 UART_RX_BUFFER_SIZE-1。
- */
-#define UART_RX_BUFFER_SIZE 64
-
-/**
- * @defgroup RingBuffer 环形缓冲区
- * @brief 字节环形缓冲区(接收端)
- * @{
- */
-
-/**
- * @section RingBuffer_Usage 使用说明
- * 典型用法:中断接收(写入环形缓冲)、主循环解析(读取环形缓冲)。
- *
- * 1) 初始化
- * @code{.c}
- * uart_ring_buffer_init();
- * @endcode
- *
- * 2) 使能串口接收非空中断(RBNE)并开启中断(以 USART0 为例)
- * @code{.c}
- * usart_interrupt_enable(USART0, USART_INT_RBNE);
- * nvic_irq_enable(USART0_IRQn, 2, 0); // 根据工程需要设置优先级
- * @endcode
- *
- * 3) 在中断服务函数中写入环形缓冲(参考你当前工程的写法)
- * @code{.c}
- * void USART0_IRQHandler(void) {
- * if (RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE)) {
- * uint8_t data = usart_data_receive(USART0);
- * (void)uart_ring_buffer_put(data); // 缓冲满时丢弃并计数
- * }
- * }
- * @endcode
- *
- * 4) 在主循环中读取处理
- * @code{.c}
- * while (uart_ring_buffer_available() > 0) {
- * int b = uart_ring_buffer_get();
- * if (b >= 0) {
- * // 处理字节 b
- * }
- * }
- * @endcode
- *
- * @note 缓冲区满时新字节会被丢弃,可用 uart_ring_buffer_drop_count() 查看累计丢弃数。
- * @note 采用“预留一格”区分空/满,最大可用容量为 UART_RX_BUFFER_SIZE-1。
- */
-
-/**
- * @brief 初始化环形缓冲区。
- * @details 复位读/写索引与丢弃计数,准备接收数据。
- * @note 若在中断环境使用,初始化前建议关闭相关接收中断以避免并发竞争。
- * @ingroup RingBuffer
- */
-void uart_ring_buffer_init(void);
-
-/**
- * @brief 获取当前可读的字节数。
- * @details 返回范围为 [0, UART_RX_BUFFER_SIZE-1]。
- * @return 可读字节数(uint8_t)。
- * @note 预留一个空槽区分“空/满”,因此满时返回 UART_RX_BUFFER_SIZE-1。
- * @ingroup RingBuffer
- */
-uint8_t uart_ring_buffer_available(void);
-
-/**
- * @brief 从环形缓冲区读取一个字节。
- * @details 若缓冲区非空,返回队头字节并推进读指针;若为空,返回 -1。
- * @return 读取到的字节(0..255),或 -1 表示缓冲区为空。
- * @retval -1 缓冲区为空,无数据可读。
- * @ingroup RingBuffer
- */
-int uart_ring_buffer_get(void);
-
-/**
- * @brief 向环形缓冲区写入一个字节。
- * @param data 待写入的字节。
- * @return 是否写入成功。
- * @retval true 写入成功。
- * @retval false 写入失败(缓冲区已满,数据被丢弃并计数)。
- * @note 如需改为“覆盖写入”策略,可在满时先推进读指针再写入。
- * @ingroup RingBuffer
- */
-bool uart_ring_buffer_put(uint8_t data);
-
-/**
- * @brief 清空环形缓冲区。
- * @details 复位读/写索引与丢弃计数,相当于逻辑上丢弃所有已接收数据,不擦除数据区内容。
- * @ingroup RingBuffer
- */
-void uart_ring_buffer_clear(void);
-
-/**
- * @brief 获取因缓冲区满而被丢弃的字节累计数量。
- * @details 该计数在 init/clear 时清零。
- * @return 丢弃的累计字节数。
- * @ingroup RingBuffer
- */
-uint32_t uart_ring_buffer_drop_count(void);
-
-/** @} */
-
-#endif // UART_RING_BUFFER_H
+/**
+ * @file uart_ring_buffer.h
+ * @brief 简单高效的环形接收缓冲区(字节队列)接口声明。
+ * @details 提供字节写入/读取、可读长度查询、清空与丢弃统计等 API,
+ * 适用于中断接收(写)与主循环解析(读)的典型嵌入式串口场景。
+ */
+#ifndef UART_RING_BUFFER_H
+#define UART_RING_BUFFER_H
+
+#include
+#include
+
+/**
+ * @def UART_RX_BUFFER_SIZE
+ * @brief 接收环形缓冲区容量(单位:字节)。
+ * @note 采用“预留一格”区分空/满策略,最大可用容量为 UART_RX_BUFFER_SIZE-1。
+ */
+#define UART_RX_BUFFER_SIZE 64
+
+/**
+ * @defgroup RingBuffer 环形缓冲区
+ * @brief 字节环形缓冲区(接收端)
+ * @{
+ */
+
+/**
+ * @section RingBuffer_Usage 使用说明
+ * 典型用法:中断接收(写入环形缓冲)、主循环解析(读取环形缓冲)。
+ *
+ * 1) 初始化
+ * @code{.c}
+ * uart_ring_buffer_init();
+ * @endcode
+ *
+ * 2) 使能串口接收非空中断(RBNE)并开启中断(以 USART0 为例)
+ * @code{.c}
+ * usart_interrupt_enable(USART0, USART_INT_RBNE);
+ * nvic_irq_enable(USART0_IRQn, 2, 0); // 根据工程需要设置优先级
+ * @endcode
+ *
+ * 3) 在中断服务函数中写入环形缓冲(参考你当前工程的写法)
+ * @code{.c}
+ * void USART0_IRQHandler(void) {
+ * if (RESET != usart_interrupt_flag_get(USART0, USART_INT_FLAG_RBNE)) {
+ * uint8_t data = usart_data_receive(USART0);
+ * (void)uart_ring_buffer_put(data); // 缓冲满时丢弃并计数
+ * }
+ * }
+ * @endcode
+ *
+ * 4) 在主循环中读取处理
+ * @code{.c}
+ * while (uart_ring_buffer_available() > 0) {
+ * int b = uart_ring_buffer_get();
+ * if (b >= 0) {
+ * // 处理字节 b
+ * }
+ * }
+ * @endcode
+ *
+ * @note 缓冲区满时新字节会被丢弃,可用 uart_ring_buffer_drop_count() 查看累计丢弃数。
+ * @note 采用“预留一格”区分空/满,最大可用容量为 UART_RX_BUFFER_SIZE-1。
+ */
+
+/**
+ * @brief 初始化环形缓冲区。
+ * @details 复位读/写索引与丢弃计数,准备接收数据。
+ * @note 若在中断环境使用,初始化前建议关闭相关接收中断以避免并发竞争。
+ * @ingroup RingBuffer
+ */
+void uart_ring_buffer_init(void);
+
+/**
+ * @brief 获取当前可读的字节数。
+ * @details 返回范围为 [0, UART_RX_BUFFER_SIZE-1]。
+ * @return 可读字节数(uint8_t)。
+ * @note 预留一个空槽区分“空/满”,因此满时返回 UART_RX_BUFFER_SIZE-1。
+ * @ingroup RingBuffer
+ */
+uint8_t uart_ring_buffer_available(void);
+
+/**
+ * @brief 从环形缓冲区读取一个字节。
+ * @details 若缓冲区非空,返回队头字节并推进读指针;若为空,返回 -1。
+ * @return 读取到的字节(0..255),或 -1 表示缓冲区为空。
+ * @retval -1 缓冲区为空,无数据可读。
+ * @ingroup RingBuffer
+ */
+int uart_ring_buffer_get(void);
+
+/**
+ * @brief 向环形缓冲区写入一个字节。
+ * @param data 待写入的字节。
+ * @return 是否写入成功。
+ * @retval true 写入成功。
+ * @retval false 写入失败(缓冲区已满,数据被丢弃并计数)。
+ * @note 如需改为“覆盖写入”策略,可在满时先推进读指针再写入。
+ * @ingroup RingBuffer
+ */
+bool uart_ring_buffer_put(uint8_t data);
+
+/**
+ * @brief 清空环形缓冲区。
+ * @details 复位读/写索引与丢弃计数,相当于逻辑上丢弃所有已接收数据,不擦除数据区内容。
+ * @ingroup RingBuffer
+ */
+void uart_ring_buffer_clear(void);
+
+/**
+ * @brief 获取因缓冲区满而被丢弃的字节累计数量。
+ * @details 该计数在 init/clear 时清零。
+ * @return 丢弃的累计字节数。
+ * @ingroup RingBuffer
+ */
+uint32_t uart_ring_buffer_drop_count(void);
+
+/** @} */
+
+#endif // UART_RING_BUFFER_H
diff --git a/LD/gd32e23x_flash.ld b/LD/gd32e23x_flash.ld
index de91ddc..eebf864 100644
--- a/LD/gd32e23x_flash.ld
+++ b/LD/gd32e23x_flash.ld
@@ -1,155 +1,155 @@
-/* Memory Map */
-
-/* Entry Point */
-ENTRY(Reset_Handler)
-
-/* Highest address of the user mode stack */
-_sp = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */
-
-_Min_Heap_Size = 0x200; /* required amount of heap */
-_Min_Stack_Size = 0x400; /* required amount of stack */
-
-/* Memories definition */
-MEMORY
-{
- FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 32K
- RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 8K
-}
-
-/* Sections */
-SECTIONS
-{
- /* The startup code into "FLASH" Rom type memory */
- .vectors :
- {
- . = ALIGN(4);
- KEEP(*(.vectors)) /* Startup code */
- . = ALIGN(4);
- } >FLASH
-
- /* The program code and other data into "FLASH" Rom type memory */
- .text :
- {
- . = ALIGN(4);
- *(.text) /* .text sections (code) */
- *(.text*) /* .text* sections (code) */
- *(.glue_7) /* glue arm to thumb code */
- *(.glue_7t) /* glue thumb to arm code */
- *(.eh_frame)
-
- KEEP (*(.init))
- KEEP (*(.fini))
-
- . = ALIGN(4);
- _etext = .; /* define a global symbols at end of code */
- } >FLASH
-
- /* Constant data into "FLASH" Rom type memory */
- .rodata :
- {
- . = ALIGN(4);
- *(.rodata) /* .rodata sections (constants, strings, etc.) */
- *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
- . = ALIGN(4);
- } >FLASH
-
- .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
- {
- . = ALIGN(4);
- *(.ARM.extab* .gnu.linkonce.armextab.*)
- . = ALIGN(4);
- } >FLASH
-
- .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
- {
- . = ALIGN(4);
- __exidx_start = .;
- *(.ARM.exidx*)
- __exidx_end = .;
- . = ALIGN(4);
- } >FLASH
-
- .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
- {
- . = ALIGN(4);
- PROVIDE_HIDDEN (__preinit_array_start = .);
- KEEP (*(.preinit_array*))
- PROVIDE_HIDDEN (__preinit_array_end = .);
- . = ALIGN(4);
- } >FLASH
-
- .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
- {
- . = ALIGN(4);
- PROVIDE_HIDDEN (__init_array_start = .);
- KEEP (*(SORT(.init_array.*)))
- KEEP (*(.init_array*))
- PROVIDE_HIDDEN (__init_array_end = .);
- . = ALIGN(4);
- } >FLASH
-
- .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
- {
- . = ALIGN(4);
- PROVIDE_HIDDEN (__fini_array_start = .);
- KEEP (*(SORT(.fini_array.*)))
- KEEP (*(.fini_array*))
- PROVIDE_HIDDEN (__fini_array_end = .);
- . = ALIGN(4);
- } >FLASH
-
- /* Used by the startup to initialize data */
- _sidata = LOADADDR(.data);
-
- /* Initialized data sections into "RAM" Ram type memory */
- .data :
- {
- . = ALIGN(4);
- _sdata = .; /* create a global symbol at data start */
- *(.data) /* .data sections */
- *(.data*) /* .data* sections */
- *(.RamFunc) /* .RamFunc sections */
- *(.RamFunc*) /* .RamFunc* sections */
-
- . = ALIGN(4);
- _edata = .; /* define a global symbol at data end */
-
- } >RAM AT> FLASH
-
- /* Uninitialized data section into "RAM" Ram type memory */
- . = ALIGN(4);
- .bss :
- {
- /* This is used by the startup in order to initialize the .bss section */
- _sbss = .; /* define a global symbol at bss start */
- __bss_start__ = _sbss;
- *(.bss)
- *(.bss*)
- *(COMMON)
-
- . = ALIGN(4);
- _ebss = .; /* define a global symbol at bss end */
- __bss_end__ = _ebss;
- } >RAM
-
- /* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */
- ._user_heap_stack :
- {
- . = ALIGN(8);
- PROVIDE ( end = . );
- PROVIDE ( _end = . );
- . = . + _Min_Heap_Size;
- . = . + _Min_Stack_Size;
- . = ALIGN(8);
- } >RAM
-
- /* Remove information from the compiler libraries */
- /DISCARD/ :
- {
- libc.a ( * )
- libm.a ( * )
- libgcc.a ( * )
- }
-
- .ARM.attributes 0 : { *(.ARM.attributes) }
-}
+/* Memory Map */
+
+/* Entry Point */
+ENTRY(Reset_Handler)
+
+/* Highest address of the user mode stack */
+_sp = ORIGIN(RAM) + LENGTH(RAM); /* end of "RAM" Ram type memory */
+
+_Min_Heap_Size = 0x200; /* required amount of heap */
+_Min_Stack_Size = 0x400; /* required amount of stack */
+
+/* Memories definition */
+MEMORY
+{
+ FLASH (rx) : ORIGIN = 0x08002000, LENGTH = 32K
+ RAM (xrw) : ORIGIN = 0x20000000, LENGTH = 8K
+}
+
+/* Sections */
+SECTIONS
+{
+ /* The startup code into "FLASH" Rom type memory */
+ .vectors :
+ {
+ . = ALIGN(4);
+ KEEP(*(.vectors)) /* Startup code */
+ . = ALIGN(4);
+ } >FLASH
+
+ /* The program code and other data into "FLASH" Rom type memory */
+ .text :
+ {
+ . = ALIGN(4);
+ *(.text) /* .text sections (code) */
+ *(.text*) /* .text* sections (code) */
+ *(.glue_7) /* glue arm to thumb code */
+ *(.glue_7t) /* glue thumb to arm code */
+ *(.eh_frame)
+
+ KEEP (*(.init))
+ KEEP (*(.fini))
+
+ . = ALIGN(4);
+ _etext = .; /* define a global symbols at end of code */
+ } >FLASH
+
+ /* Constant data into "FLASH" Rom type memory */
+ .rodata :
+ {
+ . = ALIGN(4);
+ *(.rodata) /* .rodata sections (constants, strings, etc.) */
+ *(.rodata*) /* .rodata* sections (constants, strings, etc.) */
+ . = ALIGN(4);
+ } >FLASH
+
+ .ARM.extab (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ . = ALIGN(4);
+ *(.ARM.extab* .gnu.linkonce.armextab.*)
+ . = ALIGN(4);
+ } >FLASH
+
+ .ARM (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ . = ALIGN(4);
+ __exidx_start = .;
+ *(.ARM.exidx*)
+ __exidx_end = .;
+ . = ALIGN(4);
+ } >FLASH
+
+ .preinit_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ . = ALIGN(4);
+ PROVIDE_HIDDEN (__preinit_array_start = .);
+ KEEP (*(.preinit_array*))
+ PROVIDE_HIDDEN (__preinit_array_end = .);
+ . = ALIGN(4);
+ } >FLASH
+
+ .init_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ . = ALIGN(4);
+ PROVIDE_HIDDEN (__init_array_start = .);
+ KEEP (*(SORT(.init_array.*)))
+ KEEP (*(.init_array*))
+ PROVIDE_HIDDEN (__init_array_end = .);
+ . = ALIGN(4);
+ } >FLASH
+
+ .fini_array (READONLY) : /* The READONLY keyword is only supported in GCC11 and later, remove it if using GCC10 or earlier. */
+ {
+ . = ALIGN(4);
+ PROVIDE_HIDDEN (__fini_array_start = .);
+ KEEP (*(SORT(.fini_array.*)))
+ KEEP (*(.fini_array*))
+ PROVIDE_HIDDEN (__fini_array_end = .);
+ . = ALIGN(4);
+ } >FLASH
+
+ /* Used by the startup to initialize data */
+ _sidata = LOADADDR(.data);
+
+ /* Initialized data sections into "RAM" Ram type memory */
+ .data :
+ {
+ . = ALIGN(4);
+ _sdata = .; /* create a global symbol at data start */
+ *(.data) /* .data sections */
+ *(.data*) /* .data* sections */
+ *(.RamFunc) /* .RamFunc sections */
+ *(.RamFunc*) /* .RamFunc* sections */
+
+ . = ALIGN(4);
+ _edata = .; /* define a global symbol at data end */
+
+ } >RAM AT> FLASH
+
+ /* Uninitialized data section into "RAM" Ram type memory */
+ . = ALIGN(4);
+ .bss :
+ {
+ /* This is used by the startup in order to initialize the .bss section */
+ _sbss = .; /* define a global symbol at bss start */
+ __bss_start__ = _sbss;
+ *(.bss)
+ *(.bss*)
+ *(COMMON)
+
+ . = ALIGN(4);
+ _ebss = .; /* define a global symbol at bss end */
+ __bss_end__ = _ebss;
+ } >RAM
+
+ /* User_heap_stack section, used to check that there is enough "RAM" Ram type memory left */
+ ._user_heap_stack :
+ {
+ . = ALIGN(8);
+ PROVIDE ( end = . );
+ PROVIDE ( _end = . );
+ . = . + _Min_Heap_Size;
+ . = . + _Min_Stack_Size;
+ . = ALIGN(8);
+ } >RAM
+
+ /* Remove information from the compiler libraries */
+ /DISCARD/ :
+ {
+ libc.a ( * )
+ libm.a ( * )
+ libgcc.a ( * )
+ }
+
+ .ARM.attributes 0 : { *(.ARM.attributes) }
+}
diff --git a/README.md b/README.md
index a2cadad..172f39c 100644
--- a/README.md
+++ b/README.md
@@ -1,139 +1,139 @@
-# GD32E23x 工程模板
-
-本仓库为兆易创新 GD32E23x 系列 MCU 的 CMake + VSCode 工程模板,适合嵌入式开发快速上手和团队协作。
-
----
-
-## 目录
-
-- [适用范围](#适用范围)
-- [默认配置](#默认配置)
-- [工具链准备](#工具链准备)
-- [使用说明](#使用说明)
-- [时钟配置说明](#时钟配置说明)
-- [vcpkg 依赖管理(可选)](#vcpkg-依赖管理可选)
-- [建议补充内容](#建议补充内容)
-
----
-
-## 适用范围
-
-- 适用于兆易创新 GD32E23x 系列 Cortex-M23 内核单片机
-- 支持标准外设库开发
-- 推荐开发环境:VSCode + CMake + ARM GCC 工具链
-
----
-
-## 默认配置
-
-- MCU 主频:内部 RC 振荡器,系统时钟配置为 72MHz
-
----
-
-## 工具链准备
-
-### 1. xPack GNU Arm Embedded GCC Toolchain
-
-- **版本**:xpack-arm-none-eabi-gcc-11.3.1-1.1
-- **建议解压路径**:Tools/xpack-arm-none-eabi-gcc-11.3.1-1.1
-- **官方下载地址**:https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases
-- **路径自定义说明**:
- 如需自定义工具链路径,请同步修改以下文件:
- - `Projects///cmake/arm-none-eabi-gcc.cmake`(第2行)
- - `Projects///.vscode/launch.json`(第12行)
-
-### 2. OpenOCD
-
-- **版本**:xpack-openocd-0.11.0-3
-- **建议解压路径**:Tools/xpack-openocd-0.11.0-3
-- **获取地址**:https://github.com/burakenez/gd32-tools-xpack-openocd/tree/v0.11.0-3
-- **说明**:
- - 本版本提取自 Embedded Builder V1.4.1.23782。
- - ⚠️ 请勿随意更换版本,因 GD32 MCU 支持有限,推荐严格使用此版本。
-- **路径自定义说明**:
- 如需自定义 OpenOCD 路径,请同步修改以下文件:
- - `Projects///.vscode/launch.json`(第14、17行)
- - `Projects///.vscode/task.json` 中所有相关路径
-
----
-
-## 使用说明
-
-1. **准备工具链**
- - 按上述说明下载并解压 ARM GCC 和 OpenOCD 到 Tools 目录。
- - Toolchain 目录内容不会被 git 跟踪,需自行维护。
-
-2. **烧录固件**
- - 可直接使用 VSCode 任务栏的 Flash MCU 任务,或命令行运行 OpenOCD。
-
----
-
-## 时钟配置说明
-
-本工程默认系统时钟为内部 IRC8M 振荡器经 PLL 倍频后的 72MHz。
-
-如需修改主频或时钟源,请编辑 `Src/system_gd32e23x.c` 文件:
-
-1. 查找如下宏定义区:
- ```c
- // #define __SYSTEM_CLOCK_8M_HXTAL (__HXTAL)
- // #define __SYSTEM_CLOCK_8M_IRC8M (__IRC8M)
- // #define __SYSTEM_CLOCK_72M_PLL_HXTAL (uint32_t)(72000000)
- #define __SYSTEM_CLOCK_72M_PLL_IRC8M_DIV2 (uint32_t)(72000000)
- ```
-2. 取消你需要的时钟方案的注释,并注释掉其它方案。
-3. 保存后重新编译工程即可生效。
-
-详细时钟初始化流程可参考 `system_gd32e23x.c` 文件中的 `system_clock_config` 及相关函数实现。
-
----
-
-## vcpkg 依赖管理(可选)
-
-本工程可选支持 vcpkg 作为 C/C++ 工具链和构建工具的自动化依赖管理方案。
-
-- 自动下载和管理如 CMake、Ninja 等构建工具,简化环境配置。
-- 可扩展用于第三方 C/C++ 库的统一管理。
-
-**启用方法**:
-1. 在项目根目录创建 `vcpkg-configuration.json` 文件,内容如下:
-
- ```json
- {
- "registries": [
- {
- "name": "microsoft",
- "location": "https://aka.ms/vcpkg-ce-default",
- "kind": "artifact"
- },
- {
- "name": "arm",
- "location": "https://aka.ms/vcpkg-artifacts-arm",
- "kind": "artifact"
- }
- ],
- "requires": {
- "arm:tools/ninja-build/ninja": "^1.12.0",
- "arm:tools/kitware/cmake": "^3.28.4"
- }
- }
- ```
-
-2. 启动 VSCode 或命令行,vcpkg 会自动检测并安装所需工具。
-
-如不需要 vcpkg,可忽略本文件。
-
----
-
-## 建议补充内容
-
-- **快速上手示例**:如 main.c 的最小点灯/串口输出代码片段。
-- **常见问题与解答**:如构建失败、烧录失败的排查建议。
-- **调试说明**:如何用 VSCode 调试、断点、查看寄存器等。
-- **多板卡适配说明**:如有多种硬件,如何切换 BoardName。
-- **贡献指南**:如何提交 PR、代码风格约定等。
-- **License 说明**:开源协议和版权声明。
-
----
-
-如需进一步完善或有其他建议,欢迎随时反馈!
+# GD32E23x 工程模板
+
+本仓库为兆易创新 GD32E23x 系列 MCU 的 CMake + VSCode 工程模板,适合嵌入式开发快速上手和团队协作。
+
+---
+
+## 目录
+
+- [适用范围](#适用范围)
+- [默认配置](#默认配置)
+- [工具链准备](#工具链准备)
+- [使用说明](#使用说明)
+- [时钟配置说明](#时钟配置说明)
+- [vcpkg 依赖管理(可选)](#vcpkg-依赖管理可选)
+- [建议补充内容](#建议补充内容)
+
+---
+
+## 适用范围
+
+- 适用于兆易创新 GD32E23x 系列 Cortex-M23 内核单片机
+- 支持标准外设库开发
+- 推荐开发环境:VSCode + CMake + ARM GCC 工具链
+
+---
+
+## 默认配置
+
+- MCU 主频:内部 RC 振荡器,系统时钟配置为 72MHz
+
+---
+
+## 工具链准备
+
+### 1. xPack GNU Arm Embedded GCC Toolchain
+
+- **版本**:xpack-arm-none-eabi-gcc-11.3.1-1.1
+- **建议解压路径**:Tools/xpack-arm-none-eabi-gcc-11.3.1-1.1
+- **官方下载地址**:https://github.com/xpack-dev-tools/arm-none-eabi-gcc-xpack/releases
+- **路径自定义说明**:
+ 如需自定义工具链路径,请同步修改以下文件:
+ - `Projects///cmake/arm-none-eabi-gcc.cmake`(第2行)
+ - `Projects///.vscode/launch.json`(第12行)
+
+### 2. OpenOCD
+
+- **版本**:xpack-openocd-0.11.0-3
+- **建议解压路径**:Tools/xpack-openocd-0.11.0-3
+- **获取地址**:https://github.com/burakenez/gd32-tools-xpack-openocd/tree/v0.11.0-3
+- **说明**:
+ - 本版本提取自 Embedded Builder V1.4.1.23782。
+ - ⚠️ 请勿随意更换版本,因 GD32 MCU 支持有限,推荐严格使用此版本。
+- **路径自定义说明**:
+ 如需自定义 OpenOCD 路径,请同步修改以下文件:
+ - `Projects///.vscode/launch.json`(第14、17行)
+ - `Projects///.vscode/task.json` 中所有相关路径
+
+---
+
+## 使用说明
+
+1. **准备工具链**
+ - 按上述说明下载并解压 ARM GCC 和 OpenOCD 到 Tools 目录。
+ - Toolchain 目录内容不会被 git 跟踪,需自行维护。
+
+2. **烧录固件**
+ - 可直接使用 VSCode 任务栏的 Flash MCU 任务,或命令行运行 OpenOCD。
+
+---
+
+## 时钟配置说明
+
+本工程默认系统时钟为内部 IRC8M 振荡器经 PLL 倍频后的 72MHz。
+
+如需修改主频或时钟源,请编辑 `Src/system_gd32e23x.c` 文件:
+
+1. 查找如下宏定义区:
+ ```c
+ // #define __SYSTEM_CLOCK_8M_HXTAL (__HXTAL)
+ // #define __SYSTEM_CLOCK_8M_IRC8M (__IRC8M)
+ // #define __SYSTEM_CLOCK_72M_PLL_HXTAL (uint32_t)(72000000)
+ #define __SYSTEM_CLOCK_72M_PLL_IRC8M_DIV2 (uint32_t)(72000000)
+ ```
+2. 取消你需要的时钟方案的注释,并注释掉其它方案。
+3. 保存后重新编译工程即可生效。
+
+详细时钟初始化流程可参考 `system_gd32e23x.c` 文件中的 `system_clock_config` 及相关函数实现。
+
+---
+
+## vcpkg 依赖管理(可选)
+
+本工程可选支持 vcpkg 作为 C/C++ 工具链和构建工具的自动化依赖管理方案。
+
+- 自动下载和管理如 CMake、Ninja 等构建工具,简化环境配置。
+- 可扩展用于第三方 C/C++ 库的统一管理。
+
+**启用方法**:
+1. 在项目根目录创建 `vcpkg-configuration.json` 文件,内容如下:
+
+ ```json
+ {
+ "registries": [
+ {
+ "name": "microsoft",
+ "location": "https://aka.ms/vcpkg-ce-default",
+ "kind": "artifact"
+ },
+ {
+ "name": "arm",
+ "location": "https://aka.ms/vcpkg-artifacts-arm",
+ "kind": "artifact"
+ }
+ ],
+ "requires": {
+ "arm:tools/ninja-build/ninja": "^1.12.0",
+ "arm:tools/kitware/cmake": "^3.28.4"
+ }
+ }
+ ```
+
+2. 启动 VSCode 或命令行,vcpkg 会自动检测并安装所需工具。
+
+如不需要 vcpkg,可忽略本文件。
+
+---
+
+## 建议补充内容
+
+- **快速上手示例**:如 main.c 的最小点灯/串口输出代码片段。
+- **常见问题与解答**:如构建失败、烧录失败的排查建议。
+- **调试说明**:如何用 VSCode 调试、断点、查看寄存器等。
+- **多板卡适配说明**:如有多种硬件,如何切换 BoardName。
+- **贡献指南**:如何提交 PR、代码风格约定等。
+- **License 说明**:开源协议和版权声明。
+
+---
+
+如需进一步完善或有其他建议,欢迎随时反馈!
diff --git a/SDK/CMSIS/CMakeLists.txt b/SDK/CMSIS/CMakeLists.txt
index 75477bc..7f18eaf 100644
--- a/SDK/CMSIS/CMakeLists.txt
+++ b/SDK/CMSIS/CMakeLists.txt
@@ -1,13 +1,13 @@
-project(CMSIS LANGUAGES C CXX ASM)
-
-add_library(CMSIS INTERFACE)
-
-target_include_directories(CMSIS INTERFACE
- ${CMAKE_SOURCE_DIR}/SDK/CMSIS
- ${CMAKE_SOURCE_DIR}/SDK/CMSIS/GD/GD32E23x/Include
-
- # Added directory of "gd32e23x_libopt.h".
- ${CMAKE_SOURCE_DIR}/Inc
-
- # 如有其它需要的头文件目录,可继续添加
+project(CMSIS LANGUAGES C CXX ASM)
+
+add_library(CMSIS INTERFACE)
+
+target_include_directories(CMSIS INTERFACE
+ ${CMAKE_SOURCE_DIR}/SDK/CMSIS
+ ${CMAKE_SOURCE_DIR}/SDK/CMSIS/GD/GD32E23x/Include
+
+ # Added directory of "gd32e23x_libopt.h".
+ ${CMAKE_SOURCE_DIR}/Inc
+
+ # 如有其它需要的头文件目录,可继续添加
)
\ No newline at end of file
diff --git a/SDK/CMSIS/GD/GD32E23x/Include/gd32e23x.h b/SDK/CMSIS/GD/GD32E23x/Include/gd32e23x.h
index 9e73b3f..49e9ae5 100644
--- a/SDK/CMSIS/GD/GD32E23x/Include/gd32e23x.h
+++ b/SDK/CMSIS/GD/GD32E23x/Include/gd32e23x.h
@@ -1,213 +1,213 @@
-/*!
- \file gd32e23x.h
- \brief general definitions for GD32E23x
-
- \version 2025-02-10, V2.3.0, firmware for GD32E23x
-*/
-
-/* Copyright (c) 2012 ARM LIMITED
- Copyright (c) 2025, GigaDevice Semiconductor Inc.
-
- All rights reserved.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- - Neither the name of ARM nor the names of its contributors may be used
- to endorse or promote products derived from this software without
- specific prior written permission.
- *
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
- ---------------------------------------------------------------------------*/
-
-/* This file refers the CMSIS standard, some adjustments are made according to GigaDevice chips */
-
-#ifndef GD32E23X_H
-#define GD32E23X_H
-
-#ifdef __cplusplus
- extern "C" {
-#endif
-
-/* define GD32E23x */
-#if !defined (GD32E23x)
- #define GD32E23x
-#endif /* define GD32E23x */
-#if !defined (GD32E23x)
- #error "Please select the target GD32E23x device used in your application (in gd32e23x.h file)"
-#endif /* undefine GD32E23x tip */
-
-/* define value of high speed crystal oscillator (HXTAL) in Hz */
-#if !defined (HXTAL_VALUE)
-#define HXTAL_VALUE ((uint32_t)8000000)
-#endif /* high speed crystal oscillator value */
-
-/* define startup timeout value of high speed crystal oscillator (HXTAL) */
-#if !defined (HXTAL_STARTUP_TIMEOUT)
-#define HXTAL_STARTUP_TIMEOUT ((uint16_t)0x0FFFF)
-#endif /* high speed crystal oscillator startup timeout */
-
-/* define value of internal 8MHz RC oscillator (IRC8M) in Hz */
-#if !defined (IRC8M_VALUE)
-#define IRC8M_VALUE ((uint32_t)8000000)
-#endif /* internal 8MHz RC oscillator value */
-
-/* define startup timeout value of internal 8MHz RC oscillator (IRC8M) */
-#if !defined (IRC8M_STARTUP_TIMEOUT)
-#define IRC8M_STARTUP_TIMEOUT ((uint16_t)0x0500)
-#endif /* internal 8MHz RC oscillator startup timeout */
-
-/* define value of internal RC oscillator for ADC in Hz */
-#if !defined (IRC28M_VALUE)
-#define IRC28M_VALUE ((uint32_t)28000000)
-#endif /* IRC28M_VALUE */
-
-#if !defined (IRC48M_VALUE)
-#define IRC48M_VALUE ((uint32_t)48000000)
-#endif /* IRC48M_VALUE */
-
-/* define value of internal 40KHz RC oscillator(IRC40K) in Hz */
-#if !defined (IRC40K_VALUE)
-#define IRC40K_VALUE ((uint32_t)40000)
-#endif /* internal 40KHz RC oscillator value */
-
-/* define value of low speed crystal oscillator (LXTAL)in Hz */
-#if !defined (LXTAL_VALUE)
-#define LXTAL_VALUE ((uint32_t)32768)
-#endif /* low speed crystal oscillator value */
-
-/* GD32E23x firmware library version number V1.0 */
-#define __GD32E23x_STDPERIPH_VERSION_MAIN (0x02) /*!< [31:24] main version */
-#define __GD32E23x_STDPERIPH_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
-#define __GD32E23x_STDPERIPH_VERSION_SUB2 (0x00) /*!< [15:8] sub2 version */
-#define __GD32E23x_STDPERIPH_VERSION_RC (0x00) /*!< [7:0] release candidate */
-#define __GD32E23x_STDPERIPH_VERSION ((__GD32E23x_STDPERIPH_VERSION_MAIN << 24)\
- |(__GD32E23x_STDPERIPH_VERSION_SUB1 << 16)\
- |(__GD32E23x_STDPERIPH_VERSION_SUB2 << 8)\
- |(__GD32E23x_STDPERIPH_VERSION_RC))
-
-/* configuration of the Cortex-M23 processor and core peripherals */
-#define __CM23_REV 0x0100U /*!< Core revision r1p0 */
-#define __SAUREGION_PRESENT 0U /*!< SAU regions are not present */
-#define __MPU_PRESENT 0U /*!< MPU is present */
-#define __VTOR_PRESENT 1U /*!< VTOR is present */
-#define __NVIC_PRIO_BITS 2U /*!< Number of Bits used for Priority Levels */
-#define __Vendor_SysTickConfig 0U /*!< Set to 1 if different SysTick Config is used */
-
-/* define interrupt number */
-typedef enum IRQn
-{
- /* Cortex-M23 processor exceptions numbers */
- NonMaskableInt_IRQn = -14, /*!< non maskable interrupt */
- HardFault_IRQn = -13, /*!< hardfault interrupt */
-
- SVCall_IRQn = -5, /*!< sv call interrupt */
-
- PendSV_IRQn = -2, /*!< pend sv interrupt */
- SysTick_IRQn = -1, /*!< system tick interrupt */
- /* interruput numbers */
- WWDGT_IRQn = 0, /*!< window watchdog timer interrupt */
- LVD_IRQn = 1, /*!< LVD through EXTI line detect interrupt */
- RTC_IRQn = 2, /*!< RTC through EXTI line interrupt */
- FMC_IRQn = 3, /*!< FMC interrupt */
- RCU_IRQn = 4, /*!< RCU interrupt */
- EXTI0_1_IRQn = 5, /*!< EXTI line 0 and 1 interrupts */
- EXTI2_3_IRQn = 6, /*!< EXTI line 2 and 3 interrupts */
- EXTI4_15_IRQn = 7, /*!< EXTI line 4 to 15 interrupts */
- DMA_Channel0_IRQn = 9, /*!< DMA channel 0 interrupt */
- DMA_Channel1_2_IRQn = 10, /*!< DMA channel 1 and channel 2 interrupts */
- DMA_Channel3_4_IRQn = 11, /*!< DMA channel 3 and channel 4 interrupts */
- ADC_CMP_IRQn = 12, /*!< ADC, CMP interrupts */
- TIMER0_BRK_UP_TRG_COM_IRQn = 13, /*!< TIMER0 break, update, trigger and commutation interrupts */
- TIMER0_Channel_IRQn = 14, /*!< TIMER0 channel capture compare interrupts */
- TIMER2_IRQn = 16, /*!< TIMER2 interrupt */
- TIMER5_IRQn = 17, /*!< TIMER5 interrupt */
- TIMER13_IRQn = 19, /*!< TIMER13 interrupt */
- TIMER14_IRQn = 20, /*!< TIMER14 interrupt */
- TIMER15_IRQn = 21, /*!< TIMER15 interrupt */
- TIMER16_IRQn = 22, /*!< TIMER16 interrupt */
- I2C0_EV_IRQn = 23, /*!< I2C0 event interrupt */
- I2C1_EV_IRQn = 24, /*!< I2C1 event interrupt */
- SPI0_IRQn = 25, /*!< SPI0 interrupt */
- SPI1_IRQn = 26, /*!< SPI1 interrupt */
- USART0_IRQn = 27, /*!< USART0 interrupt */
- USART1_IRQn = 28, /*!< USART1 interrupt */
- I2C0_ER_IRQn = 32, /*!< I2C0 error interrupt */
- I2C1_ER_IRQn = 34, /*!< I2C1 error interrupt */
-} IRQn_Type;
-
-/* includes */
-#include "core_cm23.h"
-#include "system_gd32e23x.h"
-#include
-
-/* enum definitions */
-typedef enum {DISABLE = 0, ENABLE = !DISABLE} EventStatus, ControlStatus;
-typedef enum {RESET = 0, SET = !RESET} FlagStatus;
-typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrStatus;
-
-/* bit operations */
-#define REG32(addr) (*(volatile uint32_t *)(uint32_t)(addr))
-#define REG16(addr) (*(volatile uint16_t *)(uint32_t)(addr))
-#define REG8(addr) (*(volatile uint8_t *)(uint32_t)(addr))
-#define BIT(x) ((uint32_t)((uint32_t)0x01U<<(x)))
-#define BITS(start, end) ((0xFFFFFFFFUL << (start)) & (0xFFFFFFFFUL >> (31U - (uint32_t)(end))))
-#define GET_BITS(regval, start, end) (((regval) & BITS((start),(end))) >> (start))
-
-/* main flash and SRAM memory map */
-#define FLASH_BASE ((uint32_t)0x08000000U) /*!< main FLASH base address */
-#define SRAM_BASE ((uint32_t)0x20000000U) /*!< SRAM base address */
-/* SRAM and peripheral base bit-band region */
-#define SRAM_BB_BASE ((uint32_t)0x22000000U) /*!< SRAM bit-band base address */
-#define PERIPH_BB_BASE ((uint32_t)0x42000000U) /*!< peripheral bit-band base address */
-/* peripheral memory map */
-#define APB1_BUS_BASE ((uint32_t)0x40000000U) /*!< apb1 base address */
-#define APB2_BUS_BASE ((uint32_t)0x40010000U) /*!< apb2 base address */
-#define AHB1_BUS_BASE ((uint32_t)0x40020000U) /*!< ahb1 base address */
-#define AHB2_BUS_BASE ((uint32_t)0x48000000U) /*!< ahb2 base address */
-/* advanced peripheral bus 1 memory map */
-#define TIMER_BASE (APB1_BUS_BASE + 0x00000000U) /*!< TIMER base address */
-#define RTC_BASE (APB1_BUS_BASE + 0x00002800U) /*!< RTC base address */
-#define WWDGT_BASE (APB1_BUS_BASE + 0x00002C00U) /*!< WWDGT base address */
-#define FWDGT_BASE (APB1_BUS_BASE + 0x00003000U) /*!< FWDGT base address */
-#define SPI_BASE (APB1_BUS_BASE + 0x00003800U) /*!< SPI base address */
-#define USART_BASE (APB1_BUS_BASE + 0x00004400U) /*!< USART base address */
-#define I2C_BASE (APB1_BUS_BASE + 0x00005400U) /*!< I2C base address */
-#define PMU_BASE (APB1_BUS_BASE + 0x00007000U) /*!< PMU base address */
-/* advanced peripheral bus 2 memory map */
-#define SYSCFG_BASE (APB2_BUS_BASE + 0x00000000U) /*!< SYSCFG base address */
-#define CMP_BASE (APB2_BUS_BASE + 0x0000001CU) /*!< CMP base address */
-#define EXTI_BASE (APB2_BUS_BASE + 0x00000400U) /*!< EXTI base address */
-#define ADC_BASE (APB2_BUS_BASE + 0x00002400U) /*!< ADC base address */
-/* advanced high performance bus 1 memory map */
-#define DMA_BASE (AHB1_BUS_BASE + 0x00000000U) /*!< DMA base address */
-#define DMA_CHANNEL_BASE (DMA_BASE + 0x00000008U) /*!< DMA channel base address */
-#define RCU_BASE (AHB1_BUS_BASE + 0x00001000U) /*!< RCU base address */
-#define FMC_BASE (AHB1_BUS_BASE + 0x00002000U) /*!< FMC base address */
-#define CRC_BASE (AHB1_BUS_BASE + 0x00003000U) /*!< CRC base address */
-/* advanced high performance bus 2 memory map */
-#define GPIO_BASE (AHB2_BUS_BASE + 0x00000000U) /*!< GPIO base address */
-/* option byte and debug memory map */
-#define OB_BASE ((uint32_t)0x1FFFF800U) /*!< OB base address */
-#define DBG_BASE ((uint32_t)0x40015800U) /*!< DBG base address */
-
-#include "gd32e23x_libopt.h"
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* GD32E23X_H */
+/*!
+ \file gd32e23x.h
+ \brief general definitions for GD32E23x
+
+ \version 2025-02-10, V2.3.0, firmware for GD32E23x
+*/
+
+/* Copyright (c) 2012 ARM LIMITED
+ Copyright (c) 2025, GigaDevice Semiconductor Inc.
+
+ All rights reserved.
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ - Neither the name of ARM nor the names of its contributors may be used
+ to endorse or promote products derived from this software without
+ specific prior written permission.
+ *
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ ---------------------------------------------------------------------------*/
+
+/* This file refers the CMSIS standard, some adjustments are made according to GigaDevice chips */
+
+#ifndef GD32E23X_H
+#define GD32E23X_H
+
+#ifdef __cplusplus
+ extern "C" {
+#endif
+
+/* define GD32E23x */
+#if !defined (GD32E23x)
+ #define GD32E23x
+#endif /* define GD32E23x */
+#if !defined (GD32E23x)
+ #error "Please select the target GD32E23x device used in your application (in gd32e23x.h file)"
+#endif /* undefine GD32E23x tip */
+
+/* define value of high speed crystal oscillator (HXTAL) in Hz */
+#if !defined (HXTAL_VALUE)
+#define HXTAL_VALUE ((uint32_t)8000000)
+#endif /* high speed crystal oscillator value */
+
+/* define startup timeout value of high speed crystal oscillator (HXTAL) */
+#if !defined (HXTAL_STARTUP_TIMEOUT)
+#define HXTAL_STARTUP_TIMEOUT ((uint16_t)0x0FFFF)
+#endif /* high speed crystal oscillator startup timeout */
+
+/* define value of internal 8MHz RC oscillator (IRC8M) in Hz */
+#if !defined (IRC8M_VALUE)
+#define IRC8M_VALUE ((uint32_t)8000000)
+#endif /* internal 8MHz RC oscillator value */
+
+/* define startup timeout value of internal 8MHz RC oscillator (IRC8M) */
+#if !defined (IRC8M_STARTUP_TIMEOUT)
+#define IRC8M_STARTUP_TIMEOUT ((uint16_t)0x0500)
+#endif /* internal 8MHz RC oscillator startup timeout */
+
+/* define value of internal RC oscillator for ADC in Hz */
+#if !defined (IRC28M_VALUE)
+#define IRC28M_VALUE ((uint32_t)28000000)
+#endif /* IRC28M_VALUE */
+
+#if !defined (IRC48M_VALUE)
+#define IRC48M_VALUE ((uint32_t)48000000)
+#endif /* IRC48M_VALUE */
+
+/* define value of internal 40KHz RC oscillator(IRC40K) in Hz */
+#if !defined (IRC40K_VALUE)
+#define IRC40K_VALUE ((uint32_t)40000)
+#endif /* internal 40KHz RC oscillator value */
+
+/* define value of low speed crystal oscillator (LXTAL)in Hz */
+#if !defined (LXTAL_VALUE)
+#define LXTAL_VALUE ((uint32_t)32768)
+#endif /* low speed crystal oscillator value */
+
+/* GD32E23x firmware library version number V1.0 */
+#define __GD32E23x_STDPERIPH_VERSION_MAIN (0x02) /*!< [31:24] main version */
+#define __GD32E23x_STDPERIPH_VERSION_SUB1 (0x02) /*!< [23:16] sub1 version */
+#define __GD32E23x_STDPERIPH_VERSION_SUB2 (0x00) /*!< [15:8] sub2 version */
+#define __GD32E23x_STDPERIPH_VERSION_RC (0x00) /*!< [7:0] release candidate */
+#define __GD32E23x_STDPERIPH_VERSION ((__GD32E23x_STDPERIPH_VERSION_MAIN << 24)\
+ |(__GD32E23x_STDPERIPH_VERSION_SUB1 << 16)\
+ |(__GD32E23x_STDPERIPH_VERSION_SUB2 << 8)\
+ |(__GD32E23x_STDPERIPH_VERSION_RC))
+
+/* configuration of the Cortex-M23 processor and core peripherals */
+#define __CM23_REV 0x0100U /*!< Core revision r1p0 */
+#define __SAUREGION_PRESENT 0U /*!< SAU regions are not present */
+#define __MPU_PRESENT 0U /*!< MPU is present */
+#define __VTOR_PRESENT 1U /*!< VTOR is present */
+#define __NVIC_PRIO_BITS 2U /*!< Number of Bits used for Priority Levels */
+#define __Vendor_SysTickConfig 0U /*!< Set to 1 if different SysTick Config is used */
+
+/* define interrupt number */
+typedef enum IRQn
+{
+ /* Cortex-M23 processor exceptions numbers */
+ NonMaskableInt_IRQn = -14, /*!< non maskable interrupt */
+ HardFault_IRQn = -13, /*!< hardfault interrupt */
+
+ SVCall_IRQn = -5, /*!< sv call interrupt */
+
+ PendSV_IRQn = -2, /*!< pend sv interrupt */
+ SysTick_IRQn = -1, /*!< system tick interrupt */
+ /* interruput numbers */
+ WWDGT_IRQn = 0, /*!< window watchdog timer interrupt */
+ LVD_IRQn = 1, /*!< LVD through EXTI line detect interrupt */
+ RTC_IRQn = 2, /*!< RTC through EXTI line interrupt */
+ FMC_IRQn = 3, /*!< FMC interrupt */
+ RCU_IRQn = 4, /*!< RCU interrupt */
+ EXTI0_1_IRQn = 5, /*!< EXTI line 0 and 1 interrupts */
+ EXTI2_3_IRQn = 6, /*!< EXTI line 2 and 3 interrupts */
+ EXTI4_15_IRQn = 7, /*!< EXTI line 4 to 15 interrupts */
+ DMA_Channel0_IRQn = 9, /*!< DMA channel 0 interrupt */
+ DMA_Channel1_2_IRQn = 10, /*!< DMA channel 1 and channel 2 interrupts */
+ DMA_Channel3_4_IRQn = 11, /*!< DMA channel 3 and channel 4 interrupts */
+ ADC_CMP_IRQn = 12, /*!< ADC, CMP interrupts */
+ TIMER0_BRK_UP_TRG_COM_IRQn = 13, /*!< TIMER0 break, update, trigger and commutation interrupts */
+ TIMER0_Channel_IRQn = 14, /*!< TIMER0 channel capture compare interrupts */
+ TIMER2_IRQn = 16, /*!< TIMER2 interrupt */
+ TIMER5_IRQn = 17, /*!< TIMER5 interrupt */
+ TIMER13_IRQn = 19, /*!< TIMER13 interrupt */
+ TIMER14_IRQn = 20, /*!< TIMER14 interrupt */
+ TIMER15_IRQn = 21, /*!< TIMER15 interrupt */
+ TIMER16_IRQn = 22, /*!< TIMER16 interrupt */
+ I2C0_EV_IRQn = 23, /*!< I2C0 event interrupt */
+ I2C1_EV_IRQn = 24, /*!< I2C1 event interrupt */
+ SPI0_IRQn = 25, /*!< SPI0 interrupt */
+ SPI1_IRQn = 26, /*!< SPI1 interrupt */
+ USART0_IRQn = 27, /*!< USART0 interrupt */
+ USART1_IRQn = 28, /*!< USART1 interrupt */
+ I2C0_ER_IRQn = 32, /*!< I2C0 error interrupt */
+ I2C1_ER_IRQn = 34, /*!< I2C1 error interrupt */
+} IRQn_Type;
+
+/* includes */
+#include "core_cm23.h"
+#include "system_gd32e23x.h"
+#include
+
+/* enum definitions */
+typedef enum {DISABLE = 0, ENABLE = !DISABLE} EventStatus, ControlStatus;
+typedef enum {RESET = 0, SET = !RESET} FlagStatus;
+typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrStatus;
+
+/* bit operations */
+#define REG32(addr) (*(volatile uint32_t *)(uint32_t)(addr))
+#define REG16(addr) (*(volatile uint16_t *)(uint32_t)(addr))
+#define REG8(addr) (*(volatile uint8_t *)(uint32_t)(addr))
+#define BIT(x) ((uint32_t)((uint32_t)0x01U<<(x)))
+#define BITS(start, end) ((0xFFFFFFFFUL << (start)) & (0xFFFFFFFFUL >> (31U - (uint32_t)(end))))
+#define GET_BITS(regval, start, end) (((regval) & BITS((start),(end))) >> (start))
+
+/* main flash and SRAM memory map */
+#define FLASH_BASE ((uint32_t)0x08000000U) /*!< main FLASH base address */
+#define SRAM_BASE ((uint32_t)0x20000000U) /*!< SRAM base address */
+/* SRAM and peripheral base bit-band region */
+#define SRAM_BB_BASE ((uint32_t)0x22000000U) /*!< SRAM bit-band base address */
+#define PERIPH_BB_BASE ((uint32_t)0x42000000U) /*!< peripheral bit-band base address */
+/* peripheral memory map */
+#define APB1_BUS_BASE ((uint32_t)0x40000000U) /*!< apb1 base address */
+#define APB2_BUS_BASE ((uint32_t)0x40010000U) /*!< apb2 base address */
+#define AHB1_BUS_BASE ((uint32_t)0x40020000U) /*!< ahb1 base address */
+#define AHB2_BUS_BASE ((uint32_t)0x48000000U) /*!< ahb2 base address */
+/* advanced peripheral bus 1 memory map */
+#define TIMER_BASE (APB1_BUS_BASE + 0x00000000U) /*!< TIMER base address */
+#define RTC_BASE (APB1_BUS_BASE + 0x00002800U) /*!< RTC base address */
+#define WWDGT_BASE (APB1_BUS_BASE + 0x00002C00U) /*!< WWDGT base address */
+#define FWDGT_BASE (APB1_BUS_BASE + 0x00003000U) /*!< FWDGT base address */
+#define SPI_BASE (APB1_BUS_BASE + 0x00003800U) /*!< SPI base address */
+#define USART_BASE (APB1_BUS_BASE + 0x00004400U) /*!< USART base address */
+#define I2C_BASE (APB1_BUS_BASE + 0x00005400U) /*!< I2C base address */
+#define PMU_BASE (APB1_BUS_BASE + 0x00007000U) /*!< PMU base address */
+/* advanced peripheral bus 2 memory map */
+#define SYSCFG_BASE (APB2_BUS_BASE + 0x00000000U) /*!< SYSCFG base address */
+#define CMP_BASE (APB2_BUS_BASE + 0x0000001CU) /*!< CMP base address */
+#define EXTI_BASE (APB2_BUS_BASE + 0x00000400U) /*!< EXTI base address */
+#define ADC_BASE (APB2_BUS_BASE + 0x00002400U) /*!< ADC base address */
+/* advanced high performance bus 1 memory map */
+#define DMA_BASE (AHB1_BUS_BASE + 0x00000000U) /*!< DMA base address */
+#define DMA_CHANNEL_BASE (DMA_BASE + 0x00000008U) /*!< DMA channel base address */
+#define RCU_BASE (AHB1_BUS_BASE + 0x00001000U) /*!< RCU base address */
+#define FMC_BASE (AHB1_BUS_BASE + 0x00002000U) /*!< FMC base address */
+#define CRC_BASE (AHB1_BUS_BASE + 0x00003000U) /*!< CRC base address */
+/* advanced high performance bus 2 memory map */
+#define GPIO_BASE (AHB2_BUS_BASE + 0x00000000U) /*!< GPIO base address */
+/* option byte and debug memory map */
+#define OB_BASE ((uint32_t)0x1FFFF800U) /*!< OB base address */
+#define DBG_BASE ((uint32_t)0x40015800U) /*!< DBG base address */
+
+#include "gd32e23x_libopt.h"
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* GD32E23X_H */
diff --git a/SDK/CMSIS/GD/GD32E23x/Include/system_gd32e23x.h b/SDK/CMSIS/GD/GD32E23x/Include/system_gd32e23x.h
index 21d8782..c4153ca 100644
--- a/SDK/CMSIS/GD/GD32E23x/Include/system_gd32e23x.h
+++ b/SDK/CMSIS/GD/GD32E23x/Include/system_gd32e23x.h
@@ -1,66 +1,66 @@
-/*!
- \file system_gd32e23x.h
- \brief CMSIS Cortex-M23 Device Peripheral Access Layer Header File for
- GD32E23x Device Series
-*/
-
-/* Copyright (c) 2012 ARM LIMITED
- Copyright (c) 2025, GigaDevice Semiconductor Inc.
-
- All rights reserved.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- - Neither the name of ARM nor the names of its contributors may be used
- to endorse or promote products derived from this software without
- specific prior written permission.
- *
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
- ---------------------------------------------------------------------------*/
-
-/* This file refers the CMSIS standard, some adjustments are made according to GigaDevice chips */
-
-#ifndef SYSTEM_GD32E23X_H
-#define SYSTEM_GD32E23X_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include
-
-/* firmware version can be acquired by uncommenting the macro */
-#define __FIRMWARE_VERSION_DEFINE
-
-/* system clock frequency (core clock) */
-extern uint32_t SystemCoreClock;
-
-/* function declarations */
-/* initialize the system and update the SystemCoreClock variable */
-extern void SystemInit (void);
-/* update the SystemCoreClock with current core clock retrieved from cpu registers */
-extern void SystemCoreClockUpdate (void);
-
-#ifdef __FIRMWARE_VERSION_DEFINE
-/* get firmware version */
-extern uint32_t gd32e23x_firmware_version_get(void);
-#endif /* __FIRMWARE_VERSION_DEFINE */
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* SYSTEM_GD32E23X_H */
+/*!
+ \file system_gd32e23x.h
+ \brief CMSIS Cortex-M23 Device Peripheral Access Layer Header File for
+ GD32E23x Device Series
+*/
+
+/* Copyright (c) 2012 ARM LIMITED
+ Copyright (c) 2025, GigaDevice Semiconductor Inc.
+
+ All rights reserved.
+ Redistribution and use in source and binary forms, with or without
+ modification, are permitted provided that the following conditions are met:
+ - Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+ - Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+ - Neither the name of ARM nor the names of its contributors may be used
+ to endorse or promote products derived from this software without
+ specific prior written permission.
+ *
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+ AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+ LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+ POSSIBILITY OF SUCH DAMAGE.
+ ---------------------------------------------------------------------------*/
+
+/* This file refers the CMSIS standard, some adjustments are made according to GigaDevice chips */
+
+#ifndef SYSTEM_GD32E23X_H
+#define SYSTEM_GD32E23X_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include
+
+/* firmware version can be acquired by uncommenting the macro */
+#define __FIRMWARE_VERSION_DEFINE
+
+/* system clock frequency (core clock) */
+extern uint32_t SystemCoreClock;
+
+/* function declarations */
+/* initialize the system and update the SystemCoreClock variable */
+extern void SystemInit (void);
+/* update the SystemCoreClock with current core clock retrieved from cpu registers */
+extern void SystemCoreClockUpdate (void);
+
+#ifdef __FIRMWARE_VERSION_DEFINE
+/* get firmware version */
+extern uint32_t gd32e23x_firmware_version_get(void);
+#endif /* __FIRMWARE_VERSION_DEFINE */
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* SYSTEM_GD32E23X_H */
diff --git a/SDK/CMSIS/GD/GD32E23x/Source/ARM/startup_gd32e23x.s b/SDK/CMSIS/GD/GD32E23x/Source/ARM/startup_gd32e23x.s
index d97361e..4b37ab0 100644
--- a/SDK/CMSIS/GD/GD32E23x/Source/ARM/startup_gd32e23x.s
+++ b/SDK/CMSIS/GD/GD32E23x/Source/ARM/startup_gd32e23x.s
@@ -1,270 +1,270 @@
-;/*!
-; \file startup_gd32e23x.s
-; \brief start up file
-;
-; \version 2025-02-10, V2.3.0, firmware for GD32E23x
-;*/
-
-;/* Copyright (c) 2012 ARM LIMITED
-; Copyright (c) 2025, GigaDevice Semiconductor Inc.
-;
-; All rights reserved.
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions are met:
-; - Redistributions of source code must retain the above copyright
-; notice, this list of conditions and the following disclaimer.
-; - Redistributions in binary form must reproduce the above copyright
-; notice, this list of conditions and the following disclaimer in the
-; documentation and/or other materials provided with the distribution.
-; - Neither the name of ARM nor the names of its contributors may be used
-; to endorse or promote products derived from this software without
-; specific prior written permission.
-; *
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
-; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-;*/
-;/* This file refers the CMSIS standard, some adjustments are made according to GigaDevice chips */
-
-; Stack Configuration
-; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
-;
-
-Stack_Size EQU 0x00000400
-
- AREA STACK, NOINIT, READWRITE, ALIGN=3
-Stack_Mem SPACE Stack_Size
-__initial_sp
-
-
-; Heap Configuration
-; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
-;
-
-Heap_Size EQU 0x00000400
-
- AREA HEAP, NOINIT, READWRITE, ALIGN=3
-__heap_base
-Heap_Mem SPACE Heap_Size
-__heap_limit
-
- PRESERVE8
- THUMB
-
-; /* reset Vector Mapped to at Address 0 */
- AREA RESET, DATA, READONLY
- EXPORT __Vectors
- EXPORT __Vectors_End
- EXPORT __Vectors_Size
-
-__Vectors DCD __initial_sp ; Top of Stack
- DCD Reset_Handler ; Reset Handler
- DCD NMI_Handler ; NMI Handler
- DCD HardFault_Handler ; Hard Fault Handler
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD SVC_Handler ; SVCall Handler
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD PendSV_Handler ; PendSV Handler
- DCD SysTick_Handler ; SysTick Handler
-
-; /* external interrupts handler */
- DCD WWDGT_IRQHandler ; 16:Window Watchdog Timer
- DCD LVD_IRQHandler ; 17:LVD through EXTI Line detect
- DCD RTC_IRQHandler ; 18:RTC through EXTI Line
- DCD FMC_IRQHandler ; 19:FMC
- DCD RCU_IRQHandler ; 20:RCU
- DCD EXTI0_1_IRQHandler ; 21:EXTI Line 0 and EXTI Line 1
- DCD EXTI2_3_IRQHandler ; 22:EXTI Line 2 and EXTI Line 3
- DCD EXTI4_15_IRQHandler ; 23:EXTI Line 4 to EXTI Line 15
- DCD 0 ; Reserved
- DCD DMA_Channel0_IRQHandler ; 25:DMA Channel 0
- DCD DMA_Channel1_2_IRQHandler ; 26:DMA Channel 1 and DMA Channel 2
- DCD DMA_Channel3_4_IRQHandler ; 27:DMA Channel 3 and DMA Channel 4
- DCD ADC_CMP_IRQHandler ; 28:ADC and Comparator
- DCD TIMER0_BRK_UP_TRG_COM_IRQHandler ; 29:TIMER0 Break,Update,Trigger and Commutation
- DCD TIMER0_Channel_IRQHandler ; 30:TIMER0 Channel Capture Compare
- DCD 0 ; Reserved
- DCD TIMER2_IRQHandler ; 32:TIMER2
- DCD TIMER5_IRQHandler ; 33:TIMER5
- DCD 0 ; Reserved
- DCD TIMER13_IRQHandler ; 35:TIMER13
- DCD TIMER14_IRQHandler ; 36:TIMER14
- DCD TIMER15_IRQHandler ; 37:TIMER15
- DCD TIMER16_IRQHandler ; 38:TIMER16
- DCD I2C0_EV_IRQHandler ; 39:I2C0 Event
- DCD I2C1_EV_IRQHandler ; 40:I2C1 Event
- DCD SPI0_IRQHandler ; 41:SPI0
- DCD SPI1_IRQHandler ; 42:SPI1
- DCD USART0_IRQHandler ; 43:USART0
- DCD USART1_IRQHandler ; 44:USART1
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD I2C0_ER_IRQHandler ; 48:I2C0 Error
- DCD 0 ; Reserved
- DCD I2C1_ER_IRQHandler ; 50:I2C1 Error
-__Vectors_End
-
-__Vectors_Size EQU __Vectors_End - __Vectors
-
- AREA |.text|, CODE, READONLY
-
-;/* reset Handler */
-Reset_Handler PROC
- EXPORT Reset_Handler [WEAK]
- IMPORT SystemInit
- IMPORT __main
-
- LDR R0, =0x1FFFF7E0
- LDR R2, [R0]
- LDR R0, = 0xFFFF0000
- ANDS R2, R2, R0
- LSRS R2, R2, #16
- LSLS R2, R2, #10
- LDR R1, =0x20000000
- MOV R0, #0x00
-SRAM_INIT STM R1!, {R0}
- SUBS R2, R2, #4
- CMP R2, #0x00
- BNE SRAM_INIT
-
- LDR R0, =SystemInit
- BLX R0
- LDR R0, =__main
- BX R0
- ENDP
-
-;/* dummy Exception Handlers */
-NMI_Handler\
- PROC
- EXPORT NMI_Handler [WEAK]
- B .
- ENDP
-HardFault_Handler\
- PROC
- EXPORT HardFault_Handler [WEAK]
- B .
- ENDP
-SVC_Handler\
- PROC
- EXPORT SVC_Handler [WEAK]
- B .
- ENDP
-PendSV_Handler\
- PROC
- EXPORT PendSV_Handler [WEAK]
- B .
- ENDP
-SysTick_Handler\
- PROC
- EXPORT SysTick_Handler [WEAK]
- B .
- ENDP
-
-Default_Handler PROC
-; /* external interrupts handler */
- EXPORT WWDGT_IRQHandler [WEAK]
- EXPORT LVD_IRQHandler [WEAK]
- EXPORT RTC_IRQHandler [WEAK]
- EXPORT FMC_IRQHandler [WEAK]
- EXPORT RCU_IRQHandler [WEAK]
- EXPORT EXTI0_1_IRQHandler [WEAK]
- EXPORT EXTI2_3_IRQHandler [WEAK]
- EXPORT EXTI4_15_IRQHandler [WEAK]
- EXPORT DMA_Channel0_IRQHandler [WEAK]
- EXPORT DMA_Channel1_2_IRQHandler [WEAK]
- EXPORT DMA_Channel3_4_IRQHandler [WEAK]
- EXPORT ADC_CMP_IRQHandler [WEAK]
- EXPORT TIMER0_BRK_UP_TRG_COM_IRQHandler [WEAK]
- EXPORT TIMER0_Channel_IRQHandler [WEAK]
- EXPORT TIMER2_IRQHandler [WEAK]
- EXPORT TIMER5_IRQHandler [WEAK]
- EXPORT TIMER13_IRQHandler [WEAK]
- EXPORT TIMER14_IRQHandler [WEAK]
- EXPORT TIMER15_IRQHandler [WEAK]
- EXPORT TIMER16_IRQHandler [WEAK]
- EXPORT I2C0_EV_IRQHandler [WEAK]
- EXPORT I2C1_EV_IRQHandler [WEAK]
- EXPORT SPI0_IRQHandler [WEAK]
- EXPORT SPI1_IRQHandler [WEAK]
- EXPORT USART0_IRQHandler [WEAK]
- EXPORT USART1_IRQHandler [WEAK]
- EXPORT I2C0_ER_IRQHandler [WEAK]
- EXPORT I2C1_ER_IRQHandler [WEAK]
-
-;/* external interrupts handler */
-WWDGT_IRQHandler
-LVD_IRQHandler
-RTC_IRQHandler
-FMC_IRQHandler
-RCU_IRQHandler
-EXTI0_1_IRQHandler
-EXTI2_3_IRQHandler
-EXTI4_15_IRQHandler
-DMA_Channel0_IRQHandler
-DMA_Channel1_2_IRQHandler
-DMA_Channel3_4_IRQHandler
-ADC_CMP_IRQHandler
-TIMER0_BRK_UP_TRG_COM_IRQHandler
-TIMER0_Channel_IRQHandler
-TIMER2_IRQHandler
-TIMER5_IRQHandler
-TIMER13_IRQHandler
-TIMER14_IRQHandler
-TIMER15_IRQHandler
-TIMER16_IRQHandler
-I2C0_EV_IRQHandler
-I2C1_EV_IRQHandler
-SPI0_IRQHandler
-SPI1_IRQHandler
-USART0_IRQHandler
-USART1_IRQHandler
-I2C0_ER_IRQHandler
-I2C1_ER_IRQHandler
-
- B .
- ENDP
-
- ALIGN
-
-; user Initial Stack & Heap
-
- IF :DEF:__MICROLIB
-
- EXPORT __initial_sp
- EXPORT __heap_base
- EXPORT __heap_limit
-
- ELSE
-
- IMPORT __use_two_region_memory
- EXPORT __user_initial_stackheap
-
-__user_initial_stackheap PROC
- LDR R0, = Heap_Mem
- LDR R1, =(Stack_Mem + Stack_Size)
- LDR R2, = (Heap_Mem + Heap_Size)
- LDR R3, = Stack_Mem
- BX LR
- ENDP
-
- ALIGN
-
- ENDIF
-
- END
+;/*!
+; \file startup_gd32e23x.s
+; \brief start up file
+;
+; \version 2025-02-10, V2.3.0, firmware for GD32E23x
+;*/
+
+;/* Copyright (c) 2012 ARM LIMITED
+; Copyright (c) 2025, GigaDevice Semiconductor Inc.
+;
+; All rights reserved.
+; Redistribution and use in source and binary forms, with or without
+; modification, are permitted provided that the following conditions are met:
+; - Redistributions of source code must retain the above copyright
+; notice, this list of conditions and the following disclaimer.
+; - Redistributions in binary form must reproduce the above copyright
+; notice, this list of conditions and the following disclaimer in the
+; documentation and/or other materials provided with the distribution.
+; - Neither the name of ARM nor the names of its contributors may be used
+; to endorse or promote products derived from this software without
+; specific prior written permission.
+; *
+; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+; ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+; POSSIBILITY OF SUCH DAMAGE.
+;*/
+;/* This file refers the CMSIS standard, some adjustments are made according to GigaDevice chips */
+
+; Stack Configuration
+; Stack Size (in Bytes) <0x0-0xFFFFFFFF:8>
+;
+
+Stack_Size EQU 0x00000400
+
+ AREA STACK, NOINIT, READWRITE, ALIGN=3
+Stack_Mem SPACE Stack_Size
+__initial_sp
+
+
+; Heap Configuration
+; Heap Size (in Bytes) <0x0-0xFFFFFFFF:8>
+;
+
+Heap_Size EQU 0x00000400
+
+ AREA HEAP, NOINIT, READWRITE, ALIGN=3
+__heap_base
+Heap_Mem SPACE Heap_Size
+__heap_limit
+
+ PRESERVE8
+ THUMB
+
+; /* reset Vector Mapped to at Address 0 */
+ AREA RESET, DATA, READONLY
+ EXPORT __Vectors
+ EXPORT __Vectors_End
+ EXPORT __Vectors_Size
+
+__Vectors DCD __initial_sp ; Top of Stack
+ DCD Reset_Handler ; Reset Handler
+ DCD NMI_Handler ; NMI Handler
+ DCD HardFault_Handler ; Hard Fault Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SVC_Handler ; SVCall Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD PendSV_Handler ; PendSV Handler
+ DCD SysTick_Handler ; SysTick Handler
+
+; /* external interrupts handler */
+ DCD WWDGT_IRQHandler ; 16:Window Watchdog Timer
+ DCD LVD_IRQHandler ; 17:LVD through EXTI Line detect
+ DCD RTC_IRQHandler ; 18:RTC through EXTI Line
+ DCD FMC_IRQHandler ; 19:FMC
+ DCD RCU_IRQHandler ; 20:RCU
+ DCD EXTI0_1_IRQHandler ; 21:EXTI Line 0 and EXTI Line 1
+ DCD EXTI2_3_IRQHandler ; 22:EXTI Line 2 and EXTI Line 3
+ DCD EXTI4_15_IRQHandler ; 23:EXTI Line 4 to EXTI Line 15
+ DCD 0 ; Reserved
+ DCD DMA_Channel0_IRQHandler ; 25:DMA Channel 0
+ DCD DMA_Channel1_2_IRQHandler ; 26:DMA Channel 1 and DMA Channel 2
+ DCD DMA_Channel3_4_IRQHandler ; 27:DMA Channel 3 and DMA Channel 4
+ DCD ADC_CMP_IRQHandler ; 28:ADC and Comparator
+ DCD TIMER0_BRK_UP_TRG_COM_IRQHandler ; 29:TIMER0 Break,Update,Trigger and Commutation
+ DCD TIMER0_Channel_IRQHandler ; 30:TIMER0 Channel Capture Compare
+ DCD 0 ; Reserved
+ DCD TIMER2_IRQHandler ; 32:TIMER2
+ DCD TIMER5_IRQHandler ; 33:TIMER5
+ DCD 0 ; Reserved
+ DCD TIMER13_IRQHandler ; 35:TIMER13
+ DCD TIMER14_IRQHandler ; 36:TIMER14
+ DCD TIMER15_IRQHandler ; 37:TIMER15
+ DCD TIMER16_IRQHandler ; 38:TIMER16
+ DCD I2C0_EV_IRQHandler ; 39:I2C0 Event
+ DCD I2C1_EV_IRQHandler ; 40:I2C1 Event
+ DCD SPI0_IRQHandler ; 41:SPI0
+ DCD SPI1_IRQHandler ; 42:SPI1
+ DCD USART0_IRQHandler ; 43:USART0
+ DCD USART1_IRQHandler ; 44:USART1
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD I2C0_ER_IRQHandler ; 48:I2C0 Error
+ DCD 0 ; Reserved
+ DCD I2C1_ER_IRQHandler ; 50:I2C1 Error
+__Vectors_End
+
+__Vectors_Size EQU __Vectors_End - __Vectors
+
+ AREA |.text|, CODE, READONLY
+
+;/* reset Handler */
+Reset_Handler PROC
+ EXPORT Reset_Handler [WEAK]
+ IMPORT SystemInit
+ IMPORT __main
+
+ LDR R0, =0x1FFFF7E0
+ LDR R2, [R0]
+ LDR R0, = 0xFFFF0000
+ ANDS R2, R2, R0
+ LSRS R2, R2, #16
+ LSLS R2, R2, #10
+ LDR R1, =0x20000000
+ MOV R0, #0x00
+SRAM_INIT STM R1!, {R0}
+ SUBS R2, R2, #4
+ CMP R2, #0x00
+ BNE SRAM_INIT
+
+ LDR R0, =SystemInit
+ BLX R0
+ LDR R0, =__main
+ BX R0
+ ENDP
+
+;/* dummy Exception Handlers */
+NMI_Handler\
+ PROC
+ EXPORT NMI_Handler [WEAK]
+ B .
+ ENDP
+HardFault_Handler\
+ PROC
+ EXPORT HardFault_Handler [WEAK]
+ B .
+ ENDP
+SVC_Handler\
+ PROC
+ EXPORT SVC_Handler [WEAK]
+ B .
+ ENDP
+PendSV_Handler\
+ PROC
+ EXPORT PendSV_Handler [WEAK]
+ B .
+ ENDP
+SysTick_Handler\
+ PROC
+ EXPORT SysTick_Handler [WEAK]
+ B .
+ ENDP
+
+Default_Handler PROC
+; /* external interrupts handler */
+ EXPORT WWDGT_IRQHandler [WEAK]
+ EXPORT LVD_IRQHandler [WEAK]
+ EXPORT RTC_IRQHandler [WEAK]
+ EXPORT FMC_IRQHandler [WEAK]
+ EXPORT RCU_IRQHandler [WEAK]
+ EXPORT EXTI0_1_IRQHandler [WEAK]
+ EXPORT EXTI2_3_IRQHandler [WEAK]
+ EXPORT EXTI4_15_IRQHandler [WEAK]
+ EXPORT DMA_Channel0_IRQHandler [WEAK]
+ EXPORT DMA_Channel1_2_IRQHandler [WEAK]
+ EXPORT DMA_Channel3_4_IRQHandler [WEAK]
+ EXPORT ADC_CMP_IRQHandler [WEAK]
+ EXPORT TIMER0_BRK_UP_TRG_COM_IRQHandler [WEAK]
+ EXPORT TIMER0_Channel_IRQHandler [WEAK]
+ EXPORT TIMER2_IRQHandler [WEAK]
+ EXPORT TIMER5_IRQHandler [WEAK]
+ EXPORT TIMER13_IRQHandler [WEAK]
+ EXPORT TIMER14_IRQHandler [WEAK]
+ EXPORT TIMER15_IRQHandler [WEAK]
+ EXPORT TIMER16_IRQHandler [WEAK]
+ EXPORT I2C0_EV_IRQHandler [WEAK]
+ EXPORT I2C1_EV_IRQHandler [WEAK]
+ EXPORT SPI0_IRQHandler [WEAK]
+ EXPORT SPI1_IRQHandler [WEAK]
+ EXPORT USART0_IRQHandler [WEAK]
+ EXPORT USART1_IRQHandler [WEAK]
+ EXPORT I2C0_ER_IRQHandler [WEAK]
+ EXPORT I2C1_ER_IRQHandler [WEAK]
+
+;/* external interrupts handler */
+WWDGT_IRQHandler
+LVD_IRQHandler
+RTC_IRQHandler
+FMC_IRQHandler
+RCU_IRQHandler
+EXTI0_1_IRQHandler
+EXTI2_3_IRQHandler
+EXTI4_15_IRQHandler
+DMA_Channel0_IRQHandler
+DMA_Channel1_2_IRQHandler
+DMA_Channel3_4_IRQHandler
+ADC_CMP_IRQHandler
+TIMER0_BRK_UP_TRG_COM_IRQHandler
+TIMER0_Channel_IRQHandler
+TIMER2_IRQHandler
+TIMER5_IRQHandler
+TIMER13_IRQHandler
+TIMER14_IRQHandler
+TIMER15_IRQHandler
+TIMER16_IRQHandler
+I2C0_EV_IRQHandler
+I2C1_EV_IRQHandler
+SPI0_IRQHandler
+SPI1_IRQHandler
+USART0_IRQHandler
+USART1_IRQHandler
+I2C0_ER_IRQHandler
+I2C1_ER_IRQHandler
+
+ B .
+ ENDP
+
+ ALIGN
+
+; user Initial Stack & Heap
+
+ IF :DEF:__MICROLIB
+
+ EXPORT __initial_sp
+ EXPORT __heap_base
+ EXPORT __heap_limit
+
+ ELSE
+
+ IMPORT __use_two_region_memory
+ EXPORT __user_initial_stackheap
+
+__user_initial_stackheap PROC
+ LDR R0, = Heap_Mem
+ LDR R1, =(Stack_Mem + Stack_Size)
+ LDR R2, = (Heap_Mem + Heap_Size)
+ LDR R3, = Stack_Mem
+ BX LR
+ ENDP
+
+ ALIGN
+
+ ENDIF
+
+ END
diff --git a/SDK/CMSIS/GD/GD32E23x/Source/IAR/startup_gd32e23x.s b/SDK/CMSIS/GD/GD32E23x/Source/IAR/startup_gd32e23x.s
index f730531..44feef5 100644
--- a/SDK/CMSIS/GD/GD32E23x/Source/IAR/startup_gd32e23x.s
+++ b/SDK/CMSIS/GD/GD32E23x/Source/IAR/startup_gd32e23x.s
@@ -1,296 +1,296 @@
-;/*!
-; \file startup_gd32e23x.s
-; \brief start up file
-;
-; \version 2025-02-10, V2.3.0, firmware for GD32E23x
-;*/
-
-;/* Copyright (c) 2012 ARM LIMITED
-; Copyright (c) 2025, GigaDevice Semiconductor Inc.
-;
-; All rights reserved.
-; Redistribution and use in source and binary forms, with or without
-; modification, are permitted provided that the following conditions are met:
-; - Redistributions of source code must retain the above copyright
-; notice, this list of conditions and the following disclaimer.
-; - Redistributions in binary form must reproduce the above copyright
-; notice, this list of conditions and the following disclaimer in the
-; documentation and/or other materials provided with the distribution.
-; - Neither the name of ARM nor the names of its contributors may be used
-; to endorse or promote products derived from this software without
-; specific prior written permission.
-; *
-; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-; ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
-; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
-; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
-; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
-; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
-; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
-; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-; POSSIBILITY OF SUCH DAMAGE.
-;*/
-;/* This file refers the CMSIS standard, some adjustments are made according to GigaDevice chips */
-
- MODULE ?cstartup
-
- ;; Forward declaration of sections.
- SECTION CSTACK:DATA:NOROOT(3)
-
- SECTION .intvec:CODE:NOROOT(2)
-
- EXTERN __iar_program_start
- EXTERN SystemInit
- PUBLIC __vector_table
-
- DATA
-__vector_table
- DCD sfe(CSTACK) ; top of stack
- DCD Reset_Handler ; Vector Number 1,Reset Handler
-
- DCD NMI_Handler ; Vector Number 2,NMI Handler
- DCD HardFault_Handler ; Vector Number 3,Hard Fault Handler
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD SVC_Handler ; Vector Number 11,SVCall Handler
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD PendSV_Handler ; Vector Number 14,PendSV Handler
- DCD SysTick_Handler ; Vector Number 15,SysTick Handler
-
- ; External Interrupts
- DCD WWDGT_IRQHandler ; 16:Window Watchdog Timer
- DCD LVD_IRQHandler ; 17:LVD through EXTI Line detect
- DCD RTC_IRQHandler ; 18:RTC through EXTI Line
- DCD FMC_IRQHandler ; 19:FMC
- DCD RCU_IRQHandler ; 20:RCU
- DCD EXTI0_1_IRQHandler ; 21:EXTI Line 0 and EXTI Line 1
- DCD EXTI2_3_IRQHandler ; 22:EXTI Line 2 and EXTI Line 3
- DCD EXTI4_15_IRQHandler ; 23:EXTI Line 4 to EXTI Line 15
- DCD 0 ; Reserved
- DCD DMA_Channel0_IRQHandler ; 25:DMA Channel 0
- DCD DMA_Channel1_2_IRQHandler ; 26:DMA Channel 1 and DMA Channel 2
- DCD DMA_Channel3_4_IRQHandler ; 27:DMA Channel 3 and DMA Channel 4
- DCD ADC_CMP_IRQHandler ; 28:ADC and Comparator
- DCD TIMER0_BRK_UP_TRG_COM_IRQHandler ; 29:TIMER0 Break,Update,Trigger and Commutation
- DCD TIMER0_Channel_IRQHandler ; 30:TIMER0 Channel Capture Compare
- DCD 0 ; Reserved
- DCD TIMER2_IRQHandler ; 32:TIMER2
- DCD TIMER5_IRQHandler ; 33:TIMER5
- DCD 0 ; Reserved
- DCD TIMER13_IRQHandler ; 35:TIMER13
- DCD TIMER14_IRQHandler ; 36:TIMER14
- DCD TIMER15_IRQHandler ; 37:TIMER15
- DCD TIMER16_IRQHandler ; 38:TIMER16
- DCD I2C0_EV_IRQHandler ; 39:I2C0 Event
- DCD I2C1_EV_IRQHandler ; 40:I2C1 Event
- DCD SPI0_IRQHandler ; 41:SPI0
- DCD SPI1_IRQHandler ; 42:SPI1
- DCD USART0_IRQHandler ; 43:USART0
- DCD USART1_IRQHandler ; 44:USART1
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD 0 ; Reserved
- DCD I2C0_ER_IRQHandler ; 48:I2C0 Error
- DCD 0 ; Reserved
- DCD I2C1_ER_IRQHandler ; 50:I2C1 Error
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;
-;; Default interrupt handlers.
-;;
- THUMB
-
- PUBWEAK Reset_Handler
- SECTION .text:CODE:NOROOT:REORDER(2)
-Reset_Handler
- LDR R0, =0x1FFFF7E0
- LDR R2, [R0]
- LDR R0, = 0xFFFF0000
- ANDS R2, R2, R0
- LSRS R2, R2, #16
- LSLS R2, R2, #10
- LDR R1, =0x20000000
- MOV R0, #0x00
-SRAM_INIT STM R1!, {R0}
- SUBS R2, R2, #4
- CMP R2, #0x00
- BNE SRAM_INIT
-
- LDR R0, =SystemInit
- BLX R0
- LDR R0, =__iar_program_start
- BX R0
-
- PUBWEAK NMI_Handler
- SECTION .text:CODE:NOROOT:REORDER(1)
-NMI_Handler
- B NMI_Handler
-
- PUBWEAK HardFault_Handler
- SECTION .text:CODE:NOROOT:REORDER(1)
-HardFault_Handler
- B HardFault_Handler
-
- PUBWEAK SVC_Handler
- SECTION .text:CODE:NOROOT:REORDER(1)
-SVC_Handler
- B SVC_Handler
-
- PUBWEAK PendSV_Handler
- SECTION .text:CODE:NOROOT:REORDER(1)
-PendSV_Handler
- B PendSV_Handler
-
- PUBWEAK SysTick_Handler
- SECTION .text:CODE:NOROOT:REORDER(1)
-SysTick_Handler
- B SysTick_Handler
-
- PUBWEAK WWDGT_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-WWDGT_IRQHandler
- B WWDGT_IRQHandler
-
- PUBWEAK LVD_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-LVD_IRQHandler
- B LVD_IRQHandler
-
- PUBWEAK RTC_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-RTC_IRQHandler
- B RTC_IRQHandler
-
- PUBWEAK FMC_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-FMC_IRQHandler
- B FMC_IRQHandler
-
- PUBWEAK RCU_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-RCU_IRQHandler
- B RCU_IRQHandler
-
- PUBWEAK EXTI0_1_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI0_1_IRQHandler
- B EXTI0_1_IRQHandler
-
- PUBWEAK EXTI2_3_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI2_3_IRQHandler
- B EXTI2_3_IRQHandler
-
- PUBWEAK EXTI4_15_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-EXTI4_15_IRQHandler
- B EXTI4_15_IRQHandler
-
- PUBWEAK DMA_Channel0_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-DMA_Channel0_IRQHandler
- B DMA_Channel0_IRQHandler
-
- PUBWEAK DMA_Channel1_2_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-DMA_Channel1_2_IRQHandler
- B DMA_Channel1_2_IRQHandler
-
- PUBWEAK DMA_Channel3_4_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-DMA_Channel3_4_IRQHandler
- B DMA_Channel3_4_IRQHandler
-
- PUBWEAK ADC_CMP_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-ADC_CMP_IRQHandler
- B ADC_CMP_IRQHandler
-
- PUBWEAK TIMER0_BRK_UP_TRG_COM_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-TIMER0_BRK_UP_TRG_COM_IRQHandler
- B TIMER0_BRK_UP_TRG_COM_IRQHandler
-
- PUBWEAK TIMER0_Channel_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-TIMER0_Channel_IRQHandler
- B TIMER0_Channel_IRQHandler
-
- PUBWEAK TIMER2_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-TIMER2_IRQHandler
- B TIMER2_IRQHandler
-
- PUBWEAK TIMER5_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-TIMER5_IRQHandler
- B TIMER5_IRQHandler
-
- PUBWEAK TIMER13_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-TIMER13_IRQHandler
- B TIMER13_IRQHandler
-
- PUBWEAK TIMER14_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-TIMER14_IRQHandler
- B TIMER14_IRQHandler
-
- PUBWEAK TIMER15_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-TIMER15_IRQHandler
- B TIMER15_IRQHandler
-
- PUBWEAK TIMER16_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-TIMER16_IRQHandler
- B TIMER16_IRQHandler
-
- PUBWEAK I2C0_EV_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-I2C0_EV_IRQHandler
- B I2C0_EV_IRQHandler
-
- PUBWEAK I2C1_EV_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-I2C1_EV_IRQHandler
- B I2C1_EV_IRQHandler
-
- PUBWEAK SPI0_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-SPI0_IRQHandler
- B SPI0_IRQHandler
-
- PUBWEAK SPI1_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-SPI1_IRQHandler
- B SPI1_IRQHandler
-
- PUBWEAK USART0_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-USART0_IRQHandler
- B USART0_IRQHandler
-
- PUBWEAK USART1_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-USART1_IRQHandler
- B USART1_IRQHandler
-
- PUBWEAK I2C0_ER_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-I2C0_ER_IRQHandler
- B I2C0_ER_IRQHandler
-
- PUBWEAK I2C1_ER_IRQHandler
- SECTION .text:CODE:NOROOT:REORDER(1)
-I2C1_ER_IRQHandler
- B I2C1_ER_IRQHandler
+;/*!
+; \file startup_gd32e23x.s
+; \brief start up file
+;
+; \version 2025-02-10, V2.3.0, firmware for GD32E23x
+;*/
+
+;/* Copyright (c) 2012 ARM LIMITED
+; Copyright (c) 2025, GigaDevice Semiconductor Inc.
+;
+; All rights reserved.
+; Redistribution and use in source and binary forms, with or without
+; modification, are permitted provided that the following conditions are met:
+; - Redistributions of source code must retain the above copyright
+; notice, this list of conditions and the following disclaimer.
+; - Redistributions in binary form must reproduce the above copyright
+; notice, this list of conditions and the following disclaimer in the
+; documentation and/or other materials provided with the distribution.
+; - Neither the name of ARM nor the names of its contributors may be used
+; to endorse or promote products derived from this software without
+; specific prior written permission.
+; *
+; THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+; AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+; IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+; ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
+; LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+; CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+; SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+; INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+; CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+; ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+; POSSIBILITY OF SUCH DAMAGE.
+;*/
+;/* This file refers the CMSIS standard, some adjustments are made according to GigaDevice chips */
+
+ MODULE ?cstartup
+
+ ;; Forward declaration of sections.
+ SECTION CSTACK:DATA:NOROOT(3)
+
+ SECTION .intvec:CODE:NOROOT(2)
+
+ EXTERN __iar_program_start
+ EXTERN SystemInit
+ PUBLIC __vector_table
+
+ DATA
+__vector_table
+ DCD sfe(CSTACK) ; top of stack
+ DCD Reset_Handler ; Vector Number 1,Reset Handler
+
+ DCD NMI_Handler ; Vector Number 2,NMI Handler
+ DCD HardFault_Handler ; Vector Number 3,Hard Fault Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD SVC_Handler ; Vector Number 11,SVCall Handler
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD PendSV_Handler ; Vector Number 14,PendSV Handler
+ DCD SysTick_Handler ; Vector Number 15,SysTick Handler
+
+ ; External Interrupts
+ DCD WWDGT_IRQHandler ; 16:Window Watchdog Timer
+ DCD LVD_IRQHandler ; 17:LVD through EXTI Line detect
+ DCD RTC_IRQHandler ; 18:RTC through EXTI Line
+ DCD FMC_IRQHandler ; 19:FMC
+ DCD RCU_IRQHandler ; 20:RCU
+ DCD EXTI0_1_IRQHandler ; 21:EXTI Line 0 and EXTI Line 1
+ DCD EXTI2_3_IRQHandler ; 22:EXTI Line 2 and EXTI Line 3
+ DCD EXTI4_15_IRQHandler ; 23:EXTI Line 4 to EXTI Line 15
+ DCD 0 ; Reserved
+ DCD DMA_Channel0_IRQHandler ; 25:DMA Channel 0
+ DCD DMA_Channel1_2_IRQHandler ; 26:DMA Channel 1 and DMA Channel 2
+ DCD DMA_Channel3_4_IRQHandler ; 27:DMA Channel 3 and DMA Channel 4
+ DCD ADC_CMP_IRQHandler ; 28:ADC and Comparator
+ DCD TIMER0_BRK_UP_TRG_COM_IRQHandler ; 29:TIMER0 Break,Update,Trigger and Commutation
+ DCD TIMER0_Channel_IRQHandler ; 30:TIMER0 Channel Capture Compare
+ DCD 0 ; Reserved
+ DCD TIMER2_IRQHandler ; 32:TIMER2
+ DCD TIMER5_IRQHandler ; 33:TIMER5
+ DCD 0 ; Reserved
+ DCD TIMER13_IRQHandler ; 35:TIMER13
+ DCD TIMER14_IRQHandler ; 36:TIMER14
+ DCD TIMER15_IRQHandler ; 37:TIMER15
+ DCD TIMER16_IRQHandler ; 38:TIMER16
+ DCD I2C0_EV_IRQHandler ; 39:I2C0 Event
+ DCD I2C1_EV_IRQHandler ; 40:I2C1 Event
+ DCD SPI0_IRQHandler ; 41:SPI0
+ DCD SPI1_IRQHandler ; 42:SPI1
+ DCD USART0_IRQHandler ; 43:USART0
+ DCD USART1_IRQHandler ; 44:USART1
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD 0 ; Reserved
+ DCD I2C0_ER_IRQHandler ; 48:I2C0 Error
+ DCD 0 ; Reserved
+ DCD I2C1_ER_IRQHandler ; 50:I2C1 Error
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; Default interrupt handlers.
+;;
+ THUMB
+
+ PUBWEAK Reset_Handler
+ SECTION .text:CODE:NOROOT:REORDER(2)
+Reset_Handler
+ LDR R0, =0x1FFFF7E0
+ LDR R2, [R0]
+ LDR R0, = 0xFFFF0000
+ ANDS R2, R2, R0
+ LSRS R2, R2, #16
+ LSLS R2, R2, #10
+ LDR R1, =0x20000000
+ MOV R0, #0x00
+SRAM_INIT STM R1!, {R0}
+ SUBS R2, R2, #4
+ CMP R2, #0x00
+ BNE SRAM_INIT
+
+ LDR R0, =SystemInit
+ BLX R0
+ LDR R0, =__iar_program_start
+ BX R0
+
+ PUBWEAK NMI_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+NMI_Handler
+ B NMI_Handler
+
+ PUBWEAK HardFault_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+HardFault_Handler
+ B HardFault_Handler
+
+ PUBWEAK SVC_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SVC_Handler
+ B SVC_Handler
+
+ PUBWEAK PendSV_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+PendSV_Handler
+ B PendSV_Handler
+
+ PUBWEAK SysTick_Handler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SysTick_Handler
+ B SysTick_Handler
+
+ PUBWEAK WWDGT_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+WWDGT_IRQHandler
+ B WWDGT_IRQHandler
+
+ PUBWEAK LVD_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+LVD_IRQHandler
+ B LVD_IRQHandler
+
+ PUBWEAK RTC_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+RTC_IRQHandler
+ B RTC_IRQHandler
+
+ PUBWEAK FMC_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+FMC_IRQHandler
+ B FMC_IRQHandler
+
+ PUBWEAK RCU_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+RCU_IRQHandler
+ B RCU_IRQHandler
+
+ PUBWEAK EXTI0_1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI0_1_IRQHandler
+ B EXTI0_1_IRQHandler
+
+ PUBWEAK EXTI2_3_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI2_3_IRQHandler
+ B EXTI2_3_IRQHandler
+
+ PUBWEAK EXTI4_15_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+EXTI4_15_IRQHandler
+ B EXTI4_15_IRQHandler
+
+ PUBWEAK DMA_Channel0_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA_Channel0_IRQHandler
+ B DMA_Channel0_IRQHandler
+
+ PUBWEAK DMA_Channel1_2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA_Channel1_2_IRQHandler
+ B DMA_Channel1_2_IRQHandler
+
+ PUBWEAK DMA_Channel3_4_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+DMA_Channel3_4_IRQHandler
+ B DMA_Channel3_4_IRQHandler
+
+ PUBWEAK ADC_CMP_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+ADC_CMP_IRQHandler
+ B ADC_CMP_IRQHandler
+
+ PUBWEAK TIMER0_BRK_UP_TRG_COM_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIMER0_BRK_UP_TRG_COM_IRQHandler
+ B TIMER0_BRK_UP_TRG_COM_IRQHandler
+
+ PUBWEAK TIMER0_Channel_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIMER0_Channel_IRQHandler
+ B TIMER0_Channel_IRQHandler
+
+ PUBWEAK TIMER2_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIMER2_IRQHandler
+ B TIMER2_IRQHandler
+
+ PUBWEAK TIMER5_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIMER5_IRQHandler
+ B TIMER5_IRQHandler
+
+ PUBWEAK TIMER13_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIMER13_IRQHandler
+ B TIMER13_IRQHandler
+
+ PUBWEAK TIMER14_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIMER14_IRQHandler
+ B TIMER14_IRQHandler
+
+ PUBWEAK TIMER15_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIMER15_IRQHandler
+ B TIMER15_IRQHandler
+
+ PUBWEAK TIMER16_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+TIMER16_IRQHandler
+ B TIMER16_IRQHandler
+
+ PUBWEAK I2C0_EV_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C0_EV_IRQHandler
+ B I2C0_EV_IRQHandler
+
+ PUBWEAK I2C1_EV_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C1_EV_IRQHandler
+ B I2C1_EV_IRQHandler
+
+ PUBWEAK SPI0_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SPI0_IRQHandler
+ B SPI0_IRQHandler
+
+ PUBWEAK SPI1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+SPI1_IRQHandler
+ B SPI1_IRQHandler
+
+ PUBWEAK USART0_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+USART0_IRQHandler
+ B USART0_IRQHandler
+
+ PUBWEAK USART1_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+USART1_IRQHandler
+ B USART1_IRQHandler
+
+ PUBWEAK I2C0_ER_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C0_ER_IRQHandler
+ B I2C0_ER_IRQHandler
+
+ PUBWEAK I2C1_ER_IRQHandler
+ SECTION .text:CODE:NOROOT:REORDER(1)
+I2C1_ER_IRQHandler
+ B I2C1_ER_IRQHandler
END
\ No newline at end of file
diff --git a/SDK/CMSIS/GD/GD32E23x/Source/system_gd32e23x.c b/SDK/CMSIS/GD/GD32E23x/Source/system_gd32e23x.c
index ce5be24..5da19fa 100644
--- a/SDK/CMSIS/GD/GD32E23x/Source/system_gd32e23x.c
+++ b/SDK/CMSIS/GD/GD32E23x/Source/system_gd32e23x.c
@@ -1,451 +1,451 @@
-/*!
- \file system_gd32e23x.c
- \brief CMSIS Cortex-M23 Device Peripheral Access Layer Source File for
- GD32E23x Device Series
-*/
-
-/* Copyright (c) 2012 ARM LIMITED
- Copyright (c) 2025, GigaDevice Semiconductor Inc.
-
- All rights reserved.
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions are met:
- - Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- - Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- - Neither the name of ARM nor the names of its contributors may be used
- to endorse or promote products derived from this software without
- specific prior written permission.
- *
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
- AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- ARE DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDERS AND CONTRIBUTORS BE
- LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
- CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
- SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
- CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
- POSSIBILITY OF SUCH DAMAGE.
- ---------------------------------------------------------------------------*/
-
-/* This file refers the CMSIS standard, some adjustments are made according to GigaDevice chips */
-
-#include "gd32e23x.h"
-
-/* system frequency define */
-#define __IRC8M (IRC8M_VALUE) /* internal 8 MHz RC oscillator frequency */
-#define __HXTAL (HXTAL_VALUE) /* high speed crystal oscillator frequency */
-#define __SYS_OSC_CLK (__IRC8M) /* main oscillator frequency */
-
-#define VECT_TAB_OFFSET (uint32_t)0x00 /* vector table base offset */
-
-/* select a system clock by uncommenting the following line */
-//#define __SYSTEM_CLOCK_8M_HXTAL (__HXTAL)
-//#define __SYSTEM_CLOCK_8M_IRC8M (__IRC8M)
-#define __SYSTEM_CLOCK_72M_PLL_HXTAL (uint32_t)(72000000)
-//#define __SYSTEM_CLOCK_72M_PLL_IRC8M_DIV2 (uint32_t)(72000000)
-
-/* The following is to prevent Vcore fluctuations caused by frequency switching.
- It is strongly recommended to include it to avoid issues caused by self-removal.
-*/
-#define RCU_MODIFY(__delay) do{ \
- volatile uint32_t i,reg; \
- if(0 != __delay){ \
- reg = RCU_CFG0; \
- reg &= ~(RCU_CFG0_AHBPSC); \
- /* CK_AHB = SYSCLK/2 */ \
- reg |= RCU_AHB_CKSYS_DIV2; \
- RCU_CFG0 = reg; \
- for(i=0; i<__delay; i++){ \
- } \
- reg = RCU_CFG0; \
- reg &= ~(RCU_CFG0_AHBPSC); \
- reg |= RCU_AHB_CKSYS_DIV4; \
- /* CK_AHB = SYSCLK/4 */ \
- RCU_CFG0 = reg; \
- for(i=0; i<__delay; i++){ \
- } \
- } \
- }while(0)
-
-#define SEL_IRC8M 0x00
-#define SEL_HXTAL 0x01
-#define SEL_PLL 0x02
-
-/* set the system clock frequency and declare the system clock configuration function */
-#ifdef __SYSTEM_CLOCK_8M_HXTAL
-uint32_t SystemCoreClock = __SYSTEM_CLOCK_8M_HXTAL;
-static void system_clock_8m_hxtal(void);
-
-#elif defined (__SYSTEM_CLOCK_72M_PLL_HXTAL)
-uint32_t SystemCoreClock = __SYSTEM_CLOCK_72M_PLL_HXTAL;
-static void system_clock_72m_hxtal(void);
-
-#elif defined (__SYSTEM_CLOCK_72M_PLL_IRC8M_DIV2)
-uint32_t SystemCoreClock = __SYSTEM_CLOCK_72M_PLL_IRC8M_DIV2;
-static void system_clock_72m_irc8m(void);
-
-#else
-uint32_t SystemCoreClock = __SYSTEM_CLOCK_8M_IRC8M;
-static void system_clock_8m_irc8m(void);
-#endif /* __SYSTEM_CLOCK_8M_HXTAL */
-
-/* configure the system clock */
-static void system_clock_config(void);
-
-/* software delay to prevent the impact of Vcore fluctuations.
- It is strongly recommended to include it to avoid issues caused by self-removal. */
-static void _soft_delay_(uint32_t time)
-{
- __IO uint32_t i;
- for(i=0; i