fix:修改RS485通讯引脚

RS485通讯引脚改为串口2,引脚:RX:PB05 TX:PB04 RS485_DR:PB03
This commit is contained in:
caocong
2026-02-25 10:29:57 +08:00
commit 2815979c8a
77 changed files with 16491 additions and 0 deletions

View File

@@ -0,0 +1,73 @@
[{
"file": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\arch\\crt0.S",
"directory": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source",
"arguments": ["csky-elfabiv2-gcc", "-nostdlibinc", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/include/", "-ID:/C-Sky/CDK/CSKY/csi/csi_driver/include/", "-I.", "-ISYSTEM", "-ISYSTEM/inc", "-IUSRCTRL/inc", "-include", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache\\macro.h", "-DCONFIG_CKCPU_MMU=0", "-U__CSKY_ABIV2__", "-c", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\arch\\crt0.S", "-o", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\arch\\crt0.o"]
}, {
"file": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\arch\\mem_init.c",
"directory": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source",
"arguments": ["csky-elfabiv2-gcc", "-nostdlibinc", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/include/", "-ID:/C-Sky/CDK/CSKY/csi/csi_driver/include/", "-I.", "-ISYSTEM/inc", "-IUSRCTRL/inc", "-Iinclude", "-include", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache\\macro.h", "-DCONFIG_CSKY_MMU=0", "-U__CSKY_ABIV2__", "-c", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\arch\\mem_init.c", "-o", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\arch\\mem_init.o"]
}, {
"file": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\arch\\apt32f102_iostring.c",
"directory": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source",
"arguments": ["csky-elfabiv2-gcc", "-nostdlibinc", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/include/", "-ID:/C-Sky/CDK/CSKY/csi/csi_driver/include/", "-I.", "-ISYSTEM/inc", "-IUSRCTRL/inc", "-Iinclude", "-include", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache\\macro.h", "-DCONFIG_CSKY_MMU=0", "-U__CSKY_ABIV2__", "-c", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\arch\\apt32f102_iostring.c", "-o", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\arch\\apt32f102_iostring.o"]
}, {
"file": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_syscon.c",
"directory": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source",
"arguments": ["csky-elfabiv2-gcc", "-nostdlibinc", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/include/", "-ID:/C-Sky/CDK/CSKY/csi/csi_driver/include/", "-I.", "-ISYSTEM/inc", "-IUSRCTRL/inc", "-Iinclude", "-include", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache\\macro.h", "-DCONFIG_CSKY_MMU=0", "-U__CSKY_ABIV2__", "-c", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_syscon.c", "-o", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_syscon.o"]
}, {
"file": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_gpio.c",
"directory": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source",
"arguments": ["csky-elfabiv2-gcc", "-nostdlibinc", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/include/", "-ID:/C-Sky/CDK/CSKY/csi/csi_driver/include/", "-I.", "-ISYSTEM/inc", "-IUSRCTRL/inc", "-Iinclude", "-include", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache\\macro.h", "-DCONFIG_CSKY_MMU=0", "-U__CSKY_ABIV2__", "-c", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_gpio.c", "-o", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_gpio.o"]
}, {
"file": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_wwdt.c",
"directory": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source",
"arguments": ["csky-elfabiv2-gcc", "-nostdlibinc", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/include/", "-ID:/C-Sky/CDK/CSKY/csi/csi_driver/include/", "-I.", "-ISYSTEM/inc", "-IUSRCTRL/inc", "-Iinclude", "-include", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache\\macro.h", "-DCONFIG_CSKY_MMU=0", "-U__CSKY_ABIV2__", "-c", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_wwdt.c", "-o", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_wwdt.o"]
}, {
"file": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_bt.c",
"directory": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source",
"arguments": ["csky-elfabiv2-gcc", "-nostdlibinc", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/include/", "-ID:/C-Sky/CDK/CSKY/csi/csi_driver/include/", "-I.", "-ISYSTEM/inc", "-IUSRCTRL/inc", "-Iinclude", "-include", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache\\macro.h", "-DCONFIG_CSKY_MMU=0", "-U__CSKY_ABIV2__", "-c", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_bt.c", "-o", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_bt.o"]
}, {
"file": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_uart.c",
"directory": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source",
"arguments": ["csky-elfabiv2-gcc", "-nostdlibinc", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/include/", "-ID:/C-Sky/CDK/CSKY/csi/csi_driver/include/", "-I.", "-ISYSTEM/inc", "-IUSRCTRL/inc", "-Iinclude", "-include", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache\\macro.h", "-DCONFIG_CSKY_MMU=0", "-U__CSKY_ABIV2__", "-c", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_uart.c", "-o", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_uart.o"]
}, {
"file": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_ifc.c",
"directory": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source",
"arguments": ["csky-elfabiv2-gcc", "-nostdlibinc", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/include/", "-ID:/C-Sky/CDK/CSKY/csi/csi_driver/include/", "-I.", "-ISYSTEM/inc", "-IUSRCTRL/inc", "-Iinclude", "-include", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache\\macro.h", "-DCONFIG_CSKY_MMU=0", "-U__CSKY_ABIV2__", "-c", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_ifc.c", "-o", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_ifc.o"]
}, {
"file": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_lpt.c",
"directory": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source",
"arguments": ["csky-elfabiv2-gcc", "-nostdlibinc", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/include/", "-ID:/C-Sky/CDK/CSKY/csi/csi_driver/include/", "-I.", "-ISYSTEM/inc", "-IUSRCTRL/inc", "-Iinclude", "-include", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache\\macro.h", "-DCONFIG_CSKY_MMU=0", "-U__CSKY_ABIV2__", "-c", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_lpt.c", "-o", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\FWlib\\apt32f102_lpt.o"]
}, {
"file": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\main.c",
"directory": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source",
"arguments": ["csky-elfabiv2-gcc", "-nostdlibinc", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/include/", "-ID:/C-Sky/CDK/CSKY/csi/csi_driver/include/", "-I.", "-ISYSTEM/inc", "-IUSRCTRL/inc", "-Iinclude", "-include", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache\\macro.h", "-DCONFIG_CSKY_MMU=0", "-U__CSKY_ABIV2__", "-c", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\main.c", "-o", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\main.o"]
}, {
"file": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\mcu_initial.c",
"directory": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source",
"arguments": ["csky-elfabiv2-gcc", "-nostdlibinc", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/include/", "-ID:/C-Sky/CDK/CSKY/csi/csi_driver/include/", "-I.", "-ISYSTEM/inc", "-IUSRCTRL/inc", "-Iinclude", "-include", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache\\macro.h", "-DCONFIG_CSKY_MMU=0", "-U__CSKY_ABIV2__", "-c", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\mcu_initial.c", "-o", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\mcu_initial.o"]
}, {
"file": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\mcu_interrupt.c",
"directory": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source",
"arguments": ["csky-elfabiv2-gcc", "-nostdlibinc", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/include/", "-ID:/C-Sky/CDK/CSKY/csi/csi_driver/include/", "-I.", "-ISYSTEM/inc", "-IUSRCTRL/inc", "-Iinclude", "-include", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache\\macro.h", "-DCONFIG_CSKY_MMU=0", "-U__CSKY_ABIV2__", "-c", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\mcu_interrupt.c", "-o", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\mcu_interrupt.o"]
}, {
"file": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\drivers\\apt32f102.c",
"directory": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source",
"arguments": ["csky-elfabiv2-gcc", "-nostdlibinc", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/include/", "-ID:/C-Sky/CDK/CSKY/csi/csi_driver/include/", "-I.", "-ISYSTEM/inc", "-IUSRCTRL/inc", "-Iinclude", "-include", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache\\macro.h", "-DCONFIG_CSKY_MMU=0", "-U__CSKY_ABIV2__", "-c", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\drivers\\apt32f102.c", "-o", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\drivers\\apt32f102.o"]
}, {
"file": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\drivers\\apt32f102_ck801.c",
"directory": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source",
"arguments": ["csky-elfabiv2-gcc", "-nostdlibinc", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/include/", "-ID:/C-Sky/CDK/CSKY/csi/csi_driver/include/", "-I.", "-ISYSTEM/inc", "-IUSRCTRL/inc", "-Iinclude", "-include", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache\\macro.h", "-DCONFIG_CSKY_MMU=0", "-U__CSKY_ABIV2__", "-c", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\drivers\\apt32f102_ck801.c", "-o", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\drivers\\apt32f102_ck801.o"]
}, {
"file": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\SYSTEM\\uart.c",
"directory": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source",
"arguments": ["csky-elfabiv2-gcc", "-nostdlibinc", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/include/", "-ID:/C-Sky/CDK/CSKY/csi/csi_driver/include/", "-I.", "-ISYSTEM/inc", "-IUSRCTRL/inc", "-Iinclude", "-include", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache\\macro.h", "-DCONFIG_CSKY_MMU=0", "-U__CSKY_ABIV2__", "-c", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\SYSTEM\\uart.c", "-o", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\SYSTEM\\uart.o"]
}, {
"file": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\SYSTEM\\eeprom.c",
"directory": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source",
"arguments": ["csky-elfabiv2-gcc", "-nostdlibinc", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/include/", "-ID:/C-Sky/CDK/CSKY/csi/csi_driver/include/", "-I.", "-ISYSTEM/inc", "-IUSRCTRL/inc", "-Iinclude", "-include", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache\\macro.h", "-DCONFIG_CSKY_MMU=0", "-U__CSKY_ABIV2__", "-c", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\SYSTEM\\eeprom.c", "-o", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\SYSTEM\\eeprom.o"]
}, {
"file": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\SYSTEM\\Bootload_fun.c",
"directory": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source",
"arguments": ["csky-elfabiv2-gcc", "-nostdlibinc", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "-isystem", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/", "-ID:/C-Sky/CDK/CSKY/csi/csi_core/include/", "-ID:/C-Sky/CDK/CSKY/csi/csi_driver/include/", "-I.", "-ISYSTEM/inc", "-IUSRCTRL/inc", "-Iinclude", "-include", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache\\macro.h", "-DCONFIG_CSKY_MMU=0", "-U__CSKY_ABIV2__", "-c", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\SYSTEM\\Bootload_fun.c", "-o", "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\SYSTEM\\Bootload_fun.o"]
}]

200
Source/.cache/macro.h Normal file
View File

@@ -0,0 +1,200 @@
#define __HQ_FBIT__ 15
#define __SFRACT_IBIT__ 0
#define __FLT_MIN__ 1.1754943508222875e-38F
#define __GCC_IEC_559_COMPLEX 0
#define __UFRACT_MAX__ 0XFFFFP-16UR
#define __DQ_FBIT__ 63
#define __ULFRACT_FBIT__ 32
#define __SACCUM_EPSILON__ 0x1P-7HK
#define __CK801__ 1
#define __USQ_IBIT__ 0
#define __ACCUM_FBIT__ 15
#define __WINT_MAX__ 0xffffffffU
#define __USFRACT_FBIT__ 8
#define __WCHAR_MAX__ 0x7fffffffL
#define __LACCUM_IBIT__ 32
#define __DBL_DENORM_MIN__ ((double)4.9406564584124654e-324L)
#define __GCC_ATOMIC_CHAR_LOCK_FREE 1
#define __GCC_IEC_559 0
#define __csky_soft_float__ 1
#define __FLT_EVAL_METHOD__ 0
#define __LLACCUM_MAX__ 0X7FFFFFFFFFFFFFFFP-31LLK
#define __GCC_ATOMIC_CHAR32_T_LOCK_FREE 1
#define __FRACT_FBIT__ 15
#define __UACCUM_FBIT__ 16
#define __LFRACT_IBIT__ 0
#define __LFRACT_MAX__ 0X7FFFFFFFP-31LR
#define __UINT_FAST8_MAX__ 0xffffffffU
#define __cskyabi__ 2
#define __SA_FBIT__ 15
#define __LDBL_MAX__ 1.7976931348623157e+308L
#define __FRACT_MAX__ 0X7FFFP-15R
#define __cskyLE__ 1
#define __UFRACT_FBIT__ 16
#define __UFRACT_MIN__ 0.0UR
#define __GCC_ATOMIC_BOOL_LOCK_FREE 1
#define __LLFRACT_EPSILON__ 0x1P-63LLR
#define __CHAR_UNSIGNED__ 1
#define __UINT32_MAX__ 0xffffffffUL
#define __ULFRACT_MAX__ 0XFFFFFFFFP-32ULR
#define __TA_IBIT__ 64
#define __LDBL_MAX_EXP__ 1024
#define __WINT_MIN__ 0U
#define __CSKY_REQUIRED_SCANF__ 1
#define __ULLFRACT_MIN__ 0.0ULLR
#define __WCHAR_MIN__ (-__WCHAR_MAX__ - 1)
#define __GCC_ATOMIC_POINTER_LOCK_FREE 1
#define __LLACCUM_MIN__ (-0X1P31LLK-0X1P31LLK)
#define __USACCUM_IBIT__ 8
#define __LFRACT_MIN__ (-0.5LR-0.5LR)
#define __HA_IBIT__ 8
#define __TQ_IBIT__ 0
#define __FLT_EPSILON__ 1.1920928955078125e-7F
#define __USFRACT_IBIT__ 0
#define __LDBL_MIN__ 2.2250738585072014e-308L
#define __FRACT_MIN__ (-0.5R-0.5R)
#define __DA_IBIT__ 32
#define __INT32_MAX__ 0x7fffffffL
#define __UQQ_FBIT__ 8
#define __UACCUM_MAX__ 0XFFFFFFFFP-16UK
#define __DECIMAL_DIG__ 17
#define __LFRACT_EPSILON__ 0x1P-31LR
#define __ULFRACT_MIN__ 0.0ULR
#define __ULACCUM_IBIT__ 32
#define __UACCUM_EPSILON__ 0x1P-16UK
#define __GNUC__ 6
#define __ULLACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULLK
#define __HQ_IBIT__ 0
#define __SIZEOF_LONG_DOUBLE__ 8
#define __BIGGEST_ALIGNMENT__ 4
#define __DQ_IBIT__ 0
#define __DBL_MAX__ ((double)1.7976931348623157e+308L)
#define __ULFRACT_IBIT__ 0
#define __cskyle__ 1
#define __ACCUM_IBIT__ 16
#define __LACCUM_MAX__ 0X7FFFFFFFFFFFFFFFP-31LK
#define __INT_FAST16_TYPE__ int
#define __INT_LEAST32_MAX__ 0x7fffffffL
#define __USING_SJLJ_EXCEPTIONS__ 1
#define __ACCUM_MAX__ 0X7FFFFFFFP-15K
#define __USACCUM_EPSILON__ 0x1P-8UHK
#define __SFRACT_MAX__ 0X7FP-7HR
#define __FRACT_IBIT__ 0
#define __UACCUM_MIN__ 0.0UK
#define __CSKY_SOFT_FLOAT__ 1
#define __UACCUM_IBIT__ 16
#define __ULACCUM_MAX__ 0XFFFFFFFFFFFFFFFFP-32ULK
#define __SIZEOF_WINT_T__ 4
#define __SA_IBIT__ 16
#define __ULLACCUM_MIN__ 0.0ULLK
#define __GXX_ABI_VERSION 1010
#define __UTA_FBIT__ 64
#define __USFRACT_MAX__ 0XFFP-8UHR
#define __UFRACT_IBIT__ 0
#define __DBL_MIN__ ((double)2.2250738585072014e-308L)
#define __LACCUM_MIN__ (-0X1P31LK-0X1P31LK)
#define __ULLACCUM_FBIT__ 32
#define __ULLFRACT_EPSILON__ 0x1P-64ULLR
#define __ACCUM_MIN__ (-0X1P15K-0X1P15K)
#define __SQ_IBIT__ 0
#define __UHA_FBIT__ 8
#define __SFRACT_MIN__ (-0.5HR-0.5HR)
#define __UTQ_FBIT__ 128
#define __VERSION__ "6.3.0"
#define __ULLFRACT_FBIT__ 64
#define __CSKYABIV2__ 1
#define __ckcore__ 2
#define __FRACT_EPSILON__ 0x1P-15R
#define __ULACCUM_MIN__ 0.0ULK
#define __UDA_FBIT__ 32
#define __LLACCUM_EPSILON__ 0x1P-31LLK
#define __GCC_ATOMIC_INT_LOCK_FREE 1
#define __CSKYABI__ 2
#define __CSKY_REQUIRED_PRINTF__ 1
#define __USFRACT_MIN__ 0.0UHR
#define __UQQ_IBIT__ 0
#define __CSKYLE__ 1
#define __INT32_C(c) c ## L
#define __UHQ_FBIT__ 16
#define __LLACCUM_FBIT__ 31
#define __UDQ_FBIT__ 64
#define __ELF__ 1
#define __ULFRACT_EPSILON__ 0x1P-32ULR
#define __LLFRACT_FBIT__ 63
#define __LDBL_EPSILON__ 2.2204460492503131e-16L
#define __SACCUM_MAX__ 0X7FFFP-7HK
#define __GCC_ATOMIC_WCHAR_T_LOCK_FREE 1
#define __LACCUM_EPSILON__ 0x1P-31LK
#define __INT_FAST16_MAX__ 0x7fffffff
#define __USACCUM_MAX__ 0XFFFFP-8UHK
#define __SFRACT_EPSILON__ 0x1P-7HR
#define __USA_FBIT__ 16
#define __UINT_FAST16_TYPE__ unsigned int
#define __csky_required_scanf__ 1
#define __SACCUM_FBIT__ 7
#define __GCC_ATOMIC_LONG_LOCK_FREE 1
#define __SQ_FBIT__ 31
#define __INT_FAST8_MAX__ 0x7fffffff
#define __QQ_FBIT__ 7
#define __UTA_IBIT__ 64
#define __LDBL_MANT_DIG__ 53
#define __SFRACT_FBIT__ 7
#define __SACCUM_MIN__ (-0X1P7HK-0X1P7HK)
#define __CKCORE__ 2
#define __WCHAR_TYPE__ long int
#define __USQ_FBIT__ 32
#define __ULLACCUM_IBIT__ 32
#define __LACCUM_FBIT__ 31
#define __USACCUM_MIN__ 0.0UHK
#define __UHA_IBIT__ 8
#define __UTQ_IBIT__ 0
#define __GCC_ATOMIC_CHAR16_T_LOCK_FREE 1
#define __WINT_TYPE__ unsigned int
#define __ULLFRACT_IBIT__ 0
#define __LDBL_MIN_EXP__ (-1021)
#define __UDA_IBIT__ 32
#define __ck801__ 1
#define __LFRACT_FBIT__ 31
#define __LDBL_MAX_10_EXP__ 308
#define __DBL_EPSILON__ ((double)2.2204460492503131e-16L)
#define __INT_LEAST32_TYPE__ long int
#define __SIZEOF_WCHAR_T__ 4
#define __LLFRACT_MAX__ 0X7FFFFFFFFFFFFFFFP-63LLR
#define __TQ_FBIT__ 127
#define __INT_FAST8_TYPE__ int
#define __ULLACCUM_EPSILON__ 0x1P-32ULLK
#define __UHQ_IBIT__ 0
#define __LLACCUM_IBIT__ 32
#define __TA_FBIT__ 63
#define __UDQ_IBIT__ 0
#define __ckcoreLE__ 1
#define __ACCUM_EPSILON__ 0x1P-15K
#define __FLT_DENORM_MIN__ 1.4012984643248171e-45F
#define __LLFRACT_IBIT__ 0
#define __FLT_MAX__ 3.4028234663852886e+38F
#define __USACCUM_FBIT__ 8
#define __INT32_TYPE__ long int
#define __UFRACT_EPSILON__ 0x1P-16UR
#define __GNUC_MINOR__ 3
#define __HA_FBIT__ 7
#define __LDBL_DENORM_MIN__ 4.9406564584124654e-324L
#define __csky__ 2
#define __LLFRACT_MIN__ (-0.5LLR-0.5LLR)
#define __DA_FBIT__ 31
#define __UINT32_TYPE__ long unsigned int
#define __USA_IBIT__ 16
#define __LDBL_MIN_10_EXP__ (-307)
#define __csky_required_printf__ 1
#define __cskyabiv2__ 1
#define __ULACCUM_EPSILON__ 0x1P-32ULK
#define __SACCUM_IBIT__ 8
#define __GCC_ATOMIC_LLONG_LOCK_FREE 1
#define __LDBL_DIG__ 15
#define __UINT_FAST16_MAX__ 0xffffffffU
#define __GCC_ATOMIC_SHORT_LOCK_FREE 1
#define __ULLFRACT_MAX__ 0XFFFFFFFFFFFFFFFFP-64ULLR
#define __UINT_FAST8_TYPE__ unsigned int
#define __USFRACT_EPSILON__ 0x1P-8UHR
#define __ULACCUM_FBIT__ 32
#define __QQ_IBIT__ 0
#define __CSKY__ 2

View File

@@ -0,0 +1,6 @@
{
"device": " -mcpu=ck801 ",
"toolchain": "D:\\C-Sky\\CDKRepo\\Toolchain/CKV2ElfMinilib/V3.10.29/R/",
"toolchain_includes": ["d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\csky-elfabiv2", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include\\c++\\6.3.0\\backward", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\lib\\gcc\\csky-elfabiv2\\6.3.0\\include-fixed", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\sys-include", "d:\\C-Sky\\CDKRepo\\toolchain\\ckv2elfminilib\\v3.10.29\\R\\csky-elfabiv2\\include"],
"application": "E:\\Git_Project_Sourcode\\BLV_MD203_Bootload\\Source\\.cache/"
}

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8"?>
<Session Name="E:\Git_Project_Sourcode\BLV_MD203_Bootload\Source\Project.cdkws">
<int Value="1" Name="m_selectedTab"/>
<wxString Value="E:\Git_Project_Sourcode\BLV_MD203_Bootload\Source\Project.cdkws" Name="m_workspaceName"/>
<TabInfoArray Name="TabInfoArray">
<TabInfo>
<wxString Value="E:\Git_Project_Sourcode\BLV_MD203_Bootload\Source\main.c" Name="FileName"/>
<wxString Value="MD203F8P" Name="ProjectName"/>
<int Value="0" Name="FirstVisibleLine"/>
<int Value="8" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
<IntVector Name="CollapsedFolds"/>
</TabInfo>
<TabInfo>
<wxString Value="E:\Git_Project_Sourcode\BLV_MD203_Bootload\Source\mcu_initial.c" Name="FileName"/>
<wxString Value="MD203F8P" Name="ProjectName"/>
<int Value="25" Name="FirstVisibleLine"/>
<int Value="51" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
<IntVector Name="CollapsedFolds"/>
</TabInfo>
<TabInfo>
<wxString Value="E:\Git_Project_Sourcode\BLV_MD203_Bootload\Source\SYSTEM\uart.c" Name="FileName"/>
<wxString Value="MD203F8P" Name="ProjectName"/>
<int Value="440" Name="FirstVisibleLine"/>
<int Value="483" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
<IntVector Name="CollapsedFolds"/>
</TabInfo>
<TabInfo>
<wxString Value="E:\Git_Project_Sourcode\BLV_MD203_Bootload\Source\mcu_interrupt.c" Name="FileName"/>
<wxString Value="MD203F8P" Name="ProjectName"/>
<int Value="621" Name="FirstVisibleLine"/>
<int Value="669" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
<IntVector Name="CollapsedFolds"/>
</TabInfo>
<TabInfo>
<wxString Value="E:\Git_Project_Sourcode\BLV_MD203_Bootload\Source\includes.h" Name="FileName"/>
<wxString Value="MD203F8P" Name="ProjectName"/>
<int Value="1" Name="FirstVisibleLine"/>
<int Value="28" Name="CurrentLine"/>
<wxArrayString Name="Bookmarks"/>
<IntVector Name="CollapsedFolds"/>
</TabInfo>
</TabInfoArray>
<SerializedObject Name="m_breakpoints">
<long Value="0" Name="Count"/>
</SerializedObject>
</Session>

BIN
Source/.cdk/compilation.db Normal file

Binary file not shown.

BIN
Source/.cdk/refactoring.db Normal file

Binary file not shown.

287
Source/FWlib/apt32f102_bt.c Normal file
View File

@@ -0,0 +1,287 @@
/*
******************************************************************************
* @file apt32f102_bt.c
* @author APT AE Team
* @version V1.10
* @date 2021/08/25
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "apt32f102_bt.h"
/* defines -------------------------------------------------------------------*/
/* externs--------------------------------------------------------------------*/
/*************************************************************/
//Deinitializes the registers to their default reset
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void BT_DeInit(CSP_BT_T *BTx)
{
BTx->RSSR=BT_RESET_VALUE;
BTx->CR=BT_RESET_VALUE;
BTx->PSCR=BT_RESET_VALUE;
BTx->PRDR=BT_RESET_VALUE;
BTx->CMP=BT_RESET_VALUE;
BTx->CNT=BT_RESET_VALUE;
BTx->EVTRG=BT_RESET_VALUE;
BTx->EVSWF=BT_RESET_VALUE;
BTx->RISR=BT_RESET_VALUE;
BTx->IMCR=BT_RESET_VALUE;
BTx->MISR=BT_RESET_VALUE;
BTx->ICR=BT_RESET_VALUE;
}
/*************************************************************/
//BT IO Init
//EntryParameter:LPT_OUT_PA09,LPT_OUT_PB01,LPT_IN_PA10,
//ReturnValue:NONE
/*************************************************************/
void BT_IO_Init(BT_Pin_TypeDef BT_IONAME)
{
if(BT_IONAME==BT0_PA00)
{
GPIOA0->CONLR=(GPIOA0->CONLR & 0XFFFFFFF0)|0x00000006; //BT0 PA0.0
}
if(BT_IONAME==BT0_PA02)
{
GPIOA0->CONLR=(GPIOA0->CONLR & 0XFFFFF0FF)|0x00000600; //BT0 PA0.2
}
if(BT_IONAME==BT0_PA05)
{
GPIOA0->CONLR=(GPIOA0->CONLR & 0XFF0FFFFF)|0x00500000; //BT0 PA0.5
}
if(BT_IONAME==BT0_PB02)
{
GPIOB0->CONLR=(GPIOB0->CONLR & 0XFFFFF0FF)|0x00000500; //BT0 PB0.2
}
if(BT_IONAME==BT0_PB05)
{
GPIOB0->CONLR=(GPIOB0->CONLR & 0XFF0FFFFF)|0x00700000; //BT0 PB0.5
}
if(BT_IONAME==BT0_PA11)
{
GPIOA0->CONHR=(GPIOA0->CONHR & 0XFFFF0FFF)|0x00008000; //BT0 PA0.11
}
if(BT_IONAME==BT0_PA13)
{
GPIOA0->CONHR=(GPIOA0->CONHR & 0XFF0FFFFF)|0x00800000; //BT0 PA0.13
}
if(BT_IONAME==BT0_PA15)
{
GPIOA0->CONHR=(GPIOA0->CONHR & 0X0FFFFFFF)|0x50000000; //BT0 PA0.15
}
if(BT_IONAME==BT1_PA01)
{
GPIOA0->CONLR=(GPIOA0->CONLR & 0XFFFFFF0F)|0x00000060; //BT1 PA0.1
}
if(BT_IONAME==BT1_PA06)
{
GPIOA0->CONLR=(GPIOA0->CONLR & 0XF0FFFFFF)|0x04000000; //BT1 PA0.6
}
if(BT_IONAME==BT1_PA08)
{
GPIOA0->CONHR=(GPIOA0->CONHR & 0XFFFFFFF0)|0x00000006; //BT1 PA0.8
}
if(BT_IONAME==BT1_PA12)
{
GPIOA0->CONHR=(GPIOA0->CONHR & 0XFFF0FFFF)|0x00060000; //BT1 PA0.12
}
if(BT_IONAME==BT1_PA14)
{
GPIOA0->CONHR=(GPIOA0->CONHR & 0XF0FFFFFF)|0x05000000; //BT1 PA0.14
}
if(BT_IONAME==BT1_PB00)
{
GPIOB0->CONLR=(GPIOB0->CONLR & 0XFFFFFFF0)|0x00000008; //BT1 PB0.0
}
if(BT_IONAME==BT1_PB04)
{
GPIOB0->CONLR=(GPIOB0->CONLR & 0XFFF0FFFF)|0x00070000; //BT1 PB0.4
}
}
/*************************************************************/
// BT start
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void BT_Start(CSP_BT_T *BTx)
{
BTx->RSSR |=0X01;
}
/*************************************************************/
// BT stop
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void BT_Stop(CSP_BT_T *BTx)
{
BTx->RSSR &=0X0;
}
/*************************************************************/
// BT stop High
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void BT_Stop_High(CSP_BT_T *BTx)
{
BTx->CR |=(0x01<<6);
BTx->RSSR &=0X0;
}
/*************************************************************/
// BT stop Low
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void BT_Stop_Low(CSP_BT_T *BTx)
{
BTx->CR =BTx->CR & ~(0x01<<6);
BTx->RSSR &=0X0;
}
/*************************************************************/
// BT soft reset
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void BT_Soft_Reset(CSP_BT_T *BTx)
{
BTx->RSSR |= (0X5<<12);
}
/*************************************************************/
//BT Configure
//EntryParameter:
//ReturnValue:NONE
/*************************************************************/
void BT_Configure(CSP_BT_T *BTx,BT_CLK_TypeDef BTCLK,U16_T PSCR_DATA,BT_SHDWSTP_TypeDef BTSHDWSTP,BT_OPM_TypeDef BTOPM,BT_EXTCKM_TypeDef BTEXTCKM)
{
BTx->CR |=BTCLK| BTSHDWSTP| BTOPM| BTEXTCKM;
BTx->PSCR = PSCR_DATA;
}
/*************************************************************/
//BT ControlSet
//EntryParameter:
//ReturnValue:NONE
/*************************************************************/
void BT_ControlSet_Configure(CSP_BT_T *BTx,BT_STARTST_TypeDef BTSTART,BT_IDLEST_TypeDef BTIDLE,BT_SYNCEN_TypeDef BTSYNC,BT_SYNCMD_TypeDef BTSYNCMD,
BT_OSTMDX_TypeDef BTOSTMD,BT_AREARM_TypeDef BTAREARM,BT_CNTRLD_TypeDef BTCNTRLD)
{
BTx->CR |=BTSTART| BTIDLE| BTSYNC| BTSYNCMD| BTOSTMD| BTAREARM| BTCNTRLD;
}
/*************************************************************/
//BT Period / Compare set
//EntryParameter:
//ReturnValue:NONE
/*************************************************************/
void BT_Period_CMP_Write(CSP_BT_T *BTx,U16_T BTPRDR_DATA,U16_T BTCMP_DATA)
{
//BTx->CR|=0X01<<2;
BTx->PRDR =BTPRDR_DATA;
BTx->CMP =BTCMP_DATA;
}
/*************************************************************/
//BT COUNTER set
//EntryParameter:
//ReturnValue:NONE
/*************************************************************/
void BT_CNT_Write(CSP_BT_T *BTx,U16_T BTCNT_DATA)
{
BTx->CNT =BTCNT_DATA;
}
/*************************************************************/
//BT read counters
//EntryParameter:
//ReturnValue:NONE
/*************************************************************/
U16_T BT_PRDR_Read(CSP_BT_T *BTx)
{
return BTx->PRDR;
}
U16_T BT_CMP_Read(CSP_BT_T *BTx)
{
return BTx->CMP;
}
U16_T BT_CNT_Read(CSP_BT_T *BTx)
{
return BTx->CNT;
}
/*************************************************************/
//BT Trigger Init
//EntryParameter:
//ReturnValue:NONE
/*************************************************************/
void BT_Trigger_Configure(CSP_BT_T *BTx,BT_TRGSRC_TypeDef BTTRG,BT_TRGOE_TypeDef BTTRGOE)
{
BTx->EVTRG|=BTTRG| BTTRGOE;
}
/*************************************************************/
//BT SOFT Trigger
//EntryParameter:
//ReturnValue:NONE
/*************************************************************/
void BT_Soft_Tigger(CSP_BT_T *BTx)
{
BTx->EVSWF=0x01;
}
/*************************************************************/
//BT inturrpt Configure
//EntryParameter:BT_IMSCR_X,NewState
//NewState:ENABLE,DISABLE
//ReturnValue:NONE
/*************************************************************/
void BT_ConfigInterrupt_CMD(CSP_BT_T *BTx,FunctionalStatus NewState,BT_IMSCR_TypeDef BT_IMSCR_X)
{
if (NewState != DISABLE)
{
BTx->IMCR |= BT_IMSCR_X;
}
else
{
BTx->IMCR &= ~BT_IMSCR_X;
}
}
/*************************************************************/
//BT0 Interrupt enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void BT0_INT_ENABLE(void)
{
INTC_ISER_WRITE(BT0_INT);
}
/*************************************************************/
//BT0 Interrupt disable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void BT0_INT_DISABLE(void)
{
INTC_ICER_WRITE(BT0_INT);
}
/*************************************************************/
//BT0 Interrupt enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void BT1_INT_ENABLE(void)
{
INTC_ISER_WRITE(BT1_INT);
}
/*************************************************************/
//BT0 Interrupt disable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void BT1_INT_DISABLE(void)
{
INTC_ICER_WRITE(BT1_INT);
}

View File

@@ -0,0 +1,508 @@
/*
******************************************************************************
* @file main.c
* @author APT AE Team
* @version V1.10
* @date 2021/08/25
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "apt32f102_gpio.h"
/* define --------------------------------------------------------------------*/
/* externs--------------------------------------------------------------------*/
/*************************************************************/
//IO RESET CLEAR ALL REGISTER
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void GPIO_DeInit(void)
{
GPIOA0->CONLR &= 0xFF000000;
GPIOA0->CONHR = GPIO_RESET_VALUE;
GPIOB0->CONLR = GPIO_RESET_VALUE;
GPIOB0->CONHR = GPIO_RESET_VALUE;
GPIOA0->WODR = GPIO_RESET_VALUE;
GPIOB0->WODR = GPIO_RESET_VALUE;
GPIOA0->SODR = GPIO_RESET_VALUE;
GPIOB0->SODR = GPIO_RESET_VALUE;
GPIOA0->CODR = GPIO_RESET_VALUE;
GPIOB0->CODR = GPIO_RESET_VALUE;
GPIOA0->ODSR = GPIO_RESET_VALUE;
GPIOB0->ODSR = GPIO_RESET_VALUE;
GPIOA0->PSDR = GPIO_RESET_VALUE;
GPIOB0->PSDR = GPIO_RESET_VALUE;
GPIOA0->FLTEN = 0xffff;
GPIOB0->FLTEN = 0x3f;
GPIOA0->PUDR = GPIO_RESET_VALUE;
GPIOB0->PUDR = GPIO_RESET_VALUE;
GPIOA0->DSCR = GPIO_RESET_VALUE;
GPIOB0->DSCR = GPIO_RESET_VALUE;
GPIOA0->OMCR = GPIO_RESET_VALUE;
GPIOB0->OMCR = GPIO_RESET_VALUE;
GPIOA0->IECR = GPIO_RESET_VALUE;
GPIOB0->IECR = GPIO_RESET_VALUE;
GPIOGRP->IGRPL = GPIO_RESET_VALUE;
GPIOGRP->IGRPH = GPIO_RESET_VALUE;
GPIOGRP->IGREX = GPIO_RESET_VALUE;
GPIOGRP->IO_CLKEN = 0xf;
}
/*************************************************************/
//IO OUTPUT INPUT SET 2
//EntryParameter:GPIOx,byte,val
//GPIOx:GPIOA0,GPIOB0
//byte:Lowbyte(PIN_0~7),Highbyte(PIN_8~15)
//val:0x0000000~0xFFFFFFFF
//val=0x11111111 all IO as input
//val=0x22222222 all IO as output
//ReturnValue:NONE
/*************************************************************/
void GPIO_Init2(CSP_GPIO_T *GPIOx,GPIO_byte_TypeDef byte,uint32_t val)
{
if (byte==0)
{
(GPIOx)->CONLR=val;
}
else if(byte==1)
{
(GPIOx)->CONHR=val;
}
}
/*************************************************************/
//IO OUTPUT INPUT SET 1
//EntryParameter:GPIOx,GPIO_Pin(0~15),byte,Dir
//GPIOx:GPIOA0,GPIOB0
//GPIO_Pin:PIN_0~15
//byte:Lowbyte(PIN_0~7),Highbyte(PIN_8~15)
//Dir:0:output 1:input
//ReturnValue:NONE
/*************************************************************/
void GPIO_Init(CSP_GPIO_T *GPIOx,uint8_t PinNum,GPIO_Dir_TypeDef Dir)
{
uint32_t data_temp;
uint8_t GPIO_Pin;
if(PinNum<8)
{
switch (PinNum)
{
case 0:data_temp=0xfffffff0;GPIO_Pin=0;break;
case 1:data_temp=0xffffff0f;GPIO_Pin=4;break;
case 2:data_temp=0xfffff0ff;GPIO_Pin=8;break;
case 3:data_temp=0xffff0fff;GPIO_Pin=12;break;
case 4:data_temp=0xfff0ffff;GPIO_Pin=16;break;
case 5:data_temp=0xff0fffff;GPIO_Pin=20;break;
case 6:data_temp=0xf0ffffff;GPIO_Pin=24;break;
case 7:data_temp=0x0fffffff;GPIO_Pin=28;break;
}
if (Dir)
{
(GPIOx)->CONLR =((GPIOx)->CONLR & data_temp) | 1<<GPIO_Pin;
}
else
{
(GPIOx)->CONLR = ((GPIOx)->CONLR & data_temp) | 2<<GPIO_Pin;
}
}
else if (PinNum<16)
{
switch (PinNum)
{
case 8:data_temp=0xfffffff0;GPIO_Pin=0;break;
case 9:data_temp=0xffffff0f;GPIO_Pin=4;break;
case 10:data_temp=0xfffff0ff;GPIO_Pin=8;break;
case 11:data_temp=0xffff0fff;GPIO_Pin=12;break;
case 12:data_temp=0xfff0ffff;GPIO_Pin=16;break;
case 13:data_temp=0xff0fffff;GPIO_Pin=20;break;
case 14:data_temp=0xf0ffffff;GPIO_Pin=24;break;
case 15:data_temp=0x0fffffff;GPIO_Pin=28;break;
}
if (Dir)
{
(GPIOx)->CONHR = ((GPIOx)->CONHR & data_temp) | 1<<GPIO_Pin;
}
else
{
(GPIOx)->CONHR = ((GPIOx)->CONHR & data_temp) | 2<<GPIO_Pin;
}
}
}
/*************************************************************/
//IO OUTPUT INPUT Disable
//EntryParameter:GPIOx,GPIO_Pin(0~15)
//GPIOx:GPIOA0,GPIOB0
//GPIO_Pin:PIN_0~15
//byte:Lowbyte(PIN_0~7),Highbyte(PIN_8~15)
//ReturnValue:NONE
/*************************************************************/
void GPIO_InPutOutPut_Disable(CSP_GPIO_T *GPIOx,uint8_t PinNum)
{
uint32_t data_temp;
if(PinNum<8)
{
switch (PinNum)
{
case 0:data_temp=0xfffffff0;break;
case 1:data_temp=0xffffff0f;break;
case 2:data_temp=0xfffff0ff;break;
case 3:data_temp=0xffff0fff;break;
case 4:data_temp=0xfff0ffff;break;
case 5:data_temp=0xff0fffff;break;
case 6:data_temp=0xf0ffffff;break;
case 7:data_temp=0x0fffffff;break;
}
(GPIOx)->CONLR = (GPIOx)->CONLR & data_temp;
}
else if (PinNum<16)
{
switch (PinNum)
{
case 8:data_temp=0xfffffff0;break;
case 9:data_temp=0xffffff0f;break;
case 10:data_temp=0xfffff0ff;break;
case 11:data_temp=0xffff0fff;break;
case 12:data_temp=0xfff0ffff;break;
case 13:data_temp=0xff0fffff;break;
case 14:data_temp=0xf0ffffff;break;
case 15:data_temp=0x0fffffff;break;
}
(GPIOx)->CONHR = (GPIOx)->CONHR & data_temp;
}
}
/*************************************************************/
//IO OUTPUT INPUT SET
//EntryParameter:IO_MODE,GPIOx,val
//GPIOx:GPIOA0,GPIOB0
//IO_MODE:PUDR(IO PULL HIGH/LOW)
//IO_MODE:DSCR(IO DRIVE STRENGHT)
//IO_MODE:OMCR(OUTPUT MODE SET)
//IO_MODE:IECR(IO INT ENABLE)
//ReturnValue:NONE
/*************************************************************/
void GPIO_MODE_Init(CSP_GPIO_T *GPIOx,GPIO_Mode_TypeDef IO_MODE,uint32_t val)
{
switch (IO_MODE)
{
case PUDR:(GPIOx)->PUDR = val;break;
case DSCR:(GPIOx)->DSCR = val;break;
case OMCR:(GPIOx)->OMCR = val;break;
case IECR:(GPIOx)->IECR = val;break;
}
}
/*************************************************************/
//Write GPIO pull high/low
//EntryParameter:GPIOx,uint8_t bit
//GPIOx:GPIOA0,GPIOB0
//bit:0~15
//ReturnValue:VALUE
/*************************************************************/
void GPIO_PullHigh_Init(CSP_GPIO_T *GPIOx,uint8_t bit)
{
(GPIOx)->PUDR = (((GPIOx)->PUDR) & ~(0x03<<(bit*2))) | (0x01<<(bit*2));
}
void GPIO_PullLow_Init(CSP_GPIO_T *GPIOx,uint8_t bit)
{
(GPIOx)->PUDR = (((GPIOx)->PUDR) & ~(0x03<<(bit*2))) | (0x02<<(bit*2));
}
void GPIO_PullHighLow_DIS(CSP_GPIO_T *GPIOx,uint8_t bit)
{
(GPIOx)->PUDR = ((GPIOx)->PUDR) & ~(0x03<<(bit*2));
}
/*************************************************************/
//Write GPIO open drain init
//EntryParameter:GPIOx,uint8_t bit
//GPIOx:GPIOA0,GPIOB0
//bit:0~15
//ReturnValue:VALUE
/*************************************************************/
void GPIO_OpenDrain_EN(CSP_GPIO_T *GPIOx,uint8_t bit)
{
(GPIOx)->OMCR = ((GPIOx)->OMCR) | (0x01<<bit);
}
void GPIO_OpenDrain_DIS(CSP_GPIO_T *GPIOx,uint8_t bit)
{
(GPIOx)->OMCR = ((GPIOx)->OMCR) & ~(0x01<<bit);
}
/*************************************************************/
//Write GPIO open drain init
//EntryParameter:GPIOx,uint8_t bit,INPUT_MODE_SETECTED_X
//GPIOx:GPIOA0,GPIOB0
//bit:0~15
//INPUT_MODE_SETECTED_X:INPUT_MODE_TTL1,INPUT_MODE_SETECTED_TTL2,INPUT_MODE_SETECTED_CMOSS
//ReturnValue:VALUE
/*************************************************************/
//默认cmos口
void GPIO_TTL_COSM_Selecte(CSP_GPIO_T *GPIOx,uint8_t bit,INPUT_MODE_SETECTED_TypeDef INPUT_MODE_SETECTED_X)
{
if(INPUT_MODE_SETECTED_X==INPUT_MODE_SETECTED_CMOS)
{
(GPIOx)->DSCR = ((GPIOx)->DSCR) & ~(0x01<<(bit*2+1));
}
else
{
(GPIOx)->DSCR = ((GPIOx)->DSCR) | (0x01<<(bit*2+1));
if(INPUT_MODE_SETECTED_X==INPUT_MODE_SETECTED_TTL1)
{
(GPIOx)->OMCR = ((GPIOx)->OMCR) | (0x01<<(bit+16));
}
else if(INPUT_MODE_SETECTED_X==INPUT_MODE_SETECTED_TTL2)
{
(GPIOx)->OMCR = ((GPIOx)->OMCR) & ~(0x01<<(bit+16));
}
}
}
/*************************************************************/
//Write GPIO Drive Strength init
//EntryParameter:GPIOx,uint8_t bit
//GPIOx:GPIOA0,GPIOB0
//bit:0~15
//ReturnValue:VALUE
/*************************************************************/
void GPIO_DriveStrength_EN(CSP_GPIO_T *GPIOx,uint8_t bit)
{
(GPIOx)->DSCR = ((GPIOx)->DSCR) | (0x01<<(bit*2));
}
void GPIO_DriveStrength_DIS(CSP_GPIO_T *GPIOx,uint8_t bit)
{
(GPIOx)->DSCR = ((GPIOx)->DSCR) & ~(0x01<<(bit*2));
}
/*************************************************************/
//IO OUTPUT INPUT SET
//EntryParameter:
//IO_MODE:IGRP(IO INT GROUP)
//PinNum:0~15
//SYSCON_EXIPIN_TypeDef:EXI_PIN0~EXI_PIN19
//EXI0~EXI15:GPIOA0,GPIOB0
//EXI16~EXI17:GPIOA0.0~GPIOA0.7
//EXI18~EXI19:GPIOB0.0~GPIOB0.3
//ReturnValue:NONE
/*************************************************************/
void GPIO_IntGroup_Set(GPIO_Group_TypeDef IO_MODE , uint8_t PinNum , GPIO_EXIPIN_TypeDef Selete_EXI_x)
{
volatile unsigned int R_data_temp;
volatile unsigned char R_GPIO_Pin;
if(Selete_EXI_x<16)
{
if((Selete_EXI_x==0)||(Selete_EXI_x==8))
{
R_data_temp=0xfffffff0;
R_GPIO_Pin=0;
}
else if((Selete_EXI_x==1)||(Selete_EXI_x==9))
{
R_data_temp=0xffffff0f;
R_GPIO_Pin=4;
}
else if((Selete_EXI_x==2)||(Selete_EXI_x==10))
{
R_data_temp=0xfffff0ff;
R_GPIO_Pin=8;
}
else if((Selete_EXI_x==3)||(Selete_EXI_x==11))
{
R_data_temp=0xffff0fff;
R_GPIO_Pin=12;
}
else if((Selete_EXI_x==4)||(Selete_EXI_x==12))
{
R_data_temp=0xfff0ffff;
R_GPIO_Pin=16;
}
else if((Selete_EXI_x==5)||(Selete_EXI_x==13))
{
R_data_temp=0xff0fffff;
R_GPIO_Pin=20;
}
else if((Selete_EXI_x==6)||(Selete_EXI_x==14))
{
R_data_temp=0xf0ffffff;
R_GPIO_Pin=24;
}
else if((Selete_EXI_x==7)||(Selete_EXI_x==15))
{
R_data_temp=0x0fffffff;
R_GPIO_Pin=28;
}
if(Selete_EXI_x<8)
{
GPIOGRP->IGRPL =(GPIOGRP->IGRPL & R_data_temp) | (IO_MODE<<R_GPIO_Pin);
}
else if((Selete_EXI_x<16)&&(Selete_EXI_x>=8))
{
GPIOGRP->IGRPH =(GPIOGRP->IGRPH & R_data_temp) | (IO_MODE<<R_GPIO_Pin);
}
}
else if(Selete_EXI_x<20)
{
if((IO_MODE==0)&&((Selete_EXI_x==16)||((Selete_EXI_x==17)))) //PA0.0~PA0.7
{
if(Selete_EXI_x==16)
{
GPIOGRP->IGREX =(GPIOGRP->IGREX)|PinNum;
}
else if(Selete_EXI_x==17)
{
GPIOGRP->IGREX=(GPIOGRP->IGREX)|(PinNum<<4);
}
}
else if((IO_MODE==2)&&((Selete_EXI_x==18)||(Selete_EXI_x==19))) //PB0.0~PB0.3
{
if(Selete_EXI_x==18)
{
GPIOGRP->IGREX=(GPIOGRP->IGREX)|(PinNum<<8);
}
else if(Selete_EXI_x==19)
{
GPIOGRP->IGREX=(GPIOGRP->IGREX)|(PinNum<<12);
}
}
}
}
/*************************************************************/
//IO EXI SET
//EntryParameter:EXI_IO(EXI0~EXI13)
//ReturnValue:NONE
/*************************************************************/
void GPIOA0_EXI_Init(GPIO_EXI_TypeDef EXI_IO)
{
switch (EXI_IO)
{
case 0:GPIOA0->CONLR = (GPIOA0->CONLR&0XFFFFFFF0) | 0X00000001;break;
case 1:GPIOA0->CONLR = (GPIOA0->CONLR&0XFFFFFF0F) | 0X00000010;break;
case 2:GPIOA0->CONLR = (GPIOA0->CONLR&0XFFFFF0FF) | 0X00000100;break;
case 3:GPIOA0->CONLR = (GPIOA0->CONLR&0XFFFF0FFF) | 0X00001000;break;
case 4:GPIOA0->CONLR = (GPIOA0->CONLR&0XFFF0FFFF) | 0X00010000;break;
case 5:GPIOA0->CONLR = (GPIOA0->CONLR&0XFF0FFFFF) | 0X00100000;break;
case 6:GPIOA0->CONLR = (GPIOA0->CONLR&0XF0FFFFFF) | 0X01000000;break;
case 7:GPIOA0->CONLR = (GPIOA0->CONLR&0X0FFFFFFF) | 0X10000000;break;
case 8:GPIOA0->CONHR = (GPIOA0->CONHR&0XFFFFFFF0) | 0X00000001;break;
case 9:GPIOA0->CONHR = (GPIOA0->CONHR&0XFFFFFF0F) | 0X00000010;break;
case 10:GPIOA0->CONHR = (GPIOA0->CONHR&0XFFFFF0FF) | 0X00000100;break;
case 11:GPIOA0->CONHR = (GPIOA0->CONHR&0XFFFF0FFF) | 0X00001000;break;
case 12:GPIOA0->CONHR = (GPIOA0->CONHR&0XFFF0FFFF) | 0X00010000;break;
case 13:GPIOA0->CONHR = (GPIOA0->CONHR&0XFF0FFFFF) | 0X00100000;break;
case 14:GPIOA0->CONHR = (GPIOA0->CONHR&0XF0FFFFFF) | 0X01000000;break;
case 15:GPIOA0->CONHR = (GPIOA0->CONHR&0X0FFFFFFF) | 0X10000000;break;
}
}
void GPIOB0_EXI_Init(GPIO_EXI_TypeDef EXI_IO)
{
switch (EXI_IO)
{
case 0:GPIOB0->CONLR = (GPIOB0->CONLR&0XFFFFFFF0) | 0X00000001;break;
case 1:GPIOB0->CONLR = (GPIOB0->CONLR&0XFFFFFF0F) | 0X00000010;break;
case 2:GPIOB0->CONLR = (GPIOB0->CONLR&0XFFFFF0FF) | 0X00000100;break;
case 3:GPIOB0->CONLR = (GPIOB0->CONLR&0XFFFF0FFF) | 0X00001000;break;
case 4:GPIOB0->CONLR = (GPIOB0->CONLR&0XFFF0FFFF) | 0X00010000;break;
case 5:GPIOB0->CONLR = (GPIOB0->CONLR&0XFF0FFFFF) | 0X00100000;break;
default:break;
}
}
void GPIO_EXI_EN(CSP_GPIO_T *GPIOx,GPIO_EXI_TypeDef EXI_IO)
{
(GPIOx)->IECR |= 1<<EXI_IO;
}
/*************************************************************/
//Write GPIO
//EntryParameter:GPIOx,uint8_t bit
//GPIOx:GPIOA0,GPIOB0
//bit:0~15
//ReturnValue:VALUE
/*************************************************************/
void GPIO_Write_High(CSP_GPIO_T *GPIOx,uint8_t bit)
{
(GPIOx)->SODR = (1ul<<bit);
}
void GPIO_Write_Low(CSP_GPIO_T *GPIOx,uint8_t bit)
{
(GPIOx)->CODR = (1ul<<bit);
}
/*************************************************************/
//Write GPIO
//EntryParameter:GPIOx,uint8_t bitposi bitval
//GPIOx:GPIOA0,GPIOB0
//bitposi:0~15 bitval:0~1 0=low 1=high
//ReturnValue:VALUE
/*************************************************************/
void GPIO_Set_Value(CSP_GPIO_T *GPIOx,uint8_t bitposi,uint8_t bitval)
{
if (bitval==1)
{
(GPIOx)->SODR = (1ul<<bitposi);
}
else if ((bitval==0))
{
(GPIOx)->CODR = (1ul<<bitposi);
}
}
/*************************************************************/
//Write GPIO reverse
//EntryParameter:GPIOx,uint8_t bit
//GPIOx:GPIOA0,GPIOB0
//bit:0~15
//ReturnValue:VALUE
/*************************************************************/
void GPIO_Reverse(CSP_GPIO_T *GPIOx,uint8_t bit)
{
uint32_t dat = 0;
dat=((GPIOx)->ODSR>>bit)&1ul;
{
if (dat==1)
{
(GPIOx)->CODR = (1ul<<bit);
return;
}
if (dat==0)
{
(GPIOx)->SODR = (1ul<<bit);
return;
}
}
}
/*************************************************************/
//READ PA IO STATUS
//EntryParameter:GPIOx,uint8_t bit
//GPIOx:GPIOA0,GPIOB0
//bit:0~15
//ReturnValue:VALUE
/*************************************************************/
uint8_t GPIO_Read_Status(CSP_GPIO_T *GPIOx,uint8_t bit)
{
uint8_t value = 0;
uint32_t dat = 0;
dat=((GPIOx)->PSDR)&(1<<bit);
if (dat == (1<<bit))
{
value = 1;
}
return value;
}
/*************************************************************/
//READ PA OUTPUT STATUS
//EntryParameter:GPIOx,uint8_t bit
//GPIOx:GPIOA0,GPIOB0
//bit:0~15
//ReturnValue:VALUE
/*************************************************************/
uint8_t GPIO_Read_Output(CSP_GPIO_T *GPIOx,uint8_t bit)
{
uint8_t value = 0;
uint32_t dat = 0;
dat=((GPIOx)->ODSR)&(1<<bit);
if (dat == (1<<bit))
{
value = 1;
}
return value;
}
/******************* (C) COPYRIGHT 2020 APT Chip *****END OF FILE****/

View File

@@ -0,0 +1,89 @@
/*
******************************************************************************
* @file apt32f102_gpio.c
* @author APT AE Team
* @version V1.24
* @date 2018/10/15
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "apt32f102_hwdiv.h"
/* define --------------------------------------------------------------------*/
/* externs--------------------------------------------------------------------*/
/*************************************************************/
//HWDIV RESET CLEAR ALL REGISTER
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void HWDIV_DeInit(void)
{
HWD->DIVIDENT = HWDIV_RESET_VALUE;
HWD->DIVISOR = HWDIV_RESET_VALUE;
HWD->QUOTIENT = HWDIV_RESET_VALUE;
HWD->REMAIN = HWDIV_RESET_VALUE;
HWD->CR = HWDIV_RESET_VALUE;
}
/*************************************************************/
//HWDIV UNSIGN Configure
//EntryParameter:NewState
//NewState:ENABLE,DISABLE
//ReturnValue:NONE
/*************************************************************/
void HWDIV_UNSIGN_CMD(FunctionalStatus NewState)
{
if (NewState != DISABLE)
{
HWD->CR |= HWDIV_UNSIGN_BIT;
}
else
{
HWD->CR &= ~HWDIV_UNSIGN_BIT;
}
}
/*************************************************************/
//HWDIV Calculate
//EntryParameter:NewState
//NewState:ENABLE,DISABLE
//ReturnValue:NONE
/*************************************************************/
void HWDIV_Calc_UNSIGN(U32_T DIVIDENDx,U32_T DIVISOR_x)
{
HWD->DIVIDENT=DIVIDENDx;
HWD->DIVISOR=DIVISOR_x;
}
/*************************************************************/
//HWDIV Calculate result
//EntryParameter:NewState
//NewState:ENABLE,DISABLE
//ReturnValue:NONE
/*************************************************************/
U32_T HWDIV_Calc_Quotient(void)
{
return HWD->QUOTIENT;
}
/*************************************************************/
//HWDIV Calculate result
//EntryParameter:NewState
//NewState:ENABLE,DISABLE
//ReturnValue:NONE
/*************************************************************/
U32_T HWDIV_Calc_Remain(void)
{
return HWD->REMAIN;
}
/*************************************************************/
void HWDIV_Calc_SIGN(long DIVIDENDx,long DIVISOR_x)
{
HWD->DIVIDENT=DIVIDENDx;
HWD->DIVISOR=DIVISOR_x;
}

View File

@@ -0,0 +1,264 @@
/*
******************************************************************************
* @file apt32f102_ifc.c
* @author APT AE Team
* @version V1.08
* @date 2021/06/21
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "apt32f102_ifc.h"
volatile unsigned int R_INT_FlashAdd;
volatile unsigned char f_Drom_writing=0;
/* define --------------------------------------------------------------------*/
extern void delay_nms(unsigned int t);
/* externs--------------------------------------------------------------------*/
/*************************************************************
//ChipErase fuction
//EntryParameter:NONE
//ReturnValue:NONE
*************************************************************/
void ChipErase(void)
{
SetUserKey;
EnChipErase;
StartErase;
while(IFC->CR!=0x0); //Wait for the operation to complete
}
/*************************************************************
//PageErase fuction
//EntryParameter:XROM_PageAdd
//XROM_PageAdd:PROM_PageAdd0~PROM_PageAdd255
//DROM_PageAdd0~DROM_PageAdd31
//ReturnValue:NONE
*************************************************************/
void PageErase(IFC_ROMSELETED_TypeDef XROM_PageAdd)
{
SetUserKey;
EnPageErase;
IFC->FM_ADDR=XROM_PageAdd;
StartErase;
while(IFC->CR!=0x0);
}
/*************************************************************
//Enable or Disable IFC Interrupt when Operate FlashData
//EntryParameter:FlashAdd、DataSize、*BufArry
//ReturnValue:NONE
*************************************************************/
//PROM:Write at most 256 bytes once time
//DROM:Write at most 64 bytes at once time
//Interrupt mode requires multiple loop queries to complete
void Page_ProgramData_int(unsigned int FlashAdd,unsigned int DataSize,volatile unsigned char *BufArry)
{
int i,DataBuffer;
if(!f_Drom_writing)
{
f_Drom_writing=1;
R_INT_FlashAdd=FlashAdd;
ifc_step=0;
//Page cache wipe 1
SetUserKey;
IFC->CMR=0x07; //Page cache wipe
IFC->FM_ADDR=FlashAdd;
IFC->CR=0X01; //Start Program
while(IFC->CR!=0x0); //Wait for the operation to complete
//Write data to the cache 2
for(i=0;i<((DataSize+3)/4);i++) //sizeof structure
{
DataBuffer=*BufArry+(*(BufArry+1)<<8)+(*(BufArry+2)<<16)+(*(BufArry+3)<<24);
*(volatile unsigned int *)(FlashAdd+4*i)=DataBuffer;
BufArry +=4;
}
//Pre-programmed operation settings 3
SetUserKey;
IFC->CMR=0x06;
IFC->FM_ADDR=FlashAdd;
IFC->CR=0X01; //Start Program
while(IFC->CR!=0x0); //Wait for the operation to complete
//Perform pre-programming 4
SetUserKey;
IFC->CMR=0x01;
IFC->FM_ADDR=FlashAdd; //
IFC->CR=0X01; //Start Program
}
}
//Normal mode, when the call is completed once, it will delay 4.2ms in the program
void Page_ProgramData(unsigned int FlashAdd,unsigned int DataSize,volatile unsigned char *BufArry)
{
int i,DataBuffer;
//Page cache wipe 1
SetUserKey;
IFC->CMR=0x07;
IFC->FM_ADDR=FlashAdd;
IFC->CR=0X01; //Start Program
while(IFC->CR!=0x0); //Wait for the operation to complete
//Write data to the cache 2
for(i=0;i<((DataSize+3)/4);i++) //sizeof structure
{
DataBuffer=*BufArry+(*(BufArry+1)<<8)+(*(BufArry+2)<<16)+(*(BufArry+3)<<24);
*(volatile unsigned int *)(FlashAdd+4*i)=DataBuffer;
BufArry +=4;
}
//Pre-programmed operation settings 3
SetUserKey;
IFC->CMR=0x06;
IFC->FM_ADDR=FlashAdd;
IFC->CR=0X01; //Start Program
while(IFC->CR!=0x0); //Wait for the operation to complete
//Perform pre-programming 4
SetUserKey;
IFC->CMR=0x01;
IFC->FM_ADDR=FlashAdd; //
IFC->CR=0X01; //Start Program
while(IFC->RISR!=PEP_END_INT); //Wait for the operation to complete
//Page erase 5
SetUserKey;
IFC->CMR=0x02;
IFC->FM_ADDR=FlashAdd; //
IFC->CR=0X01; //Start Program
while(IFC->RISR!=ERS_END_INT); //Wait for the operation to complete
//Write page cache data to flash memory 6
SetUserKey;
IFC->CMR=0x01;
IFC->FM_ADDR=FlashAdd; //
IFC->CR=0X01; //Start Program
while(IFC->RISR!=RGM_END_INT); //Wait for the operation to complete
}
void Page_ProgramData_U32(unsigned int FlashAdd,unsigned int DataSize,volatile U32_T *BufArry)
{
int i,DataBuffer;
//Page cache wipe 1
SetUserKey;
IFC->CMR=0x07;
IFC->FM_ADDR=FlashAdd;
IFC->CR=0X01; //Start Program
while(IFC->CR!=0x0); //Wait for the operation to complete
//Write data to the cache 2
for(i=0;i<DataSize;i++) //sizeof structure
{
DataBuffer=*BufArry;
*(volatile unsigned int *)(FlashAdd)=DataBuffer;
BufArry +=1;
}
//Pre-programmed operation settings 3
SetUserKey;
IFC->CMR=0x06;
IFC->FM_ADDR=FlashAdd;
IFC->CR=0X01; //Start Program
while(IFC->CR!=0x0); //Wait for the operation to complete
//Perform pre-programming 4
SetUserKey;
IFC->CMR=0x01;
IFC->FM_ADDR=FlashAdd; //
IFC->CR=0X01; //Start Program
while(IFC->RISR!=PEP_END_INT); //Wait for the operation to complete
//Page erase 5
SetUserKey;
IFC->CMR=0x02;
IFC->FM_ADDR=FlashAdd; //
IFC->CR=0X01; //Start Program
while(IFC->RISR!=ERS_END_INT); //Wait for the operation to complete
//Write page cache data to flash memory 6
SetUserKey;
IFC->CMR=0x01;
IFC->FM_ADDR=FlashAdd; //
IFC->CR=0X01; //Start Program
while(IFC->RISR!=RGM_END_INT); //Wait for the operation to complete
}
/*************************************************************
// ReadFlashData fuction return Data arry save in Flash
// DataLength must be a multiple of 4, DataLength % 4 ==0.
//EntryParameter:RdStartAdd、DataLength、*DataArryPoint
//ReturnValue:NONE
*************************************************************/
void ReadDataArry(unsigned int RdStartAdd,unsigned int DataLength,volatile unsigned char *DataArryPoint)
{
unsigned int i,Buffer;
//delay_nms(1);
for(i=0;i<((DataLength+3)/4);i++)
{
Buffer=*(volatile unsigned int *)RdStartAdd;
*DataArryPoint=Buffer;
*(DataArryPoint+1)=Buffer>>8;
*(DataArryPoint+2)=Buffer>>16;
*(DataArryPoint+3)=Buffer>>24;
RdStartAdd +=4;
DataArryPoint +=4;
}
}
/*************************************************************
//ReadFlashData fuction return Data arry save in Flash
//EntryParameter:RdStartAdd、DataLength、*DataArryPoint
//ReturnValue:NONE
*************************************************************/
void ReadDataArry_U8(unsigned int RdStartAdd,unsigned int DataLength,volatile unsigned char *DataArryPoint)
{
unsigned int i;
for (i=0;i<DataLength;i++)
{
if((i!=0)&&(i%4==0))
{
RdStartAdd +=4;
}
*DataArryPoint=*(U8_T *)(RdStartAdd+ (i%4));
DataArryPoint++;
}
}
void ReadDataArry_U32(unsigned int RdStartAdd,unsigned int DataLength,volatile U32_T *DataArryPoint)
{
unsigned int i;
for (i=0;i<DataLength;i++)
{
*DataArryPoint=*(U32_T *)(RdStartAdd);
DataArryPoint++;
}
}
/*************************************************************
//Enable or Disable IFC Interrupt when Operate FlashData
//EntryParameter:IFC_INT_x
//IFC_INT_x:ERS_END_INT,RGM_END_INT,PEP_END_INT,PROT_ERR_INT,UDEF_ERR_INT,ADDR_ERR_INT,OVW_ERR_INT
//ReturnValue:NONE
*************************************************************/
void IFC_interrupt_CMD(FunctionalStatus NewState ,IFC_INT_TypeDef IFC_INT_x)
{
if(NewState != DISABLE)
{
IFC->IMCR =IFC->IMCR|IFC_INT_x;
}
else
{
IFC->IMCR =IFC->IMCR & (~IFC_INT_x);
}
}
/*************************************************************/
//IFC Interrupt enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void IFC_Int_Enable(void)
{
IFC->ICR=0Xf007; //CLAER IFC INT status
INTC_ISER_WRITE(IFC_INT);
}
/*************************************************************/
//IFC Interrupt enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void IFC_Int_Disable(void)
{
INTC_ICER_WRITE(IFC_INT);
}
/******************* (C) COPYRIGHT 2020 APT Chip *****END OF FILE****/

View File

@@ -0,0 +1,133 @@
/*
******************************************************************************
* @file apt32f102_iostring.c
* @author APT AE Team
* @version V1.00
* @date 2020/05/21
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/******************************************************************************
* Include Files
******************************************************************************/
#include "apt32f102.h"
#include "apt32f102_uart.h"
#include "stdarg.h"
#include "stddef.h"
#include "stdio.h"
/******************************************************************************
* Main code
******************************************************************************/
void __putchar__ (char s)
{
// UARTTxByte(UART0,s);
UARTTxByte(UART1,s);
}
char *myitoa(int value, int* string, int radix)
{
int tmp[33];
int* tp = tmp;
int i;
unsigned v;
int sign;
int* sp;
if (radix > 36 || radix <= 1)
{
return 0;
}
sign = (radix == 10 && value < 0);
if (sign)
v = -value;
else
v = (unsigned)value;
while (v || tp == tmp)
{
i = v % radix;
v = v / radix;
if (i < 10) {
*tp++ = i+'0';
} else {
*tp++ = i + 'a' - 10;
}
}
sp = string;
if (sign)
*sp++ = '-';
while (tp > tmp)
*sp++ = *--tp;
*sp = 0;
return string;
}
void my_printf(const char *fmt, ...)
{
// const char *s;
const int *s;
int d;
//char ch, *pbuf, buf[16];
char ch, *pbuf;
int buf[16];
va_list ap;
va_start(ap, fmt);
while (*fmt) {
if (*fmt != '%') {
__putchar__(*fmt++);
continue;
}
switch (*++fmt) {
case 's':
s = va_arg(ap, const char *);
for ( ; *s; s++) {
__putchar__(*s);
}
break;
case 'd':
d = va_arg(ap, int);
myitoa(d, buf, 10);
for (s = buf; *s; s++) {
__putchar__(*s);
}
break;
case 'x':
case 'X':
d = va_arg(ap, int);
myitoa(d, buf, 16);
for (s = buf; *s; s++) {
__putchar__(*s);
}
break;
// Add other specifiers here...
case 'c':
case 'C':
ch = (unsigned char)va_arg(ap, int);
pbuf = &ch;
__putchar__(*pbuf);
break;
default:
__putchar__(*fmt);
break;
}
fmt++;
}
va_end(ap);
}

View File

@@ -0,0 +1,260 @@
/*
******************************************************************************
* @file apt32f102_lpt.c
* @author APT AE Team
* @version V1.08
* @date 2021/06/21
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "apt32f102_lpt.h"
/*************************************************************/
//LPT RESET CLEAR ALL REGISTER
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void LPT_DeInit(void)
{
LPT->CEDR = 0xBE980000;
LPT->RSSR = LPT_RESET_VALUE;
LPT->PSCR = LPT_RESET_VALUE;
LPT->CR = 0X00010010;
LPT->SYNCR = LPT_RESET_VALUE;
LPT->PRDR = LPT_RESET_VALUE;
LPT->CMP = LPT_RESET_VALUE;
LPT->CNT = LPT_RESET_VALUE;
LPT->TRGFTCR = LPT_RESET_VALUE;
LPT->TRGFTWR = LPT_RESET_VALUE;
LPT->EVTRG = LPT_RESET_VALUE;
LPT->EVPS = LPT_RESET_VALUE;
LPT->EVSWF = LPT_RESET_VALUE;
LPT->RISR = LPT_RESET_VALUE;
LPT->MISR = LPT_RESET_VALUE;
LPT->IMCR = LPT_RESET_VALUE;
LPT->ICR = LPT_RESET_VALUE;
}
/*************************************************************/
//LPT IO Init
//EntryParameter:LPT_OUT_PA09,LPT_OUT_PB01,LPT_IN_PA10,
//ReturnValue:NONE
/*************************************************************/
void LPT_IO_Init(LPT_IOSET_TypeDef IONAME)
{
if(IONAME==LPT_OUT_PA09)
{
GPIOA0->CONHR=(GPIOA0->CONHR & 0XFFFFFF0F)|0x00000080;
}
if(IONAME==LPT_OUT_PB01)
{
GPIOB0->CONLR=(GPIOB0->CONLR & 0XFFFFFF0F)|0x00000080;
}
if(IONAME==LPT_IN_PA10)
{
GPIOA0->CONHR=(GPIOA0->CONHR & 0XFFFFF0FF)|0x00000800;
}
}
/*************************************************************/
//LPT Init
//EntryParameter:
//ReturnValue:NONE
/*************************************************************/
void LPT_Configure(LPT_CLK_TypeDef CLKX,LPT_CSS_TypeDef CSSX,LPT_SHDWSTP_TypeDef SHDWSTPX,LPT_PSCDIV_TypeDef PSCDIVX,U8_T FLTCKPRSX,LPT_OPM_TypeDef OPMX)
{
LPT->CEDR |=CLKX| CSSX| SHDWSTPX| (FLTCKPRSX<<8);
LPT->PSCR = PSCDIVX;
LPT->CR |=OPMX;
}
/*************************************************************/
//LPT DEBUG MODE
//EntryParameter:
//ReturnValue:NONE
/*************************************************************/
void LPT_Debug_Mode(FunctionalStatus NewState)
{
if (NewState != DISABLE)
{
LPT->CEDR |= LPT_DEBUG_MODE;
}
else
{
LPT->CEDR &= ~LPT_DEBUG_MODE;
}
}
/*************************************************************/
//LPT Period / Compare set
//EntryParameter:
//ReturnValue:NONE
/*************************************************************/
void LPT_Period_CMP_Write(U16_T PRDR_DATA,U16_T CMP_DATA)
{
LPT->PRDR =PRDR_DATA;
LPT->CMP =CMP_DATA;
}
/*************************************************************/
//LPT COUNTER set
//EntryParameter:
//ReturnValue:NONE
/*************************************************************/
void LPT_CNT_Write(U16_T CNT_DATA)
{
LPT->CNT =CNT_DATA;
}
/*************************************************************/
//LPT read counters
//EntryParameter:
//ReturnValue:NONE
/*************************************************************/
U16_T LPT_PRDR_Read(void)
{
return LPT->PRDR;
}
U16_T LPT_CMP_Read(void)
{
return LPT->CMP;
}
U16_T LPT_CNT_Read(void)
{
return LPT->CNT;
}
/*************************************************************/
//LPT ControlSet Init
//EntryParameter:
//ReturnValue:NONE
/*************************************************************/
void LPT_ControlSet_Configure(LPT_SWSYN_TypeDef SWSYNX,LPT_IDLEST_TypeDef IDLESTX,LPT_PRDLD_TypeDef PRDLDX,LPT_POL_TypeDef POLX,
LPT_FLTDEB_TypeDef FLTDEBX,LPT_PSCLD_TypeDef PSCLDX,LPT_CMPLD_TypeDef CMPLDX)
{
LPT->CR |= SWSYNX| IDLESTX| PRDLDX| POLX| FLTDEBX| FLTDEBX| CMPLDX;
}
/*************************************************************/
//LPT SYNC Init
//EntryParameter:
//ReturnValue:NONE
/*************************************************************/
void LPT_SyncSet_Configure(LPT_TRGENX_TypeDef TRGENX,LPT_OSTMDX_TypeDef OSTMDX,LPT_AREARM_TypeDef AREARMX)
{
LPT->SYNCR |= TRGENX| OSTMDX| AREARMX;
}
/*************************************************************/
//LPT Trigger Init
//EntryParameter:
//ReturnValue:NONE
/*************************************************************/
void LPT_Trigger_Configure(LPT_SRCSEL_TypeDef SRCSELX,LPT_BLKINV_TypeDef BLKINVX,LPT_CROSSMD_TypeDef CROSSMDX,LPT_TRGSRC0_TypeDef TRGSRC0X,
LPT_ESYN0OE_TypeDef ESYN0OEX,U16_T OFFSET_DATA,U16_T WINDOW_DATA,U8_T TRGEC0PRD_DATA)
{
LPT->TRGFTCR |= SRCSELX| BLKINVX| CROSSMDX;
LPT->TRGFTWR |= OFFSET_DATA |(WINDOW_DATA<<16);
LPT->EVTRG |= TRGSRC0X |ESYN0OEX;
LPT->EVPS |=TRGEC0PRD_DATA;
}
void LPT_Trigger_EVPS(U8_T TRGEC0PRD_DATA,U8_T TRGEV0CNT_DATA)
{
LPT->EVPS |= TRGEC0PRD_DATA |(TRGEV0CNT_DATA<<16);
}
void LPT_Trigger_Cnt(U8_T TRGEV0CNT_DATA)
{
LPT->EVPS |= (TRGEV0CNT_DATA<<16);
}
void LPT_Soft_Trigger(void)
{
LPT->EVSWF = 0X01;
}
/*************************************************************/
// LPT start
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void LPT_Start(void)
{
LPT->RSSR |= 0X01;
}
/*************************************************************/
// LPT stop
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void LPT_Stop(void)
{
LPT->RSSR &= 0XFFFFFFFE;
}
/*************************************************************/
// LPT soft reset
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void LPT_Soft_Reset(void)
{
LPT->RSSR |= (0X5<<12);
}
/*************************************************************/
// LPT soft reset at once sync mode
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void LPT_REARM_Write(void)
{
LPT->SYNCR |= (0X1<<16);
}
/*************************************************************/
// LPT soft read at once sync mode
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
U8_T LPT_REARM_Read(void)
{
uint8_t value = 0;
uint32_t dat = 0;
dat=(LPT->SYNCR)&(1<<16);
if (dat)
{
value = 1;
}
return value;
}
/*************************************************************/
//LPT inturrpt Configure
//EntryParameter:LPT_IMSCR_X,NewState
//NewState:ENABLE,DISABLE
//ReturnValue:NONE
/*************************************************************/
void LPT_ConfigInterrupt_CMD(FunctionalStatus NewState,LPT_IMSCR_TypeDef LPT_IMSCR_X)
{
if (NewState != DISABLE)
{
LPT->IMCR |= LPT_IMSCR_X;
}
else
{
LPT->IMCR &= ~LPT_IMSCR_X;
}
}
/*************************************************************/
//LPT Interrupt enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void LPT_INT_ENABLE(void)
{
INTC_ISER_WRITE(LPT_INT);
}
/*************************************************************/
//LPT Interrupt disable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void LPT_INT_DISABLE(void)
{
INTC_ICER_WRITE(LPT_INT);
}

View File

@@ -0,0 +1,817 @@
/*
******************************************************************************
* @file main.c
* @author APT AE Team
* @version V1.09
* @date 2021/07/30
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "apt32f102_syscon.h"
/* define --------------------------------------------------------------------*/
/* externs--------------------------------------------------------------------*/
/*************************************************************/
//Deinitializes the syscon registers to their default reset
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void SYSCON_RST_VALUE(void) //reset value
{
//SYSCON->IDCCR=SYSCON_IDCCR_RST;
//SYSCON->GCER=SYSCON_GCER_RST;
//SYSCON->GCDR=SYSCON_GCDR_RST;
//SYSCON->GCSR=SYSCON_GCSR_RST;
//SYSCON->CKST=SYSCON_CKST_RST;
SYSCON->RAMCHK=SYSCON_RAMCHK_RST;
SYSCON->EFLCHK=SYSCON_EFLCHK_RST;
SYSCON->SCLKCR=SYSCON_SCLKCR_RST;
//SYSCON->PCLKCR=SYSCON_PCLKCR_RST;
//SYSCON->PCER0=SYSCON_PCER0_RST;
//SYSCON->PCDR0=SYSCON_PCDR0_RST;
//SYSCON->PCSR0=SYSCON_PCSR0_RST;
//SYSCON->PCER1=SYSCON_PCER1_RST;
//SYSCON->PCDR1=SYSCON_PCDR1_RST;
//SYSCON->PCSR1=SYSCON_PCSR1_RST;
SYSCON->OSTR=SYSCON_OSTR_RST;
SYSCON->LVDCR=SYSCON_LVDCR_RST;
//SYSCON->CLCR=SYSCON_CLCR_RST;
//SYSCON->PWRCR=SYSCON_PWRCR_RST;
//SYSCON->IMER=SYSCON_IMER_RST;
//SYSCON->IMDR=SYSCON_IMDR_RST;
//SYSCON->IMCR=SYSCON_IMCR_RST;
//SYSCON->IAR=SYSCON_IAR_RST;
//SYSCON->ICR=SYSCON_ICR_RST;
//SYSCON->RISR=SYSCON_RISR_RST;
//SYSCON->MISR=SYSCON_MISR_RST;
SYSCON->EXIRT=SYSCON_EXIRT_RST;
SYSCON->EXIFT=SYSCON_EXIFT_RST;
//SYSCON->EXIER=SYSCON_EXIER_RST;
//SYSCON->EXIDR=SYSCON_EXIDR_RST;
//SYSCON->EXIMR=SYSCON_EXIMR_RST;
//SYSCON->EXIAR=SYSCON_EXIAR_RST;
//SYSCON->EXICR=SYSCON_EXICR_RST;
//SYSCON->EXIRS=SYSCON_EXIRS_RST;
SYSCON->IWDCR=SYSCON_IWDCR_RST;
SYSCON->IWDCNT=SYSCON_IWDCNT_RST;
//SYSCON->PWROPT=SYSCON_PWROPT_RST;
SYSCON->EVTRG=SYSCON_EVTRG_RST;
SYSCON->EVPS=SYSCON_EVPS_RST;
SYSCON->EVSWF=SYSCON_EVSWF_RST;
// SYSCON->UREG0=SYSCON_UREG0_RST;
// SYSCON->UREG1=SYSCON_UREG1_RST;
// SYSCON->UREG2=SYSCON_UREG2_RST;
// SYSCON->UREG3=SYSCON_UREG3_RST;
}
/*************************************************************/
//EMOSC OSTR Config
//EM_CNT:0~0X3FF
//EM_GM:0~0X1F
//EM_FLEN;EM_FLEN_DIS,EM_FLEN_EN
//EM_FLSEL:EM_FLSEL_5ns,EM_FLSEL_10ns,EM_FLSEL_15ns,EM_FLSEL_20ns
/*************************************************************/
void EMOSC_OSTR_Config(U16_T EM_CNT, U8_T EM_GM,EM_LFSEL_TypeDef EM_LFSEL_X, EM_Filter_CMD_TypeDef EM_FLEN_X, EM_Filter_TypeDef EM_FLSEL_X)
{
SYSCON->OSTR=EM_CNT|(EM_GM<<11)|EM_LFSEL_X|EM_FLEN_X|EM_FLSEL_X;
}
/*************************************************************/
//SYSCON General Control
//EntryParameter:NewState:,ENDIS_X
//NewState:ENABLE,DISABLE
//ENDIS_X:ENDIS_ISOSC,ENDIS_IMOSC,ENDIS_EMOSC,ENDIS_HFOSC
//ReturnValue:NONE
/*************************************************************/
void SYSCON_General_CMD(FunctionalStatus NewState, SYSCON_General_CMD_TypeDef ENDIS_X )
{
if (NewState != DISABLE)
{
if(ENDIS_X==ENDIS_EMOSC)
GPIOA0->CONLR=(GPIOA0->CONLR & 0XFFF00FFF)|0x00044000; //enable EMOSC PIN
SYSCON->GCER|=ENDIS_X; //enable SYSCON General Control
while(!(SYSCON->GCSR&ENDIS_X)); //check Enable?
switch(ENDIS_X)
{
case ENDIS_IMOSC:
while (!(SYSCON->CKST & ENDIS_IMOSC));
break;
case ENDIS_EMOSC:
while (!(SYSCON->CKST & ENDIS_EMOSC));
break;
case ENDIS_ISOSC:
while (!(SYSCON->CKST & ENDIS_ISOSC));
break;
case ENDIS_HFOSC:
while (!(SYSCON->CKST & ENDIS_HFOSC));
break;
case ENDIS_IDLE_PCLK:
break;
case ENDIS_SYSTICK:
break;
}
}
else
{
SYSCON->GCDR|=ENDIS_X; //disable SYSCON General Control
while(SYSCON->GCSR&ENDIS_X); //check Disable?
SYSCON->ICR|=ENDIS_X; //Clear ENDIS_X stable bit
}
}
/*************************************************************/
//Seleted system clk and seleted clk div
//EntryParameter:SYSCLK_X,HCLK_DIV_X,PCLK_DIV_X
//SYSCLK_X:SYSCLK_IMOSC,SYSCLK_EMOSC,SYSCLK_ISOSC,SYSCLK_HFOSC
//HCLK_DIV_X:HCLK_DIV_1/2/3/4/5/6/7/8/12/16/24/32/64/128/256
//PCLK_DIV_X:PCLK_DIV_1,PCLK_DIV_2,PCLK_DIV_4,PCLK_DIV_8,PCLK_DIV_16
//SystemClk_data_x:EMOSC_24M,EMOSC_16M,EMOSC_12M,EMOSC_8M,EMOSC_4M,EMOSC_36K,
//ISOSC,IMOSC,HFOSC_48M,HFOSC_24M,HFOSC_12M,HFOSC_6M
//ReturnValue:NONE
/*************************************************************/
void SystemCLK_HCLKDIV_PCLKDIV_Config(SystemCLK_TypeDef SYSCLK_X , SystemCLK_Div_TypeDef HCLK_DIV_X , PCLK_Div_TypeDef PCLK_DIV_X , SystemClk_data_TypeDef SystemClk_data_x )
{
if(SystemClk_data_x==HFOSC_48M)
{
IFC->CEDR=0X01; //CLKEN
IFC->MR=0X04|(0X00<<16); //High speed mode
}
if((SystemClk_data_x==EMOSC_24M)||(SystemClk_data_x==HFOSC_24M))
{
IFC->CEDR=0X01; //CLKEN
IFC->MR=0X02|(0X00<<16); //Medium speed mode
}
if((SystemClk_data_x==EMOSC_12M)||(SystemClk_data_x==HFOSC_12M)||(SystemClk_data_x==EMOSC_16M))
{
IFC->CEDR=0X01; //CLKEN
IFC->MR=0X01|(0X00<<16); //Low speed mode
}
if((SystemClk_data_x==EMOSC_8M)||(SystemClk_data_x==EMOSC_4M)||(SystemClk_data_x==EMOSC_36K)
||(SystemClk_data_x==IMOSC)||(SystemClk_data_x==ISOSC)||(SystemClk_data_x==HFOSC_6M))
{
IFC->CEDR=0X01; //CLKEN
IFC->MR=0X00|(0X00<<16); //Low speed mode
}
SYSCON->SCLKCR=SYSCLK_KEY | HCLK_DIV_X| SYSCLK_X;
while (!(SYSCON->CKST & (1<<8))); // waiting for sysclk stable
SYSCON->PCLKCR=PCLK_KEY|PCLK_DIV_X; //PCLK DIV 1 2 4 6 8 16
while(SYSCON->PCLKCR!=PCLK_DIV_X); //Wait PCLK DIV
}
/*************************************************************/
//clear system clk register
//ReturnValue:NONE
/*************************************************************/
void SystemCLK_Clear(void)
{
SYSCON->SCLKCR=0xd22d0000;
while(SYSCON->SCLKCR!=0);
}
/*************************************************************/
//SYSCON IMOSC SELECTE
//EntryParameter:IMOSC_SELECTE_X
//IMOSC_SELECTE_X:IMOSC_SELECTE_5556K,IMOSC_SELECTE_4194K;IMOSC_SELECTE_2097K;IMOSC_SELECTE_131K
//ReturnValue:NONE
/*************************************************************/
void SYSCON_IMOSC_SELECTE(IMOSC_SELECTE_TypeDef IMOSC_SELECTE_X)
{
//SYSCON_General_CMD(DISABLE,ENDIS_IMOSC); //disalbe IMOSC
SYSCON->OPT1 = (SYSCON->OPT1 & 0XFFFFFFFC)|IMOSC_SELECTE_X; //IMOSC CLK selected
//SYSCON_General_CMD(ENABLE,ENDIS_IMOSC); //enable IMOSC
}
/*************************************************************/
//SYSCON HFOSC SELECTE
//EntryParameter:HFOSC_SELECTE_X
//HFOSC_SELECTE_X:HFOSC_SELECTE_48M,HFOSC_SELECTE_24M;HFOSC_SELECTE_12M;HFOSC_SELECTE_6M
//ReturnValue:NONE
/*************************************************************/
void SYSCON_HFOSC_SELECTE(HFOSC_SELECTE_TypeDef HFOSC_SELECTE_X)
{
SYSCON_General_CMD(DISABLE,ENDIS_HFOSC); //disable HFOSC
SYSCON->OPT1 = (SYSCON->OPT1 & 0XFFFFFFCF)|HFOSC_SELECTE_X;
SYSCON_General_CMD(ENABLE,ENDIS_HFOSC); //enable HFOSC
}
/*************************************************************/
//WDT enable and disable
//EntryParameter:,NewState
//NewState:ENABLE,DISABLE
//ReturnValue:NONE
/*************************************************************/
void SYSCON_WDT_CMD(FunctionalStatus NewState)
{
if(NewState != DISABLE)
{
SYSCON->IWDEDR=IWDTEDR_KEY|Enable_IWDT;
while(!(SYSCON->IWDCR&Check_IWDT_BUSY));
}
else
{
SYSCON->IWDEDR=IWDTEDR_KEY|Disable_IWDT;
while(SYSCON->IWDCR&Check_IWDT_BUSY);
}
}
/*************************************************************/
//reload WDT CN
//EntryParameter:NONE
//ReturnValue: NONE
/*************************************************************/
void SYSCON_IWDCNT_Reload(void)
{
SYSCON->IWDCNT=CLR_IWDT;
}
/*************************************************************/
//IWDCNT Config
//EntryParameter:NewStateE_IWDT_SHORT,IWDT_TIME_X,IWDT_INTW_DIV_X
//NewStateE_IWDT_SHORT:ENABLE_IWDT_SHORT,DISABLE_IWDT_SHORT
//IWDT_TIME_X:IWDT_TIME_128MS,IWDT_TIME_256MS,IWDT_TIME_500MS,IWDT_TIME_1S,IWDT_TIME_2S,IWDT_TIME_3S,IWDT_TIME_4S,IWDT_TIME_8S
//IWDT_INTW_DIV_X:IWDT_INTW_DIV_1/2/3/4/4/5/6
//ReturnValue: NONE
/*************************************************************/
void SYSCON_IWDCNT_Config(IWDT_TIME_TypeDef IWDT_TIME_X , IWDT_TIMEDIV_TypeDef IWDT_INTW_DIV_X )
{
SYSCON->IWDCR=IWDT_KEY|IWDT_TIME_X|IWDT_INTW_DIV_X;
}
/*************************************************************/
//LVD Config and set LVD INT
//EntryParameter:X_LVDEN,INTDET_LVL_X,RSTDET_LVL_X,X_LVD_INT
//X_LVDEN:ENABLE_LVDEN,DISABLE_LVDEN
//INTDET_LVL_X:INTDET_LVL_1_8V,INTDET_LVL_2_1V,INTDET_LVL_2_5V,INTDET_LVL_2_9V,INTDET_LVL_3_3V,INTDET_LVL_3_7V,INTDET_LVL_4_1V,INTDET_LVL_4_5V
//RSTDET_LVL_X:RSTDET_LVL_1_6V,RSTDET_LVL_2_0V,RSTDET_LVL_2_4V,RSTDET_LVL_2_8V,RSTDET_LVL_3_2V,RSTDET_LVL_3_6V,RSTDET_LVL_4_0V,RSTDET_LVL_4_4V
//X_LVD_INT:ENABLE_LVD_INT,DISABLE_LVD_INT
//INTDET_POL_X:INTDET_POL_fall,INTDET_POL_X_rise,INTDET_POL_X_riseORfall
//ReturnValue: NONE
/*************************************************************/
void SYSCON_LVD_Config(X_LVDEN_TypeDef X_LVDEN , INTDET_LVL_X_TypeDef INTDET_LVL_X , RSTDET_LVL_X_TypeDef RSTDET_LVL_X , X_LVD_INT_TypeDef X_LVD_INT , INTDET_POL_X_TypeDef INTDET_POL_X)
{
//SYSCON->LVDCR=LVD_KEY;
SYSCON->LVDCR=LVD_KEY|X_LVDEN|INTDET_LVL_X|RSTDET_LVL_X|X_LVD_INT|INTDET_POL_X;
}
/*************************************************************/
//LVD INT ENABLE.
//EntryParameter:NONE
//ReturnValue: NONE
/*************************************************************/
void LVD_Int_Enable(void)
{
SYSCON->ICR = LVD_INT_ST; //clear LVD INT status
SYSCON->IMER |= LVD_INT_ST;
}
/*************************************************************/
//LVD INT DISABLE.
//EntryParameter:NONE
//ReturnValue: NONE
/*************************************************************/
void LVD_Int_Disable(void)
{
SYSCON->IMDR |= LVD_INT_ST;
}
/*************************************************************/
//WDT INT ENABLE.
//EntryParameter:NONE
//ReturnValue: NONE
/*************************************************************/
void IWDT_Int_Enable(void)
{
SYSCON->ICR = IWDT_INT_ST; //clear LVD INT status
SYSCON->IMER |= IWDT_INT_ST;
}
/*************************************************************/
//WDT INT DISABLE.
//EntryParameter:NONE
//ReturnValue: NONE
/*************************************************************/
void IWDT_Int_Disable(void)
{
SYSCON->IMDR |= IWDT_INT_ST;
}
/*************************************************************/
//Reset status.
//EntryParameter:NONE
//ReturnValue: rsr_dat
//rsr_dat=0x01 power on reset
//rsr_dat=0x02 low voltage reset
//rsr_dat=0x04 ex-pin reset
//rsr_dat=0x10 wdt reset
//rsr_dat=0x40 ex clock invalid reset
//rsr_dat=0x80 cpu request reset
//rsr_dat=0x100 software reset
/*************************************************************/
U32_T Read_Reset_Status(void)
{
return (SYSCON->RSR & 0x1ff);
}
/*************************************************************/
//external trigger Mode Selection Functions
//EntryParameter:NewState,EXIPIN,EXI_tringer_mode
//NewState:ENABLE,DISABLE
//EXIPIN:EXI_PIN0/1/2/3/4/5/6/7/8/9/10/11/12/13
//EXI_tringer_mode:_EXIRT,_EXIFT
//ReturnValue: LVD detection flag
/*************************************************************/
void EXTI_trigger_CMD(FunctionalStatus NewState , SYSCON_EXIPIN_TypeDef EXIPIN , EXI_tringer_mode_TypeDef EXI_tringer_mode)
{
switch(EXI_tringer_mode)
{
case _EXIRT:
if(NewState != DISABLE)
{
SYSCON->EXIRT |=EXIPIN;
}
else
{
SYSCON->EXIRT &=~EXIPIN;
}
break;
case _EXIFT:
if(NewState != DISABLE)
{
SYSCON->EXIFT |=EXIPIN;
}
else
{
SYSCON->EXIFT &=~EXIPIN;
}
break;
}
}
/*************************************************************/
//external interrupt enable and disable
//EntryParameter:NewState,EXIPIN,* GPIOX
//* GPIOX:GPIOA,GPIOB
//EXIPIN:EXI_PIN0/1/2/3/4/5/6/7/8/9/10/11/12/13
//NewState:ENABLE,DISABLE
//ReturnValue:NONE
/*************************************************************/
void EXTI_interrupt_CMD(FunctionalStatus NewState , SYSCON_EXIPIN_TypeDef EXIPIN)
{
SYSCON->EXICR = 0X3FFF; //Claer EXI INT status
if(NewState != DISABLE)
{
SYSCON->EXIER|=EXIPIN; //EXI4 interrupt enable
while(!(SYSCON->EXIMR&EXIPIN)); //Check EXI is enabled or not
SYSCON->EXICR |=EXIPIN; // Clear EXI status bit
}
else
{
SYSCON->EXIDR|=EXIPIN;
}
}
/*************************************************************/
//GPIO EXTI interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void GPIO_EXTI_interrupt(CSP_GPIO_T * GPIOX,U32_T GPIO_IECR_VALUE)
{
GPIOX->IECR=GPIO_IECR_VALUE;
}
/*************************************************************/
//PLCK goto SLEEP mode
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void PCLK_goto_idle_mode(void)
{
asm ("doze"); // Enter sleep mode
}
/*************************************************************/
//PLCK goto SLEEP mode
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void PCLK_goto_deepsleep_mode(void)
{
SYSCON->WKCR=0X3F<<8;
asm ("stop");
}
/*************************************************************/
//EXI0 Interrupt enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI0_Int_Enable(void)
{
INTC_ISER_WRITE(EXI0_INT);
}
/*************************************************************/
//EXI0 Interrupt disable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI0_Int_Disable(void)
{
INTC_ICER_WRITE(EXI0_INT);
}
/*************************************************************/
//EXI1 Interrupt enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI1_Int_Enable(void)
{
INTC_ISER_WRITE(EXI1_INT);
}
/*************************************************************/
//EXI1 Interrupt disable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI1_Int_Disable(void)
{
INTC_ICER_WRITE(EXI1_INT);
}
/*************************************************************/
//EXI2 Interrupt enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI2_Int_Enable(void)
{
INTC_ISER_WRITE(EXI2_INT);
}
/*************************************************************/
//EXI2 Interrupt disable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI2_Int_Disable(void)
{
INTC_ICER_WRITE(EXI2_INT);
}
/*************************************************************/
//EXI3 Interrupt enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI3_Int_Enable(void)
{
INTC_ISER_WRITE(EXI3_INT);
}
/*************************************************************/
//EXI3 Interrupt disable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI3_Int_Disable(void)
{
INTC_ICER_WRITE(EXI3_INT);
}
/*************************************************************/
//EXI4 Interrupt enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI4_Int_Enable(void)
{
INTC_ISER_WRITE(EXI4_INT);
}
/*************************************************************/
//EXI4 Interrupt disable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI4_Int_Disable(void)
{
INTC_ICER_WRITE(EXI4_INT);
}
/*************************************************************/
//EXI0 Wake up enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI0_WakeUp_Enable(void)
{
INTC_IWER_WRITE(EXI0_INT);
}
/*************************************************************/
//EXI0 Wake up disable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI0_WakeUp_Disable(void)
{
INTC_IWDR_WRITE(EXI0_INT);
}
/*************************************************************/
//EXI1 Wake up enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI1_WakeUp_Enable(void)
{
INTC_IWER_WRITE(EXI1_INT);
}
/*************************************************************/
//EXI1 Wake up disable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI1_WakeUp_Disable(void)
{
INTC_IWDR_WRITE(EXI1_INT);
}
/*************************************************************/
//EXI2 Wake up enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI2_WakeUp_Enable(void)
{
INTC_IWER_WRITE(EXI2_INT);
}
/*************************************************************/
//EXI2 Wake up disable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI2_WakeUp_Disable(void)
{
INTC_IWDR_WRITE(EXI2_INT);
}
/*************************************************************/
//EXI3 Wake up enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI3_WakeUp_Enable(void)
{
INTC_IWER_WRITE(EXI3_INT);
}
/*************************************************************/
//EXI3 Wake up disable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI3_WakeUp_Disable(void)
{
INTC_IWDR_WRITE(EXI3_INT);
}
/*************************************************************/
//EXI4 Wake up enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI4_WakeUp_Enable(void)
{
INTC_IWER_WRITE(EXI4_INT);
}
/*************************************************************/
//EXI4 Wake up disable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI4_WakeUp_Disable(void)
{
INTC_IWDR_WRITE(EXI4_INT);
}
/*************************************************************/
//SYSCON Interrupt enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void SYSCON_Int_Enable(void)
{
INTC_ISER_WRITE(SYSCON_INT);
}
/*************************************************************/
//SYSCON Interrupt disable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void SYSCON_Int_Disable(void)
{
INTC_ICER_WRITE(SYSCON_INT);
}
/*************************************************************/
//SYSCON Wake up enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void SYSCON_WakeUp_Enable(void)
{
INTC_IWER_WRITE(SYSCON_INT);
}
/*************************************************************/
//set PA0.0/PA0.8 as CLO output
//EntryParameter:CLO_PA02/CLO_PA08
//ReturnValue:NONE
/*************************************************************/
void SYSCON_CLO_CONFIG(CLO_IO_TypeDef clo_io)
{
if (clo_io==CLO_PA02)
{
GPIOA0->CONLR = (GPIOA0->CONLR&0XFFFFF0FF) | 0X00000700;
}
if (clo_io==CLO_PA08)
{
GPIOA0->CONHR = (GPIOA0->CONHR&0XFFFFFFF0) | 0X00000007;
}
}
/*************************************************************/
//set CLO clk and div
//EntryParameter:clomxr/clodivr
//ReturnValue:NONE
/*************************************************************/
void SYSCON_CLO_SRC_SET(SystemClk_CLOMX_TypeDef clomxr,SystemClk_CLODIV_TypeDef clodivr)
{
SYSCON->OPT1=(SYSCON->OPT1 & 0XFFFF00FF)|(clomxr<<8)|(clodivr<<12);
}
/*************************************************************/
//SYSCON Wake up disable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void SYSCON_WakeUp_Disable(void)
{
INTC_IWDR_WRITE(SYSCON_INT);
}
/*************************************************************/
//READ CIF0 data
//EntryParameter:None
//ReturnValue:VALUE
/*************************************************************/
U32_T SYSCON_Read_CINF0(void)
{
U32_T value = 0;
value=SYSCON->CINF0;
return value;
}
/*************************************************************/
//READ CIF1 data
//EntryParameter:None
//ReturnValue:VALUE
/*************************************************************/
U32_T SYSCON_Read_CINF1(void)
{
U32_T value = 0;
value=SYSCON->CINF1;
return value;
}
/*************************************************************/
//Software_Reset
//EntryParameter:None
//ReturnValue:MCU reset
/*************************************************************/
void SYSCON_Software_Reset(void)
{
SYSCON->IDCCR=IDCCR_KEY|SWRST;
}
/*************************************************************/
//Interrupt Priority initial
//EntryParameter:00/40/80/C0
//----------------------
//CORET_INT IRQ0
//SYSCON_INT IRQ1
//IFC_INT IRQ2
//ADC_INT IRQ3
//----------------------
//EPT0_INT IRQ4
//****DUMMY IRQ5
//WWDT_INT IRQ6
//EXI0_INT IRQ7
//----------------------
//EXI1_INT IRQ8
//GPT0_INT IRQ9
//****DUMMY IRQ10
//****DUMMY IRQ11
//----------------------
//RTC_INT IRQ12
//UART0_INT IRQ13
//UART1_INT IRQ14
//UART2_INT IRQ15
//----------------------
//****DUMMY IRQ16
//I2C_INT IRQ17
//****DUMMY IRQ18
//SPI_INT IRQ19
//----------------------
//SIO_INT IRQ20
//EXI2_INT IRQ21
//EXI3_INT IRQ22
//EXI4_INT IRQ23
//----------------------
//CA_INT IRQ24
//TKEY_INT IRQ25
//LPT_INT IRQ26
//****DUMMY IRQ27
//----------------------
//BT0_INT IRQ28
//BT1_INT IRQ29
//----------------------
//ReturnValue:None
//00:Priority 0 highest
//40:Priority 1
//80:Priority 2
//C0:Priority 3 lowest
/*************************************************************/
void SYSCON_INT_Priority(void)
{
INTC_IPR0_WRITE(0XC0C0C0C0); //IQR0-3 low bit-->high bit
INTC_IPR1_WRITE(0XC0C0C0C0); //IQR4-7
INTC_IPR2_WRITE(0XC0C0C0C0); //IQR8-11
INTC_IPR3_WRITE(0XC0C0C0C0); //IQR12-15
INTC_IPR4_WRITE(0XC0C0C0C0); //IQR16-19
INTC_IPR5_WRITE(0XC0C0C0C0); //IQR20-23
INTC_IPR6_WRITE(0XC0C000C0); //IQR24-27
INTC_IPR7_WRITE(0XC0C0C0C0); //IQR28-31
}
/*************************************************************/
//Set Interrupt Priority
//EntryParameter:
//int_name:CORET_IRQ~BT1_IRQ
//int_level:0~3 0=highest 3=lowest
//ReturnValue:None
/*************************************************************/
void Set_INT_Priority(U8_T int_name,U8_T int_level)
{
U8_T i_temp,j_temp;
U32_T k_temp;
i_temp=(int_name%4)*8;
j_temp=int_name/4;
k_temp=CK801 -> IPR[j_temp]&(~(0xff<<i_temp));
CK801 -> IPR[j_temp]=k_temp|((int_level*0x40)<<(i_temp));
}
/*************************************************************/
//IO REMAP
//EntryParameter:GPIOA0(0,1,2,3,4,5,6,7) GPIOB0(2,3),GPIOA0(8,9,10,11,12,13)
//0x00=I2C_SCL 0X01=I2C_SDA 0X02=GPT_CHA 0X03=GPT_CHB
//0X04=SPI_MOSI 0X05=SPI_MISO 0X06=SPI_SCK 0X07=SPI_NSS
//0x00=UART0_RX 0X01=UART0_TX 0X02=EPT_CHAX 0X03=PT_CHBX
//0X04=PT_CHCX 0X05=PT_CHAY 0X06=PT_CHBY 0X07=PT_CHCY
//ReturnValue:NONE
/*************************************************************/
void GPIO_Remap(CSP_GPIO_T *GPIOx,uint8_t bit,IOMAP_DIR_TypeDef iomap_data)
{
U8_T i;
if(iomap_data&0x10)
{
iomap_data=iomap_data&0X0F;
if(iomap_data==0)
{
for(i=0;i<28;i+=4)
{
if((SYSCON->IOMAP1&(0xf<<i))==0)
{
SYSCON->IOMAP1=SYSCON->IOMAP1|(0xf<<i);
}
}
}
if(bit==2){SYSCON->IOMAP1=(SYSCON->IOMAP1&0xfffffff0)|iomap_data;(GPIOx)->CONLR =((GPIOx)->CONLR&0XFFFFF0FF) | 0x00000A00;}
if(bit==3){SYSCON->IOMAP1=(SYSCON->IOMAP1&0xffffff0f)|(iomap_data<<4);(GPIOx)->CONLR =((GPIOx)->CONLR&0XFFFF0FFF) | 0x0000A000;}
if(bit==8){SYSCON->IOMAP1=(SYSCON->IOMAP1&0xfffff0ff)|(iomap_data<<8);(GPIOx)->CONHR =((GPIOx)->CONHR&0XFFFFFFF0) | 0x0000000A;}
if(bit==9){SYSCON->IOMAP1=(SYSCON->IOMAP1&0xffff0fff)|(iomap_data<<12);(GPIOx)->CONHR =((GPIOx)->CONHR&0XFFFFFF0F) | 0x000000A0;}
if(bit==10){SYSCON->IOMAP1=(SYSCON->IOMAP1&0xfff0ffff)|(iomap_data<<16);(GPIOx)->CONHR =((GPIOx)->CONHR&0XFFFFF0FF) | 0x00000A00;}
if(bit==11){SYSCON->IOMAP1=(SYSCON->IOMAP1&0xff0fffff)|(iomap_data<<20);(GPIOx)->CONHR =((GPIOx)->CONHR&0XFFFF0FFF) | 0x0000A000;}
if(bit==12){SYSCON->IOMAP1=(SYSCON->IOMAP1&0xf0ffffff)|(iomap_data<<24);(GPIOx)->CONHR =((GPIOx)->CONHR&0XFFF0FFFF) | 0x000A0000;}
if(bit==13){SYSCON->IOMAP1=(SYSCON->IOMAP1&0x0fffffff)|(iomap_data<<28);(GPIOx)->CONHR =((GPIOx)->CONHR&0XFF0FFFFF) | 0x00A00000;}
}
else
{
if(iomap_data==0)
{
for(i=0;i<28;i+=4)
{
if((SYSCON->IOMAP0&(0xf<<i))==0)
{
SYSCON->IOMAP0=SYSCON->IOMAP0|(0xf<<i);
}
}
}
if(bit==0){SYSCON->IOMAP0=(SYSCON->IOMAP0&0xfffffff0)|iomap_data;(GPIOx)->CONLR =((GPIOx)->CONLR&0XFFFFFFF0) | 0x0000000A;}
if(bit==1){SYSCON->IOMAP0=(SYSCON->IOMAP0&0xffffff0f)|(iomap_data<<4);(GPIOx)->CONLR =((GPIOx)->CONLR&0XFFFFFF0F) | 0x000000A0;}
if(bit==2){SYSCON->IOMAP0=(SYSCON->IOMAP0&0xfffff0ff)|(iomap_data<<8);(GPIOx)->CONLR =((GPIOx)->CONLR&0XFFFFF0FF) | 0x00000A00;}
if(bit==3){SYSCON->IOMAP0=(SYSCON->IOMAP0&0xffff0fff)|(iomap_data<<12);(GPIOx)->CONLR =((GPIOx)->CONLR&0XFFFF0FFF) | 0x0000A000;}
if(bit==4){SYSCON->IOMAP0=(SYSCON->IOMAP0&0xfff0ffff)|(iomap_data<<16);(GPIOx)->CONLR =((GPIOx)->CONLR&0XFFF0FFFF) | 0x000A0000;}
if(bit==5){SYSCON->IOMAP0=(SYSCON->IOMAP0&0xff0fffff)|(iomap_data<<20);(GPIOx)->CONLR =((GPIOx)->CONLR&0XFF0FFFFF) | 0x00A00000;}
if(bit==6){SYSCON->IOMAP0=(SYSCON->IOMAP0&0xf0ffffff)|(iomap_data<<24);(GPIOx)->CONLR =((GPIOx)->CONLR&0XF0FFFFFF) | 0x0A000000;}
if(bit==7){SYSCON->IOMAP0=(SYSCON->IOMAP0&0x0fffffff)|(iomap_data<<28);(GPIOx)->CONLR =((GPIOx)->CONLR&0X0FFFFFFF) | 0x0A0000000;}
}
}
/******************* (C) COPYRIGHT 2018 APT Chip *****END OF FILE****/

View File

@@ -0,0 +1,403 @@
/*
******************************************************************************
* @file apt32f102_uart.c
* @author APT AE Team
* @version V1.15
* @date 2022/09/05
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "apt32f102_uart.h"
#include "apt32f102_syscon.h"
/* define --------------------------------------------------------------------*/
volatile U8_T RxDataFlag=0;
volatile U8_T TxDataFlag=0;
volatile U8_T f_Uart_send_Complete;
volatile U16_T Uart_send_Length_temp;
volatile U8_T Uart_send_Length;
volatile U8_T Uart_buffer[UART_BUFSIZE];
/* externs--------------------------------------------------------------------*/
/*************************************************************/
//UART RESET,CLEAR ALL REGISTER
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART0_DeInit(void)
{
UART0->DATA = UART_RESET_VALUE;
UART0->SR = UART_RESET_VALUE;
UART0->CTRL = UART_RESET_VALUE;
UART0->ISR = UART_RESET_VALUE;
UART0->BRDIV =UART_RESET_VALUE;
}
void UART1_DeInit(void)
{
UART1->DATA = UART_RESET_VALUE;
UART1->SR = UART_RESET_VALUE;
UART1->CTRL = UART_RESET_VALUE;
UART1->ISR = UART_RESET_VALUE;
UART1->BRDIV =UART_RESET_VALUE;
}
void UART2_DeInit(void)
{
UART2->DATA = UART_RESET_VALUE;
UART2->SR = UART_RESET_VALUE;
UART2->CTRL = UART_RESET_VALUE;
UART2->ISR = UART_RESET_VALUE;
UART2->BRDIV =UART_RESET_VALUE;
}
/*************************************************************/
//UART0 Interrupt enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART0_Int_Enable(void)
{
UART0->ISR=0x0F; //clear UART0 INT status
INTC_ISER_WRITE(UART0_INT); //INT Vector Enable UART0/1 Interrupt in CK802
}
/*************************************************************/
//UART0 Interrupt enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART0_Int_Disable(void)
{
INTC_ICER_WRITE(UART0_INT); //INT Vector Enable UART0/1 Interrupt in CK802
}
/*************************************************************/
//UART1 Interrupt enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART1_Int_Enable(void)
{
UART1->ISR=0x0F; //clear UART1 INT status
INTC_ISER_WRITE(UART1_INT); //INT Vector Enable UART0/1 Interrupt in CK802
}
/*************************************************************/
//UART1 Interrupt Disable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART1_Int_Disable(void)
{
INTC_ICER_WRITE(UART1_INT); //INT Vector Enable UART0/1 Interrupt in CK802
}
/*************************************************************/
//UART1 Interrupt enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART2_Int_Enable(void)
{
UART2->ISR=0x0F; //clear UART1 INT status
INTC_ISER_WRITE(UART2_INT); //INT Vector Enable UART0/1 Interrupt in CK802
}
/*************************************************************/
//UART1 Interrupt Disable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART2_Int_Disable(void)
{
INTC_ICER_WRITE(UART2_INT); //INT Vector Enable UART0/1 Interrupt in CK802
}
/*************************************************************/
//UART0 Wake up enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART0_WakeUp_Enable(void)
{
INTC_IWER_WRITE(UART0_INT);
}
/*************************************************************/
//UART0 Wake up enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART0_WakeUp_Disable(void)
{
INTC_IWDR_WRITE(UART0_INT);
}
/*************************************************************/
//UART0 Wake up enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART1_WakeUp_Enable(void)
{
INTC_IWER_WRITE(UART1_INT);
}
/*************************************************************/
//UART0 Wake up enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART1_WakeUp_Disable(void)
{
INTC_IWDR_WRITE(UART1_INT);
}
/*************************************************************/
//UART0 Wake up enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART2_WakeUp_Enable(void)
{
INTC_IWER_WRITE(UART2_INT);
}
/*************************************************************/
//UART0 Wake up enable
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART2_WakeUp_Disable(void)
{
INTC_IWDR_WRITE(UART2_INT);
}
/*************************************************************/
//UART IO Init
//EntryParameter:IO_UARTX,UART_IO_G
//IO_UARTX:IO_UART0,IO_UART1
//UART_IO_G:0 1
//ReturnValue:NONE
/*************************************************************/
void UART_IO_Init(UART_NUM_TypeDef IO_UART_NUM , U8_T UART_IO_G)
{
if (IO_UART_NUM==IO_UART0)
{
if(UART_IO_G==0)
{
GPIOA0->CONLR = (GPIOA0->CONLR&0XFFFFFF00) | 0x00000044; //PA0.1->RXD0, PA0.0->TXD0
}
else if(UART_IO_G==1)
{
GPIOA0->CONLR = (GPIOA0->CONLR&0XFF0FFFFF) | 0x00700000; //PA0.5->RXD0, PA0.12->TXD0
GPIOA0->CONHR = (GPIOA0->CONHR&0XFFF0FFFF) | 0x00070000;
}
}
if (IO_UART_NUM==IO_UART1)
{
if(UART_IO_G==0)
{
GPIOB0->CONLR = (GPIOB0->CONLR&0XFFFFFFF0) | 0x00000007; //PA0.13->RXD1, PB0.0->TXD1
GPIOA0->CONHR = (GPIOA0->CONHR&0XFF0FFFFF) | 0x00700000;
}
else if(UART_IO_G==1)
{
GPIOA0->CONLR = (GPIOA0->CONLR&0XFFF00FFF) | 0X00077000; //PA0.4->RXD1, PA0.3->TXD1
}
else if(UART_IO_G==2)
{
GPIOA0->CONHR = (GPIOA0->CONHR&0X00FFFFFF) | 0X77000000; //PA0.15->RXD1, PA0.14->TXD1
}
}
if (IO_UART_NUM==IO_UART2)
{
if(UART_IO_G==0)
{
GPIOA0->CONLR = (GPIOA0->CONLR&0XFFFFFF00) | 0x00000077; //PA0.0->RXD2, PA0.1->TXD2
}
else if(UART_IO_G==1)
{
GPIOA0->CONLR = (GPIOA0->CONLR&0X00FFFFFF) | 0X77000000; //PA0.7->RXD2, PA0.6->TXD2
}
else if(UART_IO_G==2)
{
GPIOB0->CONLR = (GPIOB0->CONLR&0XFF00FFFF) | 0X00660000; //PB0.5->RXD2, PB0.4->TXD2
}
}
}
/*************************************************************/
//UART Init
//EntryParameter:UART0,UART1,UART2 ,baudrate_u16
//e.g:
//sys_clk@24MHz, 24/4(div)=6MHz, 6000000/115200bps=52,baudrate_u16=52
//sys_clk@24MHz, 24/2(div)=12MHz, 12000000/115200bps=104,baudrate_u16=104
//ReturnValue:NONE
/*************************************************************/
void UARTInit(CSP_UART_T *uart,U16_T baudrate_u16,UART_PAR_TypeDef PAR_DAT)
{
// Set Transmitter Enable
CSP_UART_SET_CTRL(uart, UART_TX | UART_RX | PAR_DAT | UART_TX_DONE_INT);
// Set Baudrate
CSP_UART_SET_BRDIV(uart, baudrate_u16);
}
/*************************************************************/
//UART init and enable RX,TX interrupt
//EntryParameter:UART0,UART1,UART2 ,baudrate_u16
//ReturnValue:NONE
/*************************************************************/
void UARTInitRxTxIntEn(CSP_UART_T *uart,U16_T baudrate_u16,UART_PAR_TypeDef PAR_DAT)
{
// Set Transmitter Enable
CSP_UART_SET_CTRL(uart, UART_TX | UART_RX | UART_RX_INT | UART_TX_INT | PAR_DAT | UART_TX_DONE_INT);
// Set Baudrate
CSP_UART_SET_BRDIV(uart, baudrate_u16);
}
/*************************************************************/
//UART init and enable RX interrupt
//EntryParameter:UART0,UART1,UART2 ,baudrate_u16
//ReturnValue:NONE
/*************************************************************/
void UARTInitRxIntEn(CSP_UART_T *uart,U16_T baudrate_u16,UART_PAR_TypeDef PAR_DAT)
{
// Set Transmitter Enable
CSP_UART_SET_CTRL(uart, UART_TX | UART_RX | UART_RX_INT |PAR_DAT);
// Set Baudrate
CSP_UART_SET_BRDIV(uart, baudrate_u16);
}
/*************************************************************/
//UART Close
//EntryParameter:UART0,UART1,UART2
//ReturnValue:NONE
/*************************************************************/
void UARTClose(CSP_UART_T *uart)
{
// Set Transmitter Disable
CSP_UART_SET_CTRL(uart, 0x00);
}
/*************************************************************/
//UART TX Byte loop send
//EntryParameter:UART0,UART1,UART2,txdata_u8
//ReturnValue:NONE
/*************************************************************/
void UARTTxByte(CSP_UART_T *uart,U8_T txdata_u8)
{
unsigned int DataI;
// Write the transmit buffer
CSP_UART_SET_DATA(uart,txdata_u8);
do
{
DataI = CSP_UART_GET_SR(uart);
DataI = DataI & UART_TX_FULL;
}
while(DataI == UART_TX_FULL); //Loop when tx is full
}
/*************************************************************/
//UART Transmit
//EntryParameter:UART0,UART1,UART2,sourceAddress_u16,length_u16
//ReturnValue:NONE
/*************************************************************/
void UARTTransmit(CSP_UART_T *uart,U8_T *sourceAddress_u16,U16_T length_u16)
{
unsigned int DataI,DataJ;
for(DataJ = 0;DataJ < length_u16 ;DataJ ++)
{
CSP_UART_SET_DATA(uart,*sourceAddress_u16++);
do{
DataI = CSP_UART_GET_SR(uart);
DataI = DataI & UART_TX_FULL;
SYSCON_IWDCNT_Reload();
}while(DataI == UART_TX_FULL); //Loop when tx is full
SYSCON_IWDCNT_Reload();
}
}
/*************************************************************/
//UART INT Transmit
//EntryParameter:
//ReturnValue:NONE
/*************************************************************/
void UARTTTransmit_data_set(CSP_UART_T *uart )
{
if(!f_Uart_send_Complete)
{
f_Uart_send_Complete=1;
Uart_send_Length_temp++;
CSP_UART_SET_DATA(uart,Uart_buffer[0]);
}
}
void UARTTransmit_INT_Send(CSP_UART_T *uart )
{
if(f_Uart_send_Complete)
{
if(Uart_send_Length_temp>=Uart_send_Length)
{
f_Uart_send_Complete=0;
Uart_send_Length_temp=0;
}
else
{
CSP_UART_SET_DATA(uart,Uart_buffer[Uart_send_Length_temp++]);
}
}
}
/*************************************************************/
//UART RX Byte
//EntryParameter:UART0,UART1,UART2,Rxdata_u16
//ReturnValue:NONE
/*************************************************************/
U16_T UARTRxByte(CSP_UART_T *uart,U8_T *Rxdata_u16)
{
unsigned int DataI;
DataI = CSP_UART_GET_SR(uart);
DataI = DataI & UART_RX_FULL;
if(DataI != UART_RX_FULL) //Loop when rx is not full
return FALSE;
else
{
*Rxdata_u16 = CSP_UART_GET_DATA(uart);
return TRUE;
}
}
/*************************************************************/
//UART RX Return Byte
//EntryParameter:UART0,UART1,UART2
//ReturnValue:(uart)->DATA
/*************************************************************/
U8_T UART_ReturnRxByte(CSP_UART_T *uart)
{
RxDataFlag = FALSE;
while(RxDataFlag != TRUE);
return CSP_UART_GET_DATA(uart);
}
/*************************************************************/
//UART Receive
//EntryParameter:UART0,UART1,UART2destAddress_u16length_u16
//ReturnValue:FALSE/TRUE
/*************************************************************/
U16_T UARTReceive(CSP_UART_T *uart,U8_T *destAddress_u16,U16_T length_u16)
{
unsigned int DataI,DataJ,LoopTime;
DataJ = 0;
LoopTime = 0;
do{
DataI = CSP_UART_GET_SR(uart);
DataI = DataI & UART_RX_FULL;
if(DataI == UART_RX_FULL) //Loop when rx is full
{
*destAddress_u16++ = CSP_UART_GET_DATA(uart);
DataJ++;
LoopTime = 0;
}
if(LoopTime ++ >= 0xfff0)
return FALSE;
}while(DataJ < length_u16);
return TRUE;
}

View File

@@ -0,0 +1,90 @@
/*
******************************************************************************
* @file apt32f102_wwdt.c
* @author APT AE Team
* @version V1.08
* @date 2021/06/21
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "apt32f102_wwdt.h"
/*************************************************************/
//WWDT RESET CLEAR ALL REGISTER
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void WWDT_DeInit(void)
{
WWDT->CR = 0x000000FF;
WWDT->CFGR = 0x000000FF;
WWDT->RISR = WWDT_RESET_VALUE;
WWDT->MISR = WWDT_RESET_VALUE;
WWDT->IMCR = WWDT_RESET_VALUE;
WWDT->ICR = WWDT_RESET_VALUE;
}
/*************************************************************/
//WWDT CONFIG
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void WWDT_CONFIG(WWDT_PSCDIV_TypeDef PSCDIVX,U8_T WND_DATA,WWDT_DBGEN_TypeDef DBGENX)
{
WWDT->CFGR =WND_DATA;
WWDT->CFGR |= PSCDIVX |DBGENX;
}
/*************************************************************/
//WWDT ENABLE/DISABLE
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void WWDT_CMD(FunctionalStatus NewState)
{
if (NewState != DISABLE)
{
WWDT->CR |= 0x01<<8;
}
else
{
WWDT->CR &= 0xfffffeff;
}
}
/*************************************************************/
//WWDT load data
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void WWDT_CNT_Load(U8_T cnt_data)
{
WWDT->CR |= cnt_data; //SET
}
/*************************************************************/
//WWDT INT ENABLE/DISABLE
//EntryParameter:NONE
//ReturnValue: NONE
/*************************************************************/
void WWDT_Int_Config(FunctionalStatus NewState)
{
if (NewState != DISABLE)
{
WWDT->ICR = WWDT_EVI;
WWDT->IMCR |= WWDT_EVI;
INTC_ISER_WRITE(WWDT_INT);
}
else
{
WWDT->IMCR &= ~WWDT_EVI; //CLR
INTC_ICER_WRITE(WWDT_INT);
}
}

201
Source/MD203F8P.mk Normal file
View File

@@ -0,0 +1,201 @@
##
## Auto Generated makefile by CDK
## Do not modify this file, and any manual changes will be erased!!!
##
## BuildSet
ProjectName :=MD203F8P
ConfigurationName :=BuildSet
WorkspacePath :=./
ProjectPath :=./
IntermediateDirectory :=Obj
OutDir :=$(IntermediateDirectory)
User :=cc
Date :=06/02/2026
CDKPath :=D:/C-Sky/CDK
ToolchainPath :=D:/C-Sky/CDKRepo/Toolchain/CKV2ElfMinilib/V3.10.29/R/
LinkerName :=csky-elfabiv2-gcc
LinkerNameoption :=
SIZE :=csky-elfabiv2-size
READELF :=csky-elfabiv2-readelf
CHECKSUM :=crc32
SharedObjectLinkerName :=
ObjectSuffix :=.o
DependSuffix :=.d
PreprocessSuffix :=.i
DisassemSuffix :=.asm
IHexSuffix :=.ihex
BinSuffix :=.bin
ExeSuffix :=.elf
LibSuffix :=.a
DebugSwitch :=-g
IncludeSwitch :=-I
LibrarySwitch :=-l
OutputSwitch :=-o
ElfInfoSwitch :=-hlS
LibraryPathSwitch :=-L
PreprocessorSwitch :=-D
UnPreprocessorSwitch :=-U
SourceSwitch :=-c
ObjdumpSwitch :=-S
ObjcopySwitch :=-O ihex
ObjcopyBinSwitch :=-O binary
OutputFile :=MD203_Boot_V05_20260206
ObjectSwitch :=-o
ArchiveOutputSwitch :=
PreprocessOnlySwitch :=-E
PreprocessOnlyDisableLineSwitch :=-P
ObjectsFileList :=$(IntermediateDirectory)/MD203F8P.txt
MakeDirCommand :=mkdir
LinkOptions := -mcpu=ck801 -nostartfiles -Wl,--gc-sections -T"$(ProjectPath)/ckcpu.ld" -pipe
LinkOtherFlagsOption := -Wl,--ckmap=$(ProjectPath)/Lst/$(OutputFile).map
IncludePackagePath :=
IncludeCPath := $(IncludeSwitch)D:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/ $(IncludeSwitch)D:/C-Sky/CDK/CSKY/csi/csi_core/include/ $(IncludeSwitch)D:/C-Sky/CDK/CSKY/csi/csi_driver/include/ $(IncludeSwitch). $(IncludeSwitch)SYSTEM/inc $(IncludeSwitch)USRCTRL/inc $(IncludeSwitch)include
IncludeAPath := $(IncludeSwitch)D:/C-Sky/CDK/CSKY/csi/csi_core/csi_cdk/ $(IncludeSwitch)D:/C-Sky/CDK/CSKY/csi/csi_core/include/ $(IncludeSwitch)D:/C-Sky/CDK/CSKY/csi/csi_driver/include/ $(IncludeSwitch). $(IncludeSwitch)SYSTEM $(IncludeSwitch)SYSTEM/inc $(IncludeSwitch)USRCTRL/inc
Libs := -Wl,--start-group -Wl,--end-group $(LibrarySwitch)_102ClkCalib_1_03
ArLibs := "lib_102ClkCalib_1_03"
PackagesLibPath :=
LibPath :=$(LibraryPathSwitch). $(PackagesLibPath)
##
## Common variables
## AR, CXX, CC, AS, CXXFLAGS and CFLAGS can be overriden using an environment variables
##
AR :=csky-elfabiv2-ar rcu
CXX :=csky-elfabiv2-g++
CC :=csky-elfabiv2-gcc
AS :=csky-elfabiv2-gcc
OBJDUMP :=csky-elfabiv2-objdump
OBJCOPY :=csky-elfabiv2-objcopy
CXXFLAGS :=-mcpu=ck801 $(PreprocessorSwitch)CONFIG_CSKY_MMU=0 $(UnPreprocessorSwitch)__CSKY_ABIV2__ -Os -g -ffunction-sections -mistack -pipe
CFLAGS :=-mcpu=ck801 $(PreprocessorSwitch)CONFIG_CSKY_MMU=0 $(UnPreprocessorSwitch)__CSKY_ABIV2__ -Os -g -ffunction-sections -mistack -pipe
ASFLAGS :=-mcpu=ck801 $(PreprocessorSwitch)CONFIG_CKCPU_MMU=0 $(UnPreprocessorSwitch)__CSKY_ABIV2__ -Wa,-gdwarf-2 -pipe
PreprocessFlags :=-mcpu=ck801 $(PreprocessorSwitch)CONFIG_CSKY_MMU=0 $(UnPreprocessorSwitch)__CSKY_ABIV2__ -Os -g -ffunction-sections -mistack -pipe
Objects0=$(IntermediateDirectory)/arch_crt0$(ObjectSuffix) $(IntermediateDirectory)/arch_mem_init$(ObjectSuffix) $(IntermediateDirectory)/arch_apt32f102_iostring$(ObjectSuffix) $(IntermediateDirectory)/FWlib_apt32f102_syscon$(ObjectSuffix) $(IntermediateDirectory)/FWlib_apt32f102_gpio$(ObjectSuffix) $(IntermediateDirectory)/FWlib_apt32f102_wwdt$(ObjectSuffix) $(IntermediateDirectory)/FWlib_apt32f102_bt$(ObjectSuffix) $(IntermediateDirectory)/FWlib_apt32f102_uart$(ObjectSuffix) $(IntermediateDirectory)/FWlib_apt32f102_ifc$(ObjectSuffix) $(IntermediateDirectory)/FWlib_apt32f102_lpt$(ObjectSuffix) \
$(IntermediateDirectory)/main$(ObjectSuffix) $(IntermediateDirectory)/mcu_initial$(ObjectSuffix) $(IntermediateDirectory)/mcu_interrupt$(ObjectSuffix) $(IntermediateDirectory)/drivers_apt32f102$(ObjectSuffix) $(IntermediateDirectory)/drivers_apt32f102_ck801$(ObjectSuffix) $(IntermediateDirectory)/SYSTEM_uart$(ObjectSuffix) $(IntermediateDirectory)/SYSTEM_eeprom$(ObjectSuffix) $(IntermediateDirectory)/SYSTEM_Bootload_fun$(ObjectSuffix) $(IntermediateDirectory)/__rt_entry$(ObjectSuffix)
Objects=$(Objects0)
##
## Main Build Targets
##
.PHONY: all
all: $(IntermediateDirectory)/$(OutputFile)
$(IntermediateDirectory)/$(OutputFile): $(Objects) Always_Link
$(LinkerName) $(OutputSwitch) $(IntermediateDirectory)/$(OutputFile)$(ExeSuffix) $(LinkerNameoption) -Wl,--ckmap=$(ProjectPath)/Lst/$(OutputFile).map @$(ObjectsFileList) $(LinkOptions) $(LibPath) $(Libs) $(LinkOtherFlagsOption)
-@mv $(ProjectPath)/Lst/$(OutputFile).map $(ProjectPath)/Lst/$(OutputFile).temp && $(READELF) $(ElfInfoSwitch) $(ProjectPath)/Obj/$(OutputFile)$(ExeSuffix) > $(ProjectPath)/Lst/$(OutputFile).map && echo ====================================================================== >> $(ProjectPath)/Lst/$(OutputFile).map && cat $(ProjectPath)/Lst/$(OutputFile).temp >> $(ProjectPath)/Lst/$(OutputFile).map && rm -rf $(ProjectPath)/Lst/$(OutputFile).temp
$(OBJCOPY) $(ObjcopySwitch) $(ProjectPath)/$(IntermediateDirectory)/$(OutputFile)$(ExeSuffix) $(ProjectPath)/Obj/$(OutputFile)$(IHexSuffix)
$(OBJDUMP) $(ObjdumpSwitch) $(ProjectPath)/$(IntermediateDirectory)/$(OutputFile)$(ExeSuffix) > $(ProjectPath)/Lst/$(OutputFile)$(DisassemSuffix)
@echo size of target:
@$(SIZE) $(ProjectPath)$(IntermediateDirectory)/$(OutputFile)$(ExeSuffix)
@echo -n checksum value of target:
@$(CHECKSUM) $(ProjectPath)/$(IntermediateDirectory)/$(OutputFile)$(ExeSuffix)
@MD203F8P.modify.bat $(IntermediateDirectory) $(OutputFile)$(ExeSuffix)
Always_Link:
##
## Objects
##
$(IntermediateDirectory)/arch_crt0$(ObjectSuffix): arch/crt0.S
$(AS) $(SourceSwitch) arch/crt0.S $(ASFLAGS) -MMD -MP -MT$(IntermediateDirectory)/arch_crt0$(ObjectSuffix) -MF$(IntermediateDirectory)/arch_crt0$(DependSuffix) $(ObjectSwitch)$(IntermediateDirectory)/arch_crt0$(ObjectSuffix) $(IncludeAPath) $(IncludePackagePath)
Lst/arch_crt0$(PreprocessSuffix): arch/crt0.S
$(CC) $(CFLAGS)$(IncludeAPath) $(PreprocessOnlySwitch) $(OutputSwitch) Lst/arch_crt0$(PreprocessSuffix) arch/crt0.S
$(IntermediateDirectory)/arch_mem_init$(ObjectSuffix): arch/mem_init.c
$(CC) $(SourceSwitch) arch/mem_init.c $(CFLAGS) -MMD -MP -MT$(IntermediateDirectory)/arch_mem_init$(ObjectSuffix) -MF$(IntermediateDirectory)/arch_mem_init$(DependSuffix) $(ObjectSwitch)$(IntermediateDirectory)/arch_mem_init$(ObjectSuffix) $(IncludeCPath) $(IncludePackagePath)
Lst/arch_mem_init$(PreprocessSuffix): arch/mem_init.c
$(CC) $(CFLAGS)$(IncludeCPath) $(PreprocessOnlySwitch) $(OutputSwitch) Lst/arch_mem_init$(PreprocessSuffix) arch/mem_init.c
$(IntermediateDirectory)/arch_apt32f102_iostring$(ObjectSuffix): arch/apt32f102_iostring.c
$(CC) $(SourceSwitch) arch/apt32f102_iostring.c $(CFLAGS) -MMD -MP -MT$(IntermediateDirectory)/arch_apt32f102_iostring$(ObjectSuffix) -MF$(IntermediateDirectory)/arch_apt32f102_iostring$(DependSuffix) $(ObjectSwitch)$(IntermediateDirectory)/arch_apt32f102_iostring$(ObjectSuffix) $(IncludeCPath) $(IncludePackagePath)
Lst/arch_apt32f102_iostring$(PreprocessSuffix): arch/apt32f102_iostring.c
$(CC) $(CFLAGS)$(IncludeCPath) $(PreprocessOnlySwitch) $(OutputSwitch) Lst/arch_apt32f102_iostring$(PreprocessSuffix) arch/apt32f102_iostring.c
$(IntermediateDirectory)/FWlib_apt32f102_syscon$(ObjectSuffix): FWlib/apt32f102_syscon.c
$(CC) $(SourceSwitch) FWlib/apt32f102_syscon.c $(CFLAGS) -MMD -MP -MT$(IntermediateDirectory)/FWlib_apt32f102_syscon$(ObjectSuffix) -MF$(IntermediateDirectory)/FWlib_apt32f102_syscon$(DependSuffix) $(ObjectSwitch)$(IntermediateDirectory)/FWlib_apt32f102_syscon$(ObjectSuffix) $(IncludeCPath) $(IncludePackagePath)
Lst/FWlib_apt32f102_syscon$(PreprocessSuffix): FWlib/apt32f102_syscon.c
$(CC) $(CFLAGS)$(IncludeCPath) $(PreprocessOnlySwitch) $(OutputSwitch) Lst/FWlib_apt32f102_syscon$(PreprocessSuffix) FWlib/apt32f102_syscon.c
$(IntermediateDirectory)/FWlib_apt32f102_gpio$(ObjectSuffix): FWlib/apt32f102_gpio.c
$(CC) $(SourceSwitch) FWlib/apt32f102_gpio.c $(CFLAGS) -MMD -MP -MT$(IntermediateDirectory)/FWlib_apt32f102_gpio$(ObjectSuffix) -MF$(IntermediateDirectory)/FWlib_apt32f102_gpio$(DependSuffix) $(ObjectSwitch)$(IntermediateDirectory)/FWlib_apt32f102_gpio$(ObjectSuffix) $(IncludeCPath) $(IncludePackagePath)
Lst/FWlib_apt32f102_gpio$(PreprocessSuffix): FWlib/apt32f102_gpio.c
$(CC) $(CFLAGS)$(IncludeCPath) $(PreprocessOnlySwitch) $(OutputSwitch) Lst/FWlib_apt32f102_gpio$(PreprocessSuffix) FWlib/apt32f102_gpio.c
$(IntermediateDirectory)/FWlib_apt32f102_wwdt$(ObjectSuffix): FWlib/apt32f102_wwdt.c
$(CC) $(SourceSwitch) FWlib/apt32f102_wwdt.c $(CFLAGS) -MMD -MP -MT$(IntermediateDirectory)/FWlib_apt32f102_wwdt$(ObjectSuffix) -MF$(IntermediateDirectory)/FWlib_apt32f102_wwdt$(DependSuffix) $(ObjectSwitch)$(IntermediateDirectory)/FWlib_apt32f102_wwdt$(ObjectSuffix) $(IncludeCPath) $(IncludePackagePath)
Lst/FWlib_apt32f102_wwdt$(PreprocessSuffix): FWlib/apt32f102_wwdt.c
$(CC) $(CFLAGS)$(IncludeCPath) $(PreprocessOnlySwitch) $(OutputSwitch) Lst/FWlib_apt32f102_wwdt$(PreprocessSuffix) FWlib/apt32f102_wwdt.c
$(IntermediateDirectory)/FWlib_apt32f102_bt$(ObjectSuffix): FWlib/apt32f102_bt.c
$(CC) $(SourceSwitch) FWlib/apt32f102_bt.c $(CFLAGS) -MMD -MP -MT$(IntermediateDirectory)/FWlib_apt32f102_bt$(ObjectSuffix) -MF$(IntermediateDirectory)/FWlib_apt32f102_bt$(DependSuffix) $(ObjectSwitch)$(IntermediateDirectory)/FWlib_apt32f102_bt$(ObjectSuffix) $(IncludeCPath) $(IncludePackagePath)
Lst/FWlib_apt32f102_bt$(PreprocessSuffix): FWlib/apt32f102_bt.c
$(CC) $(CFLAGS)$(IncludeCPath) $(PreprocessOnlySwitch) $(OutputSwitch) Lst/FWlib_apt32f102_bt$(PreprocessSuffix) FWlib/apt32f102_bt.c
$(IntermediateDirectory)/FWlib_apt32f102_uart$(ObjectSuffix): FWlib/apt32f102_uart.c
$(CC) $(SourceSwitch) FWlib/apt32f102_uart.c $(CFLAGS) -MMD -MP -MT$(IntermediateDirectory)/FWlib_apt32f102_uart$(ObjectSuffix) -MF$(IntermediateDirectory)/FWlib_apt32f102_uart$(DependSuffix) $(ObjectSwitch)$(IntermediateDirectory)/FWlib_apt32f102_uart$(ObjectSuffix) $(IncludeCPath) $(IncludePackagePath)
Lst/FWlib_apt32f102_uart$(PreprocessSuffix): FWlib/apt32f102_uart.c
$(CC) $(CFLAGS)$(IncludeCPath) $(PreprocessOnlySwitch) $(OutputSwitch) Lst/FWlib_apt32f102_uart$(PreprocessSuffix) FWlib/apt32f102_uart.c
$(IntermediateDirectory)/FWlib_apt32f102_ifc$(ObjectSuffix): FWlib/apt32f102_ifc.c
$(CC) $(SourceSwitch) FWlib/apt32f102_ifc.c $(CFLAGS) -MMD -MP -MT$(IntermediateDirectory)/FWlib_apt32f102_ifc$(ObjectSuffix) -MF$(IntermediateDirectory)/FWlib_apt32f102_ifc$(DependSuffix) $(ObjectSwitch)$(IntermediateDirectory)/FWlib_apt32f102_ifc$(ObjectSuffix) $(IncludeCPath) $(IncludePackagePath)
Lst/FWlib_apt32f102_ifc$(PreprocessSuffix): FWlib/apt32f102_ifc.c
$(CC) $(CFLAGS)$(IncludeCPath) $(PreprocessOnlySwitch) $(OutputSwitch) Lst/FWlib_apt32f102_ifc$(PreprocessSuffix) FWlib/apt32f102_ifc.c
$(IntermediateDirectory)/FWlib_apt32f102_lpt$(ObjectSuffix): FWlib/apt32f102_lpt.c
$(CC) $(SourceSwitch) FWlib/apt32f102_lpt.c $(CFLAGS) -MMD -MP -MT$(IntermediateDirectory)/FWlib_apt32f102_lpt$(ObjectSuffix) -MF$(IntermediateDirectory)/FWlib_apt32f102_lpt$(DependSuffix) $(ObjectSwitch)$(IntermediateDirectory)/FWlib_apt32f102_lpt$(ObjectSuffix) $(IncludeCPath) $(IncludePackagePath)
Lst/FWlib_apt32f102_lpt$(PreprocessSuffix): FWlib/apt32f102_lpt.c
$(CC) $(CFLAGS)$(IncludeCPath) $(PreprocessOnlySwitch) $(OutputSwitch) Lst/FWlib_apt32f102_lpt$(PreprocessSuffix) FWlib/apt32f102_lpt.c
$(IntermediateDirectory)/main$(ObjectSuffix): main.c
$(CC) $(SourceSwitch) main.c $(CFLAGS) -MMD -MP -MT$(IntermediateDirectory)/main$(ObjectSuffix) -MF$(IntermediateDirectory)/main$(DependSuffix) $(ObjectSwitch)$(IntermediateDirectory)/main$(ObjectSuffix) $(IncludeCPath) $(IncludePackagePath)
Lst/main$(PreprocessSuffix): main.c
$(CC) $(CFLAGS)$(IncludeCPath) $(PreprocessOnlySwitch) $(OutputSwitch) Lst/main$(PreprocessSuffix) main.c
$(IntermediateDirectory)/mcu_initial$(ObjectSuffix): mcu_initial.c
$(CC) $(SourceSwitch) mcu_initial.c $(CFLAGS) -MMD -MP -MT$(IntermediateDirectory)/mcu_initial$(ObjectSuffix) -MF$(IntermediateDirectory)/mcu_initial$(DependSuffix) $(ObjectSwitch)$(IntermediateDirectory)/mcu_initial$(ObjectSuffix) $(IncludeCPath) $(IncludePackagePath)
Lst/mcu_initial$(PreprocessSuffix): mcu_initial.c
$(CC) $(CFLAGS)$(IncludeCPath) $(PreprocessOnlySwitch) $(OutputSwitch) Lst/mcu_initial$(PreprocessSuffix) mcu_initial.c
$(IntermediateDirectory)/mcu_interrupt$(ObjectSuffix): mcu_interrupt.c
$(CC) $(SourceSwitch) mcu_interrupt.c $(CFLAGS) -MMD -MP -MT$(IntermediateDirectory)/mcu_interrupt$(ObjectSuffix) -MF$(IntermediateDirectory)/mcu_interrupt$(DependSuffix) $(ObjectSwitch)$(IntermediateDirectory)/mcu_interrupt$(ObjectSuffix) $(IncludeCPath) $(IncludePackagePath)
Lst/mcu_interrupt$(PreprocessSuffix): mcu_interrupt.c
$(CC) $(CFLAGS)$(IncludeCPath) $(PreprocessOnlySwitch) $(OutputSwitch) Lst/mcu_interrupt$(PreprocessSuffix) mcu_interrupt.c
$(IntermediateDirectory)/drivers_apt32f102$(ObjectSuffix): drivers/apt32f102.c
$(CC) $(SourceSwitch) drivers/apt32f102.c $(CFLAGS) -MMD -MP -MT$(IntermediateDirectory)/drivers_apt32f102$(ObjectSuffix) -MF$(IntermediateDirectory)/drivers_apt32f102$(DependSuffix) $(ObjectSwitch)$(IntermediateDirectory)/drivers_apt32f102$(ObjectSuffix) $(IncludeCPath) $(IncludePackagePath)
Lst/drivers_apt32f102$(PreprocessSuffix): drivers/apt32f102.c
$(CC) $(CFLAGS)$(IncludeCPath) $(PreprocessOnlySwitch) $(OutputSwitch) Lst/drivers_apt32f102$(PreprocessSuffix) drivers/apt32f102.c
$(IntermediateDirectory)/drivers_apt32f102_ck801$(ObjectSuffix): drivers/apt32f102_ck801.c
$(CC) $(SourceSwitch) drivers/apt32f102_ck801.c $(CFLAGS) -MMD -MP -MT$(IntermediateDirectory)/drivers_apt32f102_ck801$(ObjectSuffix) -MF$(IntermediateDirectory)/drivers_apt32f102_ck801$(DependSuffix) $(ObjectSwitch)$(IntermediateDirectory)/drivers_apt32f102_ck801$(ObjectSuffix) $(IncludeCPath) $(IncludePackagePath)
Lst/drivers_apt32f102_ck801$(PreprocessSuffix): drivers/apt32f102_ck801.c
$(CC) $(CFLAGS)$(IncludeCPath) $(PreprocessOnlySwitch) $(OutputSwitch) Lst/drivers_apt32f102_ck801$(PreprocessSuffix) drivers/apt32f102_ck801.c
$(IntermediateDirectory)/SYSTEM_uart$(ObjectSuffix): SYSTEM/uart.c
$(CC) $(SourceSwitch) SYSTEM/uart.c $(CFLAGS) -MMD -MP -MT$(IntermediateDirectory)/SYSTEM_uart$(ObjectSuffix) -MF$(IntermediateDirectory)/SYSTEM_uart$(DependSuffix) $(ObjectSwitch)$(IntermediateDirectory)/SYSTEM_uart$(ObjectSuffix) $(IncludeCPath) $(IncludePackagePath)
Lst/SYSTEM_uart$(PreprocessSuffix): SYSTEM/uart.c
$(CC) $(CFLAGS)$(IncludeCPath) $(PreprocessOnlySwitch) $(OutputSwitch) Lst/SYSTEM_uart$(PreprocessSuffix) SYSTEM/uart.c
$(IntermediateDirectory)/SYSTEM_eeprom$(ObjectSuffix): SYSTEM/eeprom.c
$(CC) $(SourceSwitch) SYSTEM/eeprom.c $(CFLAGS) -MMD -MP -MT$(IntermediateDirectory)/SYSTEM_eeprom$(ObjectSuffix) -MF$(IntermediateDirectory)/SYSTEM_eeprom$(DependSuffix) $(ObjectSwitch)$(IntermediateDirectory)/SYSTEM_eeprom$(ObjectSuffix) $(IncludeCPath) $(IncludePackagePath)
Lst/SYSTEM_eeprom$(PreprocessSuffix): SYSTEM/eeprom.c
$(CC) $(CFLAGS)$(IncludeCPath) $(PreprocessOnlySwitch) $(OutputSwitch) Lst/SYSTEM_eeprom$(PreprocessSuffix) SYSTEM/eeprom.c
$(IntermediateDirectory)/SYSTEM_Bootload_fun$(ObjectSuffix): SYSTEM/Bootload_fun.c
$(CC) $(SourceSwitch) SYSTEM/Bootload_fun.c $(CFLAGS) -MMD -MP -MT$(IntermediateDirectory)/SYSTEM_Bootload_fun$(ObjectSuffix) -MF$(IntermediateDirectory)/SYSTEM_Bootload_fun$(DependSuffix) $(ObjectSwitch)$(IntermediateDirectory)/SYSTEM_Bootload_fun$(ObjectSuffix) $(IncludeCPath) $(IncludePackagePath)
Lst/SYSTEM_Bootload_fun$(PreprocessSuffix): SYSTEM/Bootload_fun.c
$(CC) $(CFLAGS)$(IncludeCPath) $(PreprocessOnlySwitch) $(OutputSwitch) Lst/SYSTEM_Bootload_fun$(PreprocessSuffix) SYSTEM/Bootload_fun.c
$(IntermediateDirectory)/__rt_entry$(ObjectSuffix): $(IntermediateDirectory)/__rt_entry$(DependSuffix)
@$(AS) $(SourceSwitch) $(ProjectPath)/$(IntermediateDirectory)/__rt_entry.S $(ASFLAGS) $(ObjectSwitch)$(IntermediateDirectory)/__rt_entry$(ObjectSuffix) $(IncludeAPath)
$(IntermediateDirectory)/__rt_entry$(DependSuffix):
@$(CC) $(CFLAGS) $(IncludeAPath) -MG -MP -MT$(IntermediateDirectory)/__rt_entry$(ObjectSuffix) -MF$(IntermediateDirectory)/__rt_entry$(DependSuffix) -MM $(ProjectPath)/$(IntermediateDirectory)/__rt_entry.S
-include $(IntermediateDirectory)/*$(DependSuffix)

View File

@@ -0,0 +1,3 @@
@echo off
SET PATH=%Systemroot%\System32;%PATH%
forfiles.exe -P "%1" -M %2 -C "cmd /c echo %1/%2 is modified at: @fdate @ftime" | findstr modified

8
Source/Makefile Normal file
View File

@@ -0,0 +1,8 @@
.PHONY: clean All
All:
@echo "----------Building project:[ apt32f102 - BuildSet ]----------"
@cd "C:\Users\yupp.APT-HZ\Desktop\APT32F102_Release_V0_50_20190715\Source" && make -f "apt32f102.mk"
clean:
@echo "----------Cleaning project:[ apt32f102 - BuildSet ]----------"
@cd "C:\Users\yupp.APT-HZ\Desktop\APT32F102_Release_V0_50_20190715\Source" && make -f "apt32f102.mk" clean

1
Source/Obj/MD203F8P.txt Normal file
View File

@@ -0,0 +1 @@
Obj/arch_crt0.o Obj/arch_mem_init.o Obj/arch_apt32f102_iostring.o Obj/FWlib_apt32f102_syscon.o Obj/FWlib_apt32f102_gpio.o Obj/FWlib_apt32f102_wwdt.o Obj/FWlib_apt32f102_bt.o Obj/FWlib_apt32f102_uart.o Obj/FWlib_apt32f102_ifc.o Obj/FWlib_apt32f102_lpt.o Obj/main.o Obj/mcu_initial.o Obj/mcu_interrupt.o Obj/drivers_apt32f102.o Obj/drivers_apt32f102_ck801.o Obj/SYSTEM_uart.o Obj/SYSTEM_eeprom.o Obj/SYSTEM_Bootload_fun.o Obj/__rt_entry.o

Binary file not shown.

View File

@@ -0,0 +1,661 @@
:100000000C010000D6120000C6120000840100009E
:10001000CE1200008C12000084010000BE1200000D
:10002000B612000084010000840100008401000079
:1000300084010000840100008401000084010000AC
:10004000AE120000A61200009E12000096120000E0
:10005000840100008401000084010000840100008C
:10006000840100008401000084010000840100007C
:100070008401000084010000840100008E12000051
:10008000840100008401000084010000840100005C
:10009000840100008401000084010000A810000019
:1000A000D8100000840100008401000084010000D9
:1000B0008401000084010000C80F0000141000003B
:1000C000840100008401000084010000840100001C
:1000D000840100000811000050110000BC11000054
:1000E00084010000840100008401000084010000FC
:1000F000840100001C120000840100008401000043
:100100000500AA550000000000000000003000318A
:100110000032003300340035003600375B1002C077
:10012000216400C02260A83A02C020643810003266
:1001300040B1F8109F6FCF5F04338D5F003503240B
:10014000A0B41865FD0B1410C17B036C036C8FEA1F
:10015000130013100078036C036C036C036C036CC6
:100160009010436DA0B400C021602F1001C02B641B
:100170002E10003020B02E1001C02B642D10003046
:1001800020B0FA07F90700000000000090EF00E03F
:10019000F80F0020D002000060010000FC0C0000FD
:1001A00000300020FFFF0000FF0F0000EEEE000017
:1001B000EE0E0000211420B87F6C406020812141A8
:1001C000C463209801143C78221401B820B87F6CD5
:1001D0000140406020892141C463019820980214A5
:1001E0003C780000C3144474403A1F0C436D036D07
:1001F00003361869403C1A0C20A5002A403A150C19
:100200000025176D03361869403C100C20A5002A04
:10021000403A0B0C0025176D03361869403C060C5C
:1002200020A5002A00250204831468414C6C70410B
:100230004C6C2F3A090820B521B522B523B50F2AF9
:100240000F252F3AF90F233A0608032A20B5032574
:10025000233AFC0F403AE90F002A20A5403AE50F67
:10026000002A21A5403AE10F22A58314C314836D0F
:10027000076D186D03330C69403C0B0C403A080CB9
:1002800060810021002A60A60026403AFA0B831400
:100290002F3A0E08A09161918291A0B6A39161B608
:1002A00082B6A3B60F2A0F210F262F3AF40F233A56
:1002B00008086091032A032160B60326233AFA0F47
:1002C000403AE60F60810021002A60A60026F90767
:1002D000D014091029104264050C49108260FFE314
:1002E000C7FF481008100A64050C82600031FFE364
:1002F0007BFF901400000020F4250000680000201F
:08030000AC060020680000209B
:1003080048380A087A10FF32209360914C42C96835
:10031800AE3BB23B60B1771060934193806C41B3C0
:1003280043938068403AFD0F4238070802314493EE
:100338008468403AFD0F3C78023809084138FC0BC4
:10034800013144938468403AFD0FF607483807089E
:10035800083144938468403AFD0FEE075038EC0B9F
:10036800103144938468403AFD0FE6074C000020A2
:040378005C00002005
:10037C006C104D10609345B34C1046B34C1047B302
:10038C004C1050B30A3253B32B107F23003245B3B9
:10039C0046B32DB329102EB35DB35EB35FB33C7877
:1003AC005C000020FFFF0000FFFFFF0000002DD2CB
:0C03BC00FF3BFF700C070000FE03000078
:1003C800D0144038050C076CFFE39CFF90146810AC
:1003D80060934293846C42B343938468403AFD0B24
:1003E8007F230193406C21B3F20700005C000020DA
:1003F800C214483B28089D1001358094A1B40435E7
:10040800A5B4835B013C2B0C8B5B043C030C4B3B7E
:10041800070876100134609381B3003485B39410D3
:10042800106C7410406C6093803027B301402493A3
:1004380040684039FD0F3010486C28B328934A644F
:10044800FE0B8214403B030C493B0708871001351B
:100458008094A1B40235A5B44A3BD40B831001356E
:100468008094A1B4A5B4D1076000002000002DD26B
:080478005C00002000003CC301
:10048000D114036D10310030FFE3A0FF66106093BC
:10049000199384388538106C19B31030FFE336FF98
:0804A000911400005C00002033
:1004A8006C10403860937F230A0C4B1080314FB397
:1004B80025414D938468403AFD0F3C7847108031C0
:1004C8004FB325414D938468403AFD0BF707000070
:0C04D8005C00002000008778AA5587789F
:1004E4006410B43260937F2357424EB33C780000CB
:0404F4005C00002088
:1004F80044106510486C6093046C7F230DB33C78FE
:08050800000078875C00002070
:10051000C3148398C510186DD06C8C6C486CA410F3
:10052000046CA09513B5831400004BB45C0000204C
:1005300066108031609380324C60444241B15D93DB
:0C054000AB3A5DB33C7800005C0000208A
:10054C0066108031609380324C60414241B15D93C2
:0C055C00A83A5DB33C7800005C00002071
:10056800641060937F23049363100C683C78000048
:080578005C000020FF010000FF
:10058000403A040C413A0E0C3C786D1040386093B0
:100590007F234593040C486C25B3F707856845B362
:1005A000F4076710403860937F234693040C486C2F
:1005B00026B3EB07856846B3E80700005C0000201F
:1005C0006B104C1060937F2340384BB30C0C479357
:1005D000846C47B349938468403AFD0F4B93486C51
:1005E0002BB33C784893486C28B3FC075C00002090
:0405F000FF3F0000C9
:0405F4002BB03C7874
:1005F80080336F43421060B23C78000000E100E0B5
:0C0608000232621040B33C7800E100E0D8
:0C0614000232621040B33C7880E100E04C
:1006200066104710271040B341B342B343B344B3FD
:1006300045B326B347B33C7800E400E0C0C0C0C077
:04064000C000C0C076
:10064400C114624842436A1003346093C860803224
:1006540043421068C8600340FF3440930071264150
:1006640091684070486C20B381140000640000203D
:1006740075103610161040936092784B784360B230
:100684002091003361B260B161B162B262B163B210
:1006940063B164B264B165B265B166B266B107B202
:1006A4003F3007B168B268B169B269B16AB26AB180
:1006B4006BB26BB14710409260B261B262B20F3359
:1006C40063B23C784C00002048000020FFFF00008B
:0406D40044000020BE
:1006D800D1140739036D3008035906382708FFE39A
:1006E80067FD041013161A1D210000330431F02B86
:1006F800403A4094C8681E0C01328470C86C60B4DB
:10070800911408316611F5070C316611F2071031A2
:100718006511002BEE0714316411FC07F133183111
:100728007843F8071C316211E407003300310F2BBE
:10073800E0070232E3070F39E40B08290639076C92
:100748002708FFE335FD041013161A1D2100003396
:100758000431F02B403A4194C8681E0C0132847071
:10076800C86C61B4CE0708316D10F5070C316D10F7
:10077800F20710316C10002BEE0714316B10FC07D8
:10078800F13318317843F8071C316910E407003356
:1007980000310F2BE0070232E3070000FFF0FFFFF4
:1007A800FF0FFFFF0000F1FF000010FFFFFFFF0F2A
:1007B8002141033268908470C96801328470C86C22
:0407C80068B03C7861
:1007CC002141033268908470C96802328470C86C0D
:0407DC0068B03C784D
:0E07E000214101334990C470C86C69B03C7867
:1007F000C11422140F3A4F08CB6C833B403B1308C3
:100800000F2B61B80033073A6EDC03007611380C09
:100810004093619281982ED80300D06804700C6CCC
:1008200001B23704413B06080033F02B61B80433B2
:10083000EB07423B05086D1161B80833E507433B00
:1008400005086B1161B80C33DF07443B06086911DA
:10085000002B61B81033D807453B06086611002B02
:1008600061B81433D107463B0708F1337843002BB6
:1008700061B81833C907611161B81C33C5074093CB
:10088000609281982ED80300D06804700C6C00B27E
:1008900002148114133AFD0B4038140800330F2B57
:1008A000C860013BF60B503A6F1006084093629205
:1008B0004C6C22B2EE07609342932441486C22B301
:1008C000E8074238E60B0033112BC860013BE10B0F
:1008D0006510523A6093429303082841F0072C4177
:1008E000EE07000044000020FFF0FFFFFF0FFFFFB6
:0C08F0000000F1FF000010FFFFFFFF0FF1
:1008FC00D01405380D087910FFE358FC030A1018C2
:10090C001F26409360920F31C568A03B60B29014D3
:10091C0040936092F031C568A43BF9072093F03204
:10092C0060914442C968A83B60B1F2072093F03251
:10093C0060914842C968AC3BF8072093F032609153
:10094C004C42C968B03BF1072093F03260915042A1
:0C095C00C968B43BEA0700004800002016
:080968000133C47063B03C7858
:080970000133C47064B03C784F
:100978004590013385708C68403AC470030C64B0AC
:060988003C7863B0FE079D
:10098E0001334690C4708C68CA64036400743C786A
:10099E00003360B061B062B063B064B065B066B091
:0C09AE0069B06AB06BB06CB06DB03C7802
:0809BA006090A03B60B03C78A6
:0A09C2006090AC3BAE3B60B03C78A7
:1009CC00C314A498976D8398186DD06CA1904C6C3F
:0809DC00546C21B042B08314F9
:1009E400C41421148598D36D869880B88798936D24
:1009F400A898586DC098586D5C6DD46C8C6C8190BF
:0C0A0400486C046D9F6D81B001148414D7
:060A100023B044B03C7865
:100A160040396B90040C8C6C4BB03C78C9686BB059
:020A2600FD07CA
:100A280080337643421060B23C78000000E100E079
:100A380065100032609340B341B342B343B344B34B
:080A48003C7800003C00002096
:100A500065100032609340B341B342B343B344B333
:080A60003C7800003800002082
:100A680065100F32609343B380336743431060B21D
:0C0A78003C7800003C00002000E100E0A1
:100A840080336743421060B23C78000080E100E0AC
:100A940065100F32609343B380336843431060B2F0
:0C0AA4003C7800003800002000E100E079
:100AB00080336843421060B23C78000080E100E07F
:100AC0004038210840390A087711FF31409360927D
:100AD000C568A23BA63B60B21504413913087211E8
:100AE000F031409360923041C568E0312F41C46CD1
:100AF00060B2F03161922C41C568E0312B41C46C89
:100B000061B23C7841382D084039140867110F3123
:100B100040936092C5680731C46C60B2F0326211D4
:100B2000504220936191C968E0324F42C86C61B174
:100B3000E90741390C087C10FF3220934C42609148
:100B4000C968EE324B42C86C60B1DC074239DA0B3F
:100B50007510EE32209361916843684B5742E70766
:100B60004238D00B403909086F10FF314093609232
:100B7000C5687731C46CB007413909086A10EE3294
:100B8000209360916843684B5742DE074239BA0BA5
:100B90006610FF32209350426091C968CC324F42B8
:0C0BA000D30700004C000020480000209B
:100BAC0063108C6C42B024B03C7800000F0008003D
:060BBC00003362B03C783A
:100BC200D4142114C36D476D8B6D076D755C8C65F4
:100BD200030C01149414608460B7619760B8FFE35A
:100BE20082FC01326098C868403BF80BFFE37BFC53
:040BF2000024ED07E7
:100BF80067104810609348B3023243B3013206B31A
:100C080044B34493403AFE0B3C7800006000002057
:040C18005A5A5A5A70
:100C1C00C414221465118611609388B3073483B30E
:100C2C00013406B384B38493403CFE0B0221224969
:100C3C002241486020B8295821B820984A642608D7
:100C4C0006315B1048B323B3013106B324B32493AC
:100C5C004039FE0B48B3013243B306B344B34A9355
:100C6C00443AFE0B0231521048B323B3013106B3A0
:100C7C0024B32A934139FE0B48B323B306B324B3F0
:100C8C004A93423AFE0B02148414E0828182884417
:100C9C0022821C61A3823041C1985060B8458861A2
:100CAC00546020B60322CA07600000205A5A5A5AD0
:100CBC00C314003303354E64CC5A02088314403BF2
:100CCC00060C0F6D1469403C020803200F6D14696B
:0A0CDC000061808480A60023EF076A
:100CE800641040936192AC3BAE3B61B23C7800002B
:040CF80014000020C4
:100CFC00D01400E03F01FFE3F1FB00E0530400E0FF
:080D0C00610500E01F0AF80771
:100D1400D014231432320033087C62B801B860B8AE
:100D240040986198C864030C0314901462980023DB
:0C0D340062B8FFE3D7FB60980023F207D1
:100D40002314003362B801B860B840986198C86451
:100D5000030C03143C786298002362B86098002367
:020D6000F40796
:100D6400D2149412FFE386FC009401320031FFE3B5
:100D7400B3FC009401320131FFE3AEFC0094013274
:100D84000231FFE3A9FC009401320331FFE3A4FC28
:100D9400009401320431FFE39FFC009401320531D9
:100DA400FFE39AFC009401320831FFE395FC0094C0
:100DB40001320931FFE390FC009401320A31FFE370
:100DC4008BFC009401320B31FFE386FC009401326A
:100DD4000C31FFE381FC009401320D31FFE37CFC14
:100DE400009401320E31FFE377FCB3110132009419
:100DF4000F31FFE371FC009501320031FFE36CFC1D
:100E0400009501320131FFE367FC009501320231A4
:100E1400FFE362FC013200950331FFE35DFC0094C3
:100E24000031FFE3D3FC00940131FFE3CFFC0094D5
:100E34000231FFE3CBFC00940331FFE3C7FC0094D1
:100E44000431FFE3C3FC00940531FFE3BFFC0094CD
:100E54000831FFE3BBFC00940931FFE3B7FC0094C5
:100E64000A31FFE3B3FC00940B31FFE3AFFC0094C1
:100E74000C31FFE3ABFC00940D31FFE3A7FC0094BD
:100E84000E31FFE3A3FC00940F31FFE39FFC0095B8
:100E94000031FFE39BFC00950131FFE397FC0095D3
:100EA4000231FFE393FC00950331FFE38FFC9214BE
:080EB4004C0000204800002062
:100EBC00D2142414951000350094FFE36CFD0094BB
:100ECC00A1B8A0B8083300320131FFE37BFD8033B9
:100EDC00634361B800940033A3B8A2B8A0B8003241
:100EEC008031FFE37BFD013229100094FFE38CFD80
:100EFC000094FFE35EFD009402320131FFE387FDB5
:100F0C00FFE38EFD0414921408000020AC120000C4
:100F1C00D0142114FFE32EFA01310130FFE350FA13
:100F2C000030FFE3A9FA803108330032214102304E
:100F3C00FFE35EFA18310030FFE3DAFA0130FFE329
:100F4C00AFFAFFE3CBFAFFE3FDFA403360B8C031F0
:100F5C0080336443003223410030FFE3D5FAFFE3D2
:100F6C00E3FAFFE34DFB003000E0E60901149014B6
:100F7C00D0147010013140936F106AB26DB26C9244
:100F8C00C468403BFD0FFFE3C5FF00E0C901FFE370
:100F9C0043FB01310F30FFE351FBFFE3DFFEFFE3C7
:100FAC0089FF2610023000E0C10100E06B099014AB
:0C0FBC005C000020FFFFFF0F2C1B00005A
:100FC8006014621471100231609343938468403A4C
:100FD800040C23B363146114439301318468403AC9
:100FE800F90B439308318468403AF40B4393043176
:100FF8008468403AEF0B803223934C42486840396A
:0C100800EA0F43B3E80700003C000020A2
:1010140060146214D0147F10023160934393846887
:10102400403A0B0C23B30093007400E09D02EED908
:101034000020011463146114239301324868403979
:101044000D0C43B3741040B374106093413BF00B28
:1010540053106092002360B2EB0743930831846815
:10106400403A030C23B3E407439304318468403AC1
:10107400FA0B803103932C4104684038D90F23B311
:10108400651040B365106093413BD20B4510E207F5
:101094003800002074000020780000207C0000202C
:0410A40080000020A8
:1010A800601462146A10013160937F234C93846842
:1010B800403A040C2BB36314611480322C934942D8
:1010C80048684039F90F4BB3F70700005C0000206F
:1010D800601462146A10023160937F234C93846811
:1010E800403A040C2BB36314611480322C934A42A7
:1010F80048684039F90F4BB3F70700005C0000203F
:10110800601462147010043160937F234C938468D8
:10111800403A040C2BB3631461144C93083184686F
:10112800403AF90B80322C934B4248684039030C03
:101138004BB3F20780322C934C4248684039F90B84
:08114800EB0700005C00002031
:1011500060146214D014791080326093C8602C93AC
:10116000103040684039030C0BB309042C93203035
:1011700040684039090C0BB300E07403EED900203D
:101180000114631461142C93403040684039ED0B16
:101190002C9348684039030C4BB3F10780322C93F1
:1011A000414248684039F90B80322C9342424868EA
:0C11B0004039F30BE40700005C00002055
:1011BC00601462147610803260937F232C93434228
:1011CC0048684039030C4BB31F0480322C934442C3
:1011DC0048684039F90B80322C93454248684039B5
:1011EC00F30B80322C93464248684039ED0B803229
:1011FC002C93474248684039E70B80322C93484285
:10120C0048684039E10B6314611400005C00002055
:10121C0060146214D0147910013160934C9384687B
:10122C00403A030C2DB318044C9302318468403AB5
:10123C00180C2DB372104083002288742193002166
:10124C00093A40A321B3080C003240A34293002278
:10125C0042B300E0DB02EED90020011463146114E8
:10126C004C9304318468403ADE0B4C93083184680B
:10127C00403AD90BF107000008000020680000205C
:02128C003C78AC
:08128E00601462146314611482
:0812960060146214631461147A
:08129E00601462146314611472
:0812A60060146214631461146A
:0812AE00601462146314611462
:0812B60060146214631461145A
:0812BE00601462146314611452
:0812C60060146214631461144A
:0812CE00601462146314611442
:0812D60060146214631461143A
:1012E000C11400C0236080C02070461001344092B9
:1012F00084B2BF3B00B221B203C0206402928114C9
:0413000000000020C9
:10130400C11400C0236080C0207046100134409294
:1013140084B2BF3B00B221B203C0206403928114A3
:0413240000000020A5
:0613280080C120743C7836
:06132E0080C020703C7835
:10133400D2144138476D040C42380F0C92149B327E
:10134400424200310F11FFE34DF7AA32414200310E
:101354000D11FFE347F7F3079B32424200310911B5
:10136400FFE340F7AA328911414200310611FFE33D
:1013740039F700940531FFE31FFA053205310230D5
:10138400FFE336FA0530FFE3B9FA013220310130C8
:10139400FFE3F6F8003220310130FFE3F1F82031A9
:1013A4000130FFE30DF900942031FFE323F9FFE35B
:1013B40023F9FFE34DFB02310230FFE381FB74109C
:1013C400003200933310FFE3F1FBFFE363FB721081
:1013D40003314093711052B32C23013240A3701097
:1013E4000A3240B300940032A2B3FFE375F90094CB
:1013F4000331FFE3F5F900940331FFE3B9FA9F07E2
:1014040088000020F402002048000020380000205A
:10141400204E000070000020F4030020E8020020A9
:1014240096336743C264220C0C640F0C96336543F5
:10143400C264180C96336643C264160C9633644334
:10144400C2641B080E100F04E1336943C264100C1C
:10145400FA336B43C2640F0C6A10C2640E080A109C
:1014640002040A103C780A10FE070A10FC07D03068
:101474000140F9076230F7070030F507204E0000FD
:10148400C0DA000082030000102700008813000067
:041494003D0A00000D
:1014980096336743C2641C0C0C640F0C9633654387
:1014A800C264090C96336643C264120C96336443D3
:1014B800C26410080A300D04E1336943C2640A0C9F
:1014C800FA336B43C264060C6410C2640308053027
:0C14D8003C780330FE070000C0DA000082
:1014E400D314836D076C076DFFE39CFF4038436D95
:1014F400030801309314413E170C423EFC0BD710F5
:101504000096FFE35BFBFFE3D3FAFFE3A1FA0231AA
:101514000230FFE3D5FA00960032576CFFE346FB36
:10152400FFE3B8FA1404CE100096FFE347FBFFE391
:10153400A9FAFFE381FA02310130FFE3C1FA009610
:101544000032576CFFE332FBFFE38EFA136CFFE3C8
:10155400A3FF641000B3CF07380000203C00002034
:04156400E802002079
:10156800C1146E109532208B41424964030C00323D
:1015780040AB208B4A10825980AB4860691000A1AB
:10158800209399336243C86020B3963362438C60DA
:10159800013360A281140000E202002088000020CC
:0415A80070000020AF
:1015AC00D31494106084413B22080C35D210506146
:1015BC0040956096CA604294C8641908FFE326F807
:1015CC006096418C2D100E1060B5FFE34BF6618CCC
:1015DC0062AC003361AC60A4FFE312F86494403B4E
:1015EC00A65CCE5C040C228C0510CD7B9314000001
:1015FC00E00200207000002088000020B4010020D0
:10160C00D414231401B820B800358B11EB1160945D
:10161C00413B420C6A11C083403E4A08E71162B854
:10162C00FFE381FE03310097FFE39AF901326298E0
:10163C0042A340A3012341B462B8C2B4C3B4FFE3D4
:10164C006FFE4011009221984098FFE3B6FA629821
:10165C0061B86430FFE370FB002563334C65080C04
:10166C00629440988D64F60B63948D64F30BFFE3E6
:10167C005AFE00970331FFE377F9003361B472101F
:10168C004093721052B36198003240A3FFE348FEBE
:10169C001B6C031494146430FFE34EFB002564337D
:1016AC00D664B90F03310097FFE362F9B107013635
:1016BC00F0070000740000204800002020040020E7
:0C16CC003800002070000020F403002013
:1016D800D4146359CD749710D064240C413A030C88
:1016E80001309414B41040856285C8641D089310B5
:1016F800D3106096F494DE60F194CC651708403AF4
:10170800070C53946096CA6050948C64EA0FFFE308
:101718007BFF4038E60B609673B46085002360A5B4
:10172800E1070430DF070330DD070230DB07000084
:101738002B01000023040020F40300207000002087
:10174800D4142114CF6D669860B863594B6DCD746D
:101758005310C864836D076D1F0C963241420031E7
:101768001010FFE33DF5936C5B6C0E10FFE37CF506
:101778006D1031328C60A0A2409850B330328C602A
:10178800013120A22F328C60003120A29AABF1B334
:101798004610409254B30114941400002B01000029
:0C17A800F4020020F40300207000002078
:1017B4009932651041428C600131FF2320A20EB39F
:0817C4003C780000F402002053
:1017CC00D2148F106084413B1908AE103A8D01324F
:1017DC000D10FFE37DFF0128007401380F08003362
:1017EC0060A46284413B012409082E950230FFE37A
:1017FC0075FE003360A400336EB5921424040020EF
:08180C00F4030020F4020020A7
:10181400D1148F106084403B180C6284413B150C3A
:10182400FFE385FD6184413B0E086A102A10409352
:1018340072918E60691060932F91C460C864030C28
:10184400003360A4FFE370FD911400002004002025
:0C18540070000020F4030020E8020020D7
:10186000D214FFE366FD92100133B21060A40A3176
:10187000711040930093739552B50E60FFE344FDE1
:101880000FB50531AD100095FFE383F84138060828
:10189000013361A4FFE34AFD921400950531FFE393
:1018A00078F84038F80B0033F507000020040020DA
:0C18B000F403002070000020480000201D
:0C18BC00231462B841B820B803143C7833
:1018C800C36C406000304E6402083C784083086076
:0618D80000740023F90773
:1018E000D1143214036D003340320031021860B855
:1018F0006EDC0210FFE378F48030BB6C04311540DD
:10190000FFE3DEF94ED80000AE33CA64040C0130A8
:10191000121491142ED802006ED8010028414C6C8C
:1019200040334C64F50F021A0910FFE3C9F9253161
:101930000218FFE3CBFF6ED803000E64E90B2532DB
:101940000219136CFFE394F40030E3070400001065
:10195000D01432140033512B6EDC000025336EDCC2
:10196000010000336EDC0200011B436C25320F6C5A
:10197000FFE37EF42531FFE3A9FF0EDC0300803096
:101980001540BB6C2931FFE34BF900301214901461
:10199000D214003360A061A063A0053362A0B258E6
:1019A0000F3364A0036D20320031176CFFE31CF489
:1019B0000F322510176CFFE35BF4136CFFE3CAFFD3
:0819C00092140000C425000090
:1019C800D0146280453B050C053362A0FFE3BEFFDF
:0219D800901469
:1019DC00D0146C100132609341B34593A13AB03AE4
:1019EC0045B30A30FFE392F90710FFE375FF403867
:1019FC0005100408FFE3E4FF9014FFE3C5FFFD07A7
:081A0C006000002048040020E6
:101A1400C114003347100029457486640408CE6C51
:101A24000C7481148080D060CC740020F507000011
:041A3400FFFF0000B0
:101A3800C314C36C4060AC100C104E6402088314CD
:101A48004083096C01360832036D1869403C01482F
:101A5800030C156C0174002A8974403AF60B0023B4
:0C1A6800ED07000001A0FFFFFFFF0000E1
:101A7400D414211480377410E1474083C06161831A
:101A8400B88F66A0072571106383557567A06280BF
:101A94006BA0684D44A069A041800033CE58036D0B
:101AA40045A0A8A06AA0576C1B6CFFE3B3FF0AA46F
:101AB4006432798F576C40B81B6C0132FFE344FEEB
:0C1AC40001149414480400207004002059
:101AD000D214A034FF358644A845FFE305F5136C06
:0C1AE000FF24FFE38BF85265F90B921411
:101AEC00D21480349544A610FFE3F8F4136C3F2411
:101AFC00FFE37EF85265F90B921400000008001009
:0C1B0C00D014FF300840FFE373F8901481
:101B18006310409363104EB33C78000070000020BF
:041B28007005002024
:101B2C00D4143F172C14C5806480C8468C6D5A643D
:101B3C00036D030C00E8E3025B6CFFE367FF4038C6
:101B4C0000B8030C00E8DE0261848E74DF3ABA013F
:101B5C0021850F323B0CC868C664C36D0033C1616C
:101B6C0062B80133DC7561B86002428421838664FB
:101B7C00060CFF314A64030C00E8C702438420833F
:101B8C008664060CFF314A64030C00E8C10263B89A
:101B9C00FFE3BEFF6084078463A541840F3102A577
:101BAC00BF288468093841A5030C00E8A502639896
:101BBC00413FFFE305F324008A009C00C700EC00C2
:101BCC001F0163018201B601EA018C6886640F086B
:101BDC004032C868403B110C6B854784CA64C364AF
:101BEC00CC7462B8003361B80037BF07003361B8FA
:101BFC00013362B80137B907003362B8F50718082A
:101C0C000B3E160C498428844842846C28030D91A1
:101C1C000A64090C093A580C4DB1FA304D91024046
:101C2C00807C4DB14B840A844842806C59A94298FF
:101C3C00413A47084CA542834DA543834EA50C322F
:101C4C004FA5540340927F22399230A539922849EE
:101C5C0031A53992304932A53992384933A53A9297
:101C6C0034A53A92284935A53A92304936A53A928C
:101C7C00384937A53B9238A53B92284939A53B9268
:101C8C0030493AA55B92584A5BA5248320324864BC
:101C9C00020844A364837CA5203333135113002B17
:101CAC00CC740581403B1DA200210022F90B6F135F
:101CBC00313258AB6198403B04080A13FFE3D6FE5F
:101CCC001F170C1494140A32A8078D086884423B21
:101CDC00030C00E811026513C8324DB34513409252
:101CEC004EB300336CA56113013258AB7C047B08F6
:101CFC000B3E790CC9842884C8464B84846D6431AE
:101D0C00847D7A1228422DB34A84846C093A150CCE
:101D1C004DB3FA314D932241847C1B6C4DB3FFE3E0
:101D2C007DFB40380208E7056198413B08085B6C75
:101D3C000130FFE3D3FBD6070A32EB071B6CFFE342
:101D4C0035FDD00750080D3E4E0C2D846C84284177
:101D5C004C6C4039C90F0D2E8665C60B0B846A84FA
:101D6C0008400C6C084069840C6C084068840C6C4E
:101D7C0061120C64020CBF05FF33445868438C6439
:101D8C000208B905936C0D22FFE344F7AB072B084F
:101D9C000D3E290CCD846C84C8468C6D8C3361430C
:101DAC008C65270C403E0208A6050B846A8408400B
:101DBC000C6C084069840C6C084068840C6C6E11C7
:101DCC000C64020C98058033585869438C640208E3
:101DDC00920500335B6C49116CA50026FFE36AF792
:101DEC006211D8AB6198403B6C0B6298413B650724
:101DFC008F6DDC07F80B083EF60F6884413B2A0810
:101E0C000E3EF10F0B329060618220826843C46CED
:101E1C004A846843C86C684309840C6C6E844D8496
:101E2C006843C86C403B670D5310086464098032EA
:101E3C002C58494248645F0DFF320968036DC05B42
:101E4C009065500BFFE34AF3136CFFE3D1F6FF24CC
:101E5C00F807423B5009FFE337FEFFE353FE42070E
:101E6C007004002048040020700500205C00002055
:101E7C0070000020FF2700007D040020B40B0D3EF5
:101E8C00B20F2D846C8428414C6C40392D0F0D2ED3
:101E9C0086652A0B0B846A8408400C6C08406984A4
:101EAC000C6C084068840C6C803375430C606503C3
:101EBC000C642109445866036307950B0D3E930F80
:101ECC006B84CA846843D86C6843C984D86C6843F3
:101EDC00C884D86C8036D5468C616C848D848844DB
:101EEC000C6DD36C9B6C31030030FFE3E3FC8C3343
:101EFC0061430C65150C403CFE0C78038C65FB08AB
:101F0C00505E79038C64F70C0033536C5A031B6CD2
:101F1C006CA50024FFE3CEF67C0398AB64070F6D31
:101F2C00ED07610B083E5F0F6884413B2A080E3EAB
:101F3C005A0F0B329060618220826843C46C4A84D1
:101F4C006843C86C68434984C86C80325542C86089
:101F5C004E842D844842846CC85B235E53134864C2
:101F6C00CA0C4D13C864C7083F32C9680F6D906521
:101F7C00B90AFFE3B3F2136CFFE33AF63F24F80718
:101F8C00423BB908FFE3AEFDAD062D0B113E2B0F06
:101F9C008032414200310613FFE320F12B844513BC
:101FAC0028413EB26A84C46C28433EB26984C46C36
:101FBC0068437EB228844C6C3EB26F8468437FB217
:101FCC00076C2E844C6C28413FB26D84C46C684302
:101FDC007FB22C84C46C7FB23184E84140314860BC
:101FEC00FAA923B830845C6CE3983AAFF2121C6403
:101FFC0044B881085112C8647E0CC0647C088032DD
:10200C00424286647808C2604D128C68403A694B33
:10201C00020C0023614343987BAA63985B8B1231BB
:10202C00645A8E65C212640850600A5EFFE31AF1AE
:10203C0064989E93003344985F929064230C60984C
:10204C00403B17086633803162A6214100331811DA
:10205C0060A661A6FFE3ECFC00A6084801A680314F
:10206C00FF30531121410840FFE3D4F500336CA538
:10207C006ED800006DA56098624301234A1178AABE
:10208C00B20665B8FFE32AF26498FF9363985A8B03
:10209C00D261C86565980208CB6D061A5F6C136C2B
:1020AC0065B8FFE307F65D740618FFE3C1FC65989D
:1020BC00EC5E448728424387846C8264130C0132A3
:1020CC004CA5409842429460384C31A2304C30A21E
:1020DC00284C2FA28EA2409800228874133A40B844
:1020EC00C80B439801235A8ACD740861A5070233A3
:1020FC0000E8FAFD013300E8F7FD013000E8E2FDED
:10210C00023000E8DFFD033000E8DCFD043000E8BD
:10211C00D9FD0000FFFFFF0F00080010D3250000C1
:10212C007D04002070050020FF070010AC05002086
:10213C002C060020FF270000FFFE0000FF0100001E
:10214C004510661060932E92C6604D928C64020C02
:0C215C0000043C7870050020700000209A
:102168002114661086327E934142C86060B8609838
:0C2178000F6C007801143C782C0600204D
:10218400D4143F1728148031FF30021A214108402B
:10219400FFE394F58031003321410218AED80410D6
:1021A4006EDC08006EDC0900FFE346FC16645A0886
:1021B4009211803241420219136CFFE357F04284BA
:1021C4006633A0A4CA64A84DA1A44E088037D06188
:1021D400BE976B114C654A085F976A118C64460C74
:1021E40094644408C033D06080311A8B2241426425
:1021F4003D089660241148684039494A020C00227F
:1022040041423B8B4A643408003240B85F9794647F
:10221400050C00301F170814941461B8FFE362F131
:10222400DF9761985A8B9661886502088B6D021A54
:102234005B6C176C61B8FFE341F559740218FFE356
:10224400FBFB20985060448148422381846C826463
:10225400110840980122C97460B861985A8B48618A
:10226400D6070130D8070230D6070530D40703302B
:10227400D2070430D0070000AC050020FF2700007F
:08228400FFFE0000FF01000055
:10228C00D3149E32803541420031A1450511FFE344
:10229C00A5EF976C00310411FFE3A0EFFA33624312
:1022AC00821179ACFFE396FBFFE368FF836DFFE3DC
:1022BC0057F181744A650E087D1001744093FF221A
:1022CC006392CD746DB403B25A10C864020C4DB451
:1022DC009314413A0A08FA3361436DB401747410D3
:1022EC006093FF2303B3F507FA33443A6343F60FC5
:1022FC00503A0708403E6DB4EC0BFFE331FFE907A1
:10230C0040314A6410402A1005086DB410486091A1
:10231C00E9076DB460911048FF23803503B3D907EA
:10232C0070040020AC050020700500205C0000202B
:04233C008813000002
:10234000D4142D140132CE03C36C4EDC0A00409627
:10235000479288744EDC09004ED80900403A080CB8
:102360004ED80900423A040C00300D14941497031F
:1023700009320094403B41B0570807336EDC0B0034
:102380007B0363B88033624367B86ED80B00CC74AC
:1023900062B07E0363B001320131BF03FFE33DF35E
:1023A000E0957F1360B75F13003362B743B7D8324D
:1023B00045B74F97A23A4FB703982ED80B007D32FE
:1023C0000021487C61B8FFE38DF704B8FA32249805
:1023D00042424864CA0B44987831049840B8FFE3FD
:1023E00081F74098826045B804987831449840B8A5
:1023F000FFE378F74098086006B880C020704096E8
:10240000549248B86198409460B261B76ED80A009F
:10241000403B3E08FFE36AF40094FFE3D4F280C13E
:1024200020740130A307413B060803336EDC0B0028
:102430007D12A807423B060801336EDC0B007B12BD
:10244000A107433B060800336EDC0B0078129A07A5
:10245000443B090800336EDC0B00761263B880330E
:1024600069439307453B060800336EDC0B0072128C
:10247000F607463B060800336EDC0B006F12EF07D1
:10248000473B840B00336EDC0B006D12E807609550
:102490000131409421B320B2003127B3043025B27A
:1024A0002E9340684039FD0F25922AB8003110B3B1
:1024B00027B3043025B22E9340684039FD0F259292
:1024C0002BB8003110B327B3043025B22E934068E7
:1024D0004039FD0F25922CB810B32B980C98406012
:1024E00029B82998214929B8003121B320B227B34E
:1024F00025B26ED80900423B49982C0871118C64B2
:10250000030C00330F04499866988C640E08689891
:102510004798CA6068B8FE3268984842C868403B2D
:1025200012086EDC0A00210749986598C8642908DA
:1025300068984798C86068B8FE33489868438C68C4
:10254000CA64E00F6096489854B30130FFE3E4F3A7
:102550005E0766988C64090868984798CA6068B8EE
:10256000FF3268985042DB0749986598C8640908AB
:1025700068984798C86068B8FF3348987043E00788
:1025800000336EDC0A00E2075C0000200C00002033
:10259000006CDC02FFFF00001400002005009CBE60
:1025A0001000030000366E01001BB700808D5B0039
:1025B00020C75400D0FE3F0068FF1F00B8FF010095
:0425C000FF07000011
:1025C4004D443230335F426F6F746C6F61640052FC
:1025D400656164454550524F4D2041646472657392
:1025E40073EFBC9A25303878204C656E3A25640028
:1025F400000000700000005000200540001005405D
:102604000020064000100640000006400020014063
:1026140000900540005005400000054000000B40BC
:1026240000000A4000000940002008400010084053
:102634000000084000F0006000200060000000601E
:10264400000003400010024000000240001001405E
:082654000000014000E000E07D
:040000050000010CEA
:00000001FF

Binary file not shown.

139
Source/Obj/__rt_entry.S Normal file
View File

@@ -0,0 +1,139 @@
.global __main
.weak __main
.global __e_rom
.weak __e_rom
.global __s_ram_data_1
.weak __s_ram_data_1
.global __e_ram_data_1
.weak __e_ram_data_1
.global __s_ram_bss_1
.weak __s_ram_bss_1
.global __e_ram_bss_1
.weak __e_ram_bss_1
.global __s_ram_data_2
.weak __s_ram_data_2
.global __e_ram_data_2
.weak __e_ram_data_2
.global __s_ram_bss_2
.weak __s_ram_bss_2
.global __e_ram_bss_2
.weak __e_ram_bss_2
.global __s_ram_data_3
.weak __s_ram_data_3
.global __e_ram_data_3
.weak __e_ram_data_3
.global __s_ram_bss_3
.weak __s_ram_bss_3
.global __e_ram_bss_3
.weak __e_ram_bss_3
.global __s_ram_data_4
.weak __s_ram_data_4
.global __e_ram_data_4
.weak __e_ram_data_4
.global __s_ram_bss_4
.weak __s_ram_bss_4
.global __e_ram_bss_4
.weak __e_ram_bss_4
.global __s_ram_data_5
.weak __s_ram_data_5
.global __e_ram_data_5
.weak __e_ram_data_5
.global __s_ram_bss_5
.weak __s_ram_bss_5
.global __e_ram_bss_5
.weak __e_ram_bss_5
.global __ChipInitHandler
.weak __ChipInitHandler
.text
.align 3
__bss_initialization:
subu a2, a3
lsri a2, 2
cmpnei a2, 0
bf 2f
movi a1, 0
1:
stw a1, (a3)
addi a3, 4
subi a2, 1
cmpnei a2, 0
bt 1b
2:
jmp r15
__rom_decompression:
cmphs a1, a2
bt 4f
3:
ld.w a3, (a0, 0)
st.w a3, (a1, 0)
addi a0, 4
addi a1, 4
cmphs a1, a2
bf 3b
4:
jmp r15
__main:
mov r6, r15
lrw a3, __s_ram_bss_1
lrw a2, __e_ram_bss_1
bsr __bss_initialization
lrw a3, __s_ram_bss_2
lrw a2, __e_ram_bss_2
bsr __bss_initialization
lrw a3, __s_ram_bss_3
lrw a2, __e_ram_bss_3
bsr __bss_initialization
lrw a3, __s_ram_bss_4
lrw a2, __e_ram_bss_4
bsr __bss_initialization
lrw a3, __s_ram_bss_5
lrw a2, __e_ram_bss_5
bsr __bss_initialization
lrw a0, __e_rom
lrw a1, __s_ram_data_1
lrw a2, __e_ram_data_1
bsr __rom_decompression
lrw a1, __s_ram_data_2
lrw a2, __e_ram_data_2
bsr __rom_decompression
lrw a1, __s_ram_data_3
lrw a2, __e_ram_data_3
bsr __rom_decompression
lrw a1, __s_ram_data_4
lrw a2, __e_ram_data_4
bsr __rom_decompression
lrw a1, __s_ram_data_5
lrw a2, __e_ram_data_5
bsr __rom_decompression
#ifdef __CSKYABIV2__
subi sp, 4
stw r6, (sp, 0)
lrw a0, __ChipInitHandler
cmpnei a0, 0
bf 1f
jsr a0
1:
lrw a0, main
jsr a0
#else
subi sp, 8
stw r6, (sp, 0)
lrw a0, __ChipInitHandler
cmpnei a0, 0
bf 1f
jsri __ChipInitHandler
1:
jsri main
#endif
ldw r15, (sp, 0)
#ifdef __CSKYABIV2__
addi sp, 4
#else
addi sp, 8
#endif
jmp r15

382
Source/Project.cdkproj Normal file
View File

@@ -0,0 +1,382 @@
<?xml version="1.0" encoding="UTF-8"?>
<Project Name="MD203F8P" Version="1">
<Description/>
<UIControl>
<Debug>
<DisableSIMConnector>yes</DisableSIMConnector>
</Debug>
</UIControl>
<Dependencies/>
<MonitorProgress>
<DebugLaunch>99</DebugLaunch>
<FlashOperate>98</FlashOperate>
</MonitorProgress>
<VirtualDirectory Name="arch">
<File Name="arch/crt0.S">
<FileOption/>
</File>
<File Name="arch/mem_init.c">
<FileOption/>
</File>
<File Name="arch/apt32f102_iostring.c">
<FileOption/>
</File>
<File Name="arch/apt32f102a.svc">
<FileOption/>
</File>
</VirtualDirectory>
<VirtualDirectory Name="FWlib">
<File Name="FWlib/apt32f102_syscon.c">
<FileOption/>
</File>
<File Name="FWlib/apt32f102_gpio.c">
<FileOption/>
</File>
<File Name="FWlib/apt32f102_wwdt.c">
<FileOption/>
</File>
<File Name="FWlib/apt32f102_bt.c">
<FileOption/>
</File>
<File Name="FWlib/apt32f102_uart.c">
<FileOption/>
</File>
<File Name="FWlib/apt32f102_ifc.c">
<FileOption/>
</File>
<File Name="FWlib/apt32f102_lpt.c">
<FileOption/>
</File>
</VirtualDirectory>
<VirtualDirectory Name="inc">
<File Name="include/apt32f102.h">
<FileOption/>
</File>
<File Name="include/apt32f102_bt.h">
<FileOption/>
</File>
<File Name="include/apt32f102_ck801.h">
<FileOption/>
</File>
<File Name="include/apt32f102_gpio.h">
<FileOption/>
</File>
<File Name="include/apt32f102_ifc.h">
<FileOption/>
</File>
<File Name="include/apt32f102_syscon.h">
<FileOption/>
</File>
<File Name="include/apt32f102_uart.h">
<FileOption/>
</File>
<File Name="include/apt32f102_types_local.h">
<FileOption/>
</File>
<File Name="include/apt32f102_clkcalib.h">
<FileOption/>
</File>
<File Name="include/apt32f102_lpt.h">
<FileOption/>
</File>
</VirtualDirectory>
<VirtualDirectory Name="source">
<File Name="main.c">
<FileOption/>
</File>
<File Name="includes.h">
<FileOption/>
</File>
<File Name="mcu_initial.c">
<FileOption/>
</File>
<File Name="mcu_interrupt.c">
<FileOption/>
</File>
<File Name="ckcpu.ld">
<FileOption/>
</File>
</VirtualDirectory>
<VirtualDirectory Name="drivers">
<File Name="drivers/apt32f102.c">
<FileOption/>
</File>
<File Name="drivers/apt32f102_ck801.c">
<FileOption/>
</File>
</VirtualDirectory>
<VirtualDirectory Name="doc">
<File Name="doc/APT32F102_TKLib_Version.md">
<FileOption/>
</File>
<File Name="doc/APT32F102_Lib_Fix_Log.md">
<FileOption/>
</File>
</VirtualDirectory>
<VendorInfo>
<VendorName>NULL</VendorName>
</VendorInfo>
<VirtualDirectory Name="SYSTEM" ExcludeProjConfig="">
<File Name="SYSTEM/uart.c">
<FileOption/>
</File>
<VirtualDirectory Name="inc">
<File Name="SYSTEM/inc/uart.h">
<FileOption/>
</File>
<File Name="SYSTEM/inc/eeprom.h">
<FileOption/>
</File>
<File Name="SYSTEM/inc/Bootload_fun.h">
<FileOption/>
</File>
</VirtualDirectory>
<File Name="SYSTEM/eeprom.c">
<FileOption/>
</File>
<File Name="SYSTEM/Bootload_fun.c">
<FileOption/>
</File>
</VirtualDirectory>
<ToolsConfig>
<Compiler>
<Name>CKV2ElfMinilib</Name>
<Version>latest</Version>
</Compiler>
</ToolsConfig>
<DebugSessions>
<watchExpressions>CK801:1;i_temp:1;j_temp:1;k_temp:1;GPIOB0:1;GPIOA0:1;SYSCON:1;test_d:1;LPT:1;BT0:1;Key_Map:1;DFLASH_rdata:1;TKEYBUF:1</watchExpressions>
<memoryExpressions>0x00080140;;;</memoryExpressions>
<statistics>;;32;;MHZ;;up</statistics>
<peripheralTabs>
<Tab disFormat="Hex">SYSCON</Tab>
</peripheralTabs>
<WatchDisplayFormat>1</WatchDisplayFormat>
<LocalDisplayFormat>0</LocalDisplayFormat>
<debugLayout>layout2|name=Project View;caption=Project View;state=31459324;dir=4;layer=1;row=0;pos=0;prop=68571;bestw=456;besth=277;minw=10;minh=5;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=Debugger;caption=Debugger;state=14682108;dir=3;layer=1;row=0;pos=0;prop=86169;bestw=341;besth=315;minw=10;minh=5;maxw=-1;maxh=-1;floatx=60;floaty=707;floatw=418;floath=340|name=Frame Info;caption=Frame Info;state=14698492;dir=3;layer=1;row=0;pos=1;prop=106705;bestw=400;besth=300;minw=10;minh=5;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=Peripherals;caption=Peripherals;state=31459326;dir=3;layer=1;row=0;pos=4;prop=100000;bestw=11;besth=43;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=Serial Pane;caption=Serial Pane;state=14682110;dir=3;layer=1;row=0;pos=4;prop=100000;bestw=400;besth=300;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=Editor;caption=;state=256;dir=5;layer=0;row=0;pos=0;prop=100000;bestw=20;besth=20;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=Output View;caption=Output View;state=31459326;dir=3;layer=1;row=0;pos=1;prop=100000;bestw=958;besth=244;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=-1;floaty=-1;floatw=-1;floath=-1|name=Disassemble;caption=Disassemble;state=2099198;dir=3;layer=1;row=0;pos=2;prop=158373;bestw=200;besth=200;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=1746;floaty=812;floatw=216;floath=236|name=Register;caption=Register;state=2099198;dir=4;layer=1;row=0;pos=1;prop=100000;bestw=200;besth=200;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=83;floaty=444;floatw=218;floath=240|name=Outline;caption=Outline;state=2099198;dir=2;layer=0;row=2;pos=0;prop=100000;bestw=200;besth=200;minw=-1;minh=-1;maxw=-1;maxh=-1;floatx=1823;floaty=285;floatw=216;floath=236|dock_size(4,1,0)=210|dock_size(5,0,0)=20|dock_size(3,1,0)=335|</debugLayout>
<memoryTabColSizeExpressions>100:4;100:8;100:8;100:8;</memoryTabColSizeExpressions>
<QuickWatchDisplayFormat>1</QuickWatchDisplayFormat>
</DebugSessions>
<BuildConfigs>
<BuildConfig Name="BuildSet">
<Target>
<ROMBank Selected="1">
<ROM1>
<InUse>yes</InUse>
<Start>0x00000000</Start>
<Size>0x00010000</Size>
</ROM1>
<ROM2>
<InUse>no</InUse>
<Start/>
<Size/>
</ROM2>
<ROM3>
<InUse>no</InUse>
<Start/>
<Size/>
</ROM3>
<ROM4>
<InUse>no</InUse>
<Start/>
<Size/>
</ROM4>
<ROM5>
<InUse>no</InUse>
<Start/>
<Size/>
</ROM5>
</ROMBank>
<RAMBank>
<RAM1>
<InUse>yes</InUse>
<Start>0x20000000</Start>
<Size>0x20001000</Size>
<Init>yes</Init>
</RAM1>
<RAM2>
<InUse>no</InUse>
<Start/>
<Size/>
<Init>yes</Init>
</RAM2>
<RAM3>
<InUse>no</InUse>
<Start/>
<Size/>
<Init>yes</Init>
</RAM3>
<RAM4>
<InUse>no</InUse>
<Start/>
<Size/>
<Init>yes</Init>
</RAM4>
<RAM5>
<InUse>no</InUse>
<Start/>
<Size/>
<Init>yes</Init>
</RAM5>
</RAMBank>
<CPU>ck801</CPU>
<UseMiniLib>yes</UseMiniLib>
<Endian>little</Endian>
<UseHardFloat>no</UseHardFloat>
<UseEnhancedLRW>no</UseEnhancedLRW>
<UseContinueBuild>no</UseContinueBuild>
<UseSemiHost>no</UseSemiHost>
</Target>
<Output>
<OutputName>MD203_Boot_V05_20260206</OutputName>
<Type>Executable</Type>
<CreateHexFile>yes</CreateHexFile>
<CreateBinFile>yes</CreateBinFile>
<Preprocessor>no</Preprocessor>
<Disassmeble>yes</Disassmeble>
<CallGraph>no</CallGraph>
<Map>yes</Map>
</Output>
<User>
<BeforeCompile>
<RunUserProg>no</RunUserProg>
<UserProgName/>
<IsBatchScript>no</IsBatchScript>
</BeforeCompile>
<BeforeMake>
<RunUserProg>no</RunUserProg>
<UserProgName/>
<IsBatchScript>no</IsBatchScript>
</BeforeMake>
<AfterMake>
<RunUserProg>no</RunUserProg>
<UserProgName/>
<IsBatchScript>no</IsBatchScript>
</AfterMake>
<Tools/>
</User>
<Compiler>
<Define>CONFIG_CSKY_MMU=0</Define>
<Undefine>__CSKY_ABIV2__</Undefine>
<Optim>Optimize size (-Os)</Optim>
<DebugLevel>Default (-g)</DebugLevel>
<IncludePath>$(CDKPath)/CSKY/csi/csi_core/csi_cdk/;$(CDKPath)/CSKY/csi/csi_core/include/;$(CDKPath)/CSKY/csi/csi_driver/include/;$(ProjectPath);$(ProjectPath)/SYSTEM/inc;$(ProjectPath)/USRCTRL/inc;$(ProjectPath)/include</IncludePath>
<OtherFlags>-mistack</OtherFlags>
<Verbose>no</Verbose>
<Ansi>no</Ansi>
<Syntax>no</Syntax>
<Pedantic>no</Pedantic>
<PedanticErr>no</PedanticErr>
<InhibitWarn>no</InhibitWarn>
<AllWarn>no</AllWarn>
<WarnErr>no</WarnErr>
<OneElfS>yes</OneElfS>
<OneElfSPerData>no</OneElfSPerData>
<Fstrict>no</Fstrict>
</Compiler>
<Asm>
<Define>CONFIG_CKCPU_MMU=0</Define>
<Undefine>__CSKY_ABIV2__</Undefine>
<IncludePath>$(CDKPath)/CSKY/csi/csi_core/csi_cdk/;$(CDKPath)/CSKY/csi/csi_core/include/;$(CDKPath)/CSKY/csi/csi_driver/include/;$(ProjectPath);$(ProjectPath)//SYSTEM;$(ProjectPath)/SYSTEM/inc;$(ProjectPath)/USRCTRL/inc</IncludePath>
<OtherFlags/>
<DebugLevel>gdwarf2</DebugLevel>
</Asm>
<Linker>
<Garbage>yes</Garbage>
<Garbage2>yes</Garbage2>
<LDFile>$(ProjectPath)/ckcpu.ld</LDFile>
<LibName>lib_102ClkCalib_1_03</LibName>
<LibPath>$(ProjectPath)</LibPath>
<OtherFlags/>
<AutoLDFile>no</AutoLDFile>
<LinkType/>
<IncludeAllLibs>no</IncludeAllLibs>
<LinkSpecsType>none</LinkSpecsType>
<LinkUseNewlibNano>no</LinkUseNewlibNano>
</Linker>
<Debug>
<LoadApplicationAtStartup>yes</LoadApplicationAtStartup>
<Connector>ICE</Connector>
<StopAt>yes</StopAt>
<StopAtText>main</StopAtText>
<InitFile/>
<PreInit/>
<AfterLoadFile/>
<AutoRun>yes</AutoRun>
<ResetType>Soft Reset</ResetType>
<SoftResetVal>abcd1234</SoftResetVal>
<ResetAfterLoad>no</ResetAfterLoad>
<AfterResetFile/>
<Dumpcore>no</Dumpcore>
<DumpcoreText>$(ProjectPath)/$(ProjectName).cdkcore</DumpcoreText>
<SVCFile/>
<ConfigICE>
<IP>localhost</IP>
<PORT>1025</PORT>
<CPUNumber>0</CPUNumber>
<Clock>1500</Clock>
<Delay>10</Delay>
<NResetDelay>100</NResetDelay>
<WaitReset>50</WaitReset>
<DDC>yes</DDC>
<TRST>no</TRST>
<PreReset>no</PreReset>
<DebugPrint>yes</DebugPrint>
<Connect>Normal</Connect>
<ResetType>Soft Reset</ResetType>
<SoftResetVal>abcd1234</SoftResetVal>
<RTOSType>Bare Metal</RTOSType>
<DownloadToFlash>yes</DownloadToFlash>
<ResetAfterConnect>yes</ResetAfterConnect>
<GDBName/>
<GDBServerType>Local</GDBServerType>
<OtherFlags/>
<ICEEnablePCSampling>yes</ICEEnablePCSampling>
<ICESamplingFreq>1000</ICESamplingFreq>
<RemoteICEEnablePCSampling>yes</RemoteICEEnablePCSampling>
<RemoteICESamplingPort>1026</RemoteICESamplingPort>
<Version>latest</Version>
<SupportRemoteICEAsyncDebug>no</SupportRemoteICEAsyncDebug>
</ConfigICE>
<ConfigSIM>
<SIMTarget>soccfg/cskyv2/smart_card_802_cfg.xml</SIMTarget>
<OtherFlags/>
<NoGraphic>yes</NoGraphic>
<Log>no</Log>
<SimTrace>no</SimTrace>
<Version>latest</Version>
</ConfigSIM>
<ConfigOpenOCD>
<OpenOCDExecutablePath/>
<OpenOCDLocally>yes</OpenOCDLocally>
<OpenOCDTelnetPortEnable>no</OpenOCDTelnetPortEnable>
<OpenOCDTelnetPort>4444</OpenOCDTelnetPort>
<OpenOCDTclPortEnable>no</OpenOCDTclPortEnable>
<OpenOCDTclPort>6666</OpenOCDTclPort>
<OpenOCDConfigOptions/>
<OpenOCDTimeout>5000</OpenOCDTimeout>
<OpenOCDRemoteIP>localhost</OpenOCDRemoteIP>
<OpenOCDRemotePort>3333</OpenOCDRemotePort>
<PluginID>openocd-sifive</PluginID>
<Version>latest</Version>
</ConfigOpenOCD>
</Debug>
<Flash>
<InitFile/>
<PreInit/>
<Erase>Erase Full Chip</Erase>
<Algorithms Path="">$(CDKPath)/CSKY/Flash/APT32F102_FLASHDOWN.elf</Algorithms>
<Program>yes</Program>
<Verify>yes</Verify>
<ResetAndRun>yes</ResetAndRun>
<ResetType>Soft Reset</ResetType>
<SoftResetVal>abcd1234</SoftResetVal>
<FlashIndex>no</FlashIndex>
<FlashIndexVal>0</FlashIndexVal>
<External>no</External>
<Command/>
<Arguments/>
</Flash>
</BuildConfig>
</BuildConfigs>
</Project>

11
Source/Project.cdkws Normal file
View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="UTF-8"?>
<CDK_Workspace Name="Project" Database="Project.tags" DoubleClick="Yes">
<DefaultPackPath>$(CDKWS)\__workspace_pack__</DefaultPackPath>
<Project Name="MD203F8P" Path="Project.cdkproj" RootPath="" Active="Yes"/>
<BuildMatrix>
<WorkspaceConfiguration Name="Debug" Selected="yes">
<Environment/>
<Project Name="MD203F8P" ConfigName="BuildSet"/>
</WorkspaceConfiguration>
</BuildMatrix>
</CDK_Workspace>

BIN
Source/Project.tags Normal file

Binary file not shown.

1027
Source/SYSTEM/Bootload_fun.c Normal file

File diff suppressed because it is too large Load Diff

208
Source/SYSTEM/eeprom.c Normal file
View File

@@ -0,0 +1,208 @@
#include "includes.h"
#include <string.h>
E_MCU_DEV_INFO g_mcu_dev;
/*******************************************************************************
* Function Name : EEPROM_Init
* Description : EEPROM 初始化函数
*******************************************************************************/
void EEPROM_Init(void)
{
U8_T rev = 0;
EnIFCClk; //使能 IFC 时钟
IFC->MR |= 0x10002; //高速模式,延迟 2 个周期
delay_nms(10);
rev = EEPROM_ReadMCUDevInfo(&g_mcu_dev);
if(rev == 0x00){
//读取成功,开始校验以下参数
EEPROM_Validate_MCUDevInfo(&g_mcu_dev);
}else{
//读取失败,恢复默认参数
EEPROM_Default_MCUDevInfo(&g_mcu_dev);
#if DBG_LOG_EN
Dbg_Println(DBG_BIT_SYS_STATUS,"EE Use Defalut Para");
Dbg_Println(DBG_BIT_SYS_STATUS,"EE DevBootVer:%d",g_mcu_dev.dev_boot_ver);
Dbg_Println(DBG_BIT_SYS_STATUS,"EE DevNameLen:%d",g_mcu_dev.dev_name_len);
Dbg_Println(DBG_BIT_SYS_STATUS,"EE DevName:%s",g_mcu_dev.dev_name);
#endif
}
}
/*******************************************************************************
* Function Name : EEPROM_CheckSum
* Description : EEPROM 校验函数
*******************************************************************************/
U8_T EEPROM_CheckSum(U8_T *data,U16_T len)
{
U8_T data_sum = 0;
for(U16_T i = 0;i<len;i++)
{
data_sum += data[i];
}
return data_sum;
}
/*******************************************************************************
* Function Name : EEPROM_ReadMCUDevInfo
* Description : 从EEPROM中读取设备信息
*******************************************************************************/
U8_T EEPROM_ReadMCUDevInfo(E_MCU_DEV_INFO *info)
{
U8_T read_info[6];
U8_T para_data[EEPROM_DATA_Size_Max];
U16_T read_len = 0;
memset(read_info,0,sizeof(read_info));
memset(para_data,0,sizeof(para_data));
ReadDataArry_U8(EEPROM_MCUDevInfo_Address,4,read_info);
if(read_info[0] == EEPROM_SVAE_FLAG){
read_len = read_info[2];
read_len <<= 8;
read_len |= read_info[1];
if(read_len <= EEPROM_DATA_Size_Max){
ReadDataArry_U8(EEPROM_MCUDevInfo_Address+EEPROM_Offset_Data,read_len,para_data);
if(EEPROM_CheckSum(para_data,sizeof(E_MCU_DEV_INFO)) == read_info[3]){
//校验成功
memcpy((uint8_t *)info,para_data,sizeof(E_MCU_DEV_INFO));
#if DBG_LOG_EN
Dbg_Println(DBG_BIT_SYS_STATUS,"EE DevAddr:%d",g_mcu_dev.dev_addr);
Dbg_Println(DBG_BIT_SYS_STATUS,"EE DevType:%d",g_mcu_dev.dev_type);
Dbg_Println(DBG_BIT_SYS_STATUS,"EE DevBootVer:%d",g_mcu_dev.dev_boot_ver);
Dbg_Println(DBG_BIT_SYS_STATUS,"EE DevAppVer:%d",g_mcu_dev.dev_app_ver);
Dbg_Println(DBG_BIT_SYS_STATUS,"EE DevNameLen:%d",g_mcu_dev.dev_name_len);
Dbg_Println(DBG_BIT_SYS_STATUS,"EE DevName:%s",g_mcu_dev.dev_name);
#endif
return 0x00;
}
}
}
return 0x01;
}
/*******************************************************************************
* Function Name : EEPROM_WriteMCUDevInfo
* Description : 将设备信息写入到EEPROM中
*******************************************************************************/
U8_T EEPROM_WriteMCUDevInfo(E_MCU_DEV_INFO *info)
{
U8_T save_data[EEPROM_DATA_Size_Max + 6];
U16_T save_len = sizeof(E_MCU_DEV_INFO);
if(save_len >= EEPROM_DATA_Size_Max) save_len = EEPROM_DATA_Size_Max;
save_data[0] = EEPROM_SVAE_FLAG;
save_data[1] = save_len & 0xFF;
save_data[2] = (save_len >> 8) & 0xFF;
memcpy(&save_data[4],(uint8_t *)info,save_len);
save_data[3] = EEPROM_CheckSum(&save_data[4],save_len);
save_len+=4;
Page_ProgramData(EEPROM_MCUDevInfo_Address,save_len,save_data);
return 0;
}
/*******************************************************************************
* Function Name : EEPROM_Default_MCUDevInfo
* Description : EEPROM中参数恢复默认值且将默认参数保存至EEPROM中
*******************************************************************************/
void EEPROM_Default_MCUDevInfo(E_MCU_DEV_INFO *info)
{
#if (Project_Area == 0x01)
/*Boot 区域*/
info->dev_addr = 0x00;
info->dev_type = 0x00;
info->dev_app_ver = 0x00;
info->dev_boot_ver = Project_FW_Version;
info->dev_name_len = sizeof(Peoject_Name);
memset((char *)info->dev_name,0,EEPROM_DEV_NAME_Size);
memcpy((char *)info->dev_name,(char *)Peoject_Name,info->dev_name_len);
EEPROM_WriteMCUDevInfo(info);
#elif (Project_Area == 0x02)
/*APP 区域*/
info->dev_addr = 0x00;
info->dev_type = Project_Type;
info->dev_app_ver = Project_FW_Version;
info->dev_name_len = sizeof(Peoject_Name);
memset((char *)info->dev_name,0,EEPROM_DEV_NAME_Size);
memcpy((char *)info->dev_name,(char *)Peoject_Name,info->dev_name_len);
EEPROM_WriteMCUDevInfo(info);
#endif
}
/*******************************************************************************
* Function Name : EEPROM_Validate_MCUDevInfo
* Description : 校验从EEPROM 中读取的参数是否正确,如果不正确的话,便将当前正确的参数写入
APP区域中判断APP参数与EEPROM中记录的是否一致
Boot区域中判断Boot参数与EEPROM中记录的是否一致
*******************************************************************************/
void EEPROM_Validate_MCUDevInfo(E_MCU_DEV_INFO *info)
{
#if (Project_Area == 0x01)
/*Boot 区域*/
U8_T save_flag = 0;
if(info->dev_boot_ver != Project_FW_Version)
{
info->dev_boot_ver = Project_FW_Version;
save_flag = 0x01;
}
if(save_flag == 0x01)
{
EEPROM_WriteMCUDevInfo(info);
}
#elif (Project_Area == 0x02)
/*APP 区域*/
U8_T save_flag = 0;
if(info->dev_app_ver != Project_FW_Version)
{
info->dev_app_ver = Project_FW_Version;
save_flag = 0x01;
}
if(info->dev_type != Project_Type)
{
info->dev_type = Project_Type;
save_flag = 0x01;
}
if(info->dev_name_len != sizeof(Peoject_Name))
{
info->dev_name_len = sizeof(Peoject_Name);
save_flag = 0x01;
}
if(strncmp((char *)info->dev_name,(char *)Peoject_Name,sizeof(Peoject_Name)))
{
memcpy((char *)info->dev_name,(char *)Peoject_Name,info->dev_name_len);
save_flag = 0x01;
}
if(save_flag == 0x01)
{
EEPROM_WriteMCUDevInfo(info);
}
#endif
}

View File

@@ -0,0 +1,88 @@
#ifndef _BOOTLOAD_FUNCTION_H_
#define _BOOTLOAD_FUNCTION_H_
#include "apt32f102.h"
#include "apt32f102_ifc.h"
#include "apt32f102_syscon.h"
#include "uart.h"
#define App_Procedure_Ready 0x66 //APP准备就绪标志位
#define APP_Flash_PageSize 0x100
#if DBG_LOG_EN
#define APP_Flash_StartAddr PROM_PageAdd96 //调试APP起始地址
#else
#define APP_Flash_StartAddr PROM_PageAdd40
#endif
#define APP_Flash_EndAddr PROM_PageAdd255
#define APP_FEATURE_Flash_Addr PROM_PageAdd255
#define MCU_EEPROM_PageSize 0x40
#define MCU_EEPROM_StartAddr DROM_PageAdd0
#define MCU_EEPROM_EndAddr (DROM_PageAdd31 + MCU_EEPROM_PageSize)
#define BCOMM_CMD_Handshake 0xC0
#define BCOMM_CMD_Jump 0xC1
#define BCOMM_CMD_SetInfo 0xC2
#define BCOMM_CMD_WriteFlash 0xC3
#define BCOMM_CMD_ReadFlash 0xC4
#define BCOMM_CMD_EraseFlash 0xC5
#define BCOMM_CMD_WriteEEPROM 0xC6
#define BCOMM_CMD_ReadEEPROM 0xC7
#define BCOMM_CMD_EraseEEPROM 0xC8
#define BCOMM_CMD_CheckData 0xC9
#define BCOMM_CMD_ReplySUCC 0x00
#define BCOMM_CMD_ReplyFAIL 0x01
#define BCOMM_ACKSize 300
#define BCOMM_ParaSize 280
typedef enum
{
BCOMM_FMT_TXAddr,
BCOMM_FMT_SN,
BCOMM_FMT_TYPE,
BCOMM_FMT_RXAddr,
BCOMM_FMT_LEN_L,
BCOMM_FMT_LEN_H,
BCOMM_FMT_CKS,
BCOMM_FMT_CMD,
BCOMM_FMT_PARAM,
}BOOT_COMM_FMT_e;
typedef struct{
U8_T jump_start;
U8_T sn;
U8_T cmd;
U8_T pc_addr;
U8_T ackBuffer[BCOMM_ACKSize];
U16_T ackLen;
U16_T ackValidity; //数据回复有效期
U32_T bootTimeout;
U32_T bootTick;
}BOOT_INFO_T;
typedef struct{
U8_T crcL_check;
U8_T crcH_check;
U8_T app_flag;
U8_T app_crc[241];
U16_T app_crc_size;
U16_T app_crc_len;
U32_T app_start_addr;
U32_T app_end_addr;
}APP_FEATURE_INFO_T; /*字节空间是256Byte*/
extern BOOT_INFO_T g_boot;
void Boot_Function_Init(void);
U8_T Boot_Comm_UpgradeProcess(U8_T *data,U16_T len);
void Boot_Time_Refresh(void);
void Boot_TimeOut_Task(void);
void Jump_To_APP(void);
U8_T Check_APP_Feature(void);
#endif

View File

@@ -0,0 +1,51 @@
#ifndef _EEPROM_H_
#define _EEPROM_H_
#include "apt32f102.h"
/*地址范围0x10000000~0x100007FF*/
#define EEPROM_MCUDevInfo_Address 0x10000000 //MCU 设备信息地址固定为0x10000000大小为0x40 此区域不可改动
/* EEPROM 保存数据格式:
* FLAG - 1Byte 保存标志位
* LEN - 2Byte 保存数据长度
* CHECK - 1Byte 保存数据校验
* DATA - nByte 保存数据内容
*
* */
#define EEPROM_SVAE_FLAG 0xAE
#define EEPROM_DATA_Size_Max 0x40 //目前保存数据内容最长为100Byte
#define EEPROM_PARA_Size 50
#define EEPROM_DEV_NAME_Size 32
#define EEPROM_Offset_SaveFlag 0x00
#define EEPROM_Offset_Datalen 0x01
#define EEPROM_Offset_Check 0x03
#define EEPROM_Offset_Data 0x04
typedef struct{
U8_T dev_addr; //设备地址
U8_T dev_type; //设备类型
U8_T dev_boot_ver; //设备Boot的软件版本号
U8_T dev_app_ver; //设备APP的软件版本号
U8_T dev_name_len; //设备名称的长度
U8_T dev_name[EEPROM_DEV_NAME_Size]; //设备名称
}E_MCU_DEV_INFO;
extern E_MCU_DEV_INFO g_mcu_dev;
void EEPROM_Init(void);
U8_T EEPROM_ReadMCUDevInfo(E_MCU_DEV_INFO *info);
U8_T EEPROM_WriteMCUDevInfo(E_MCU_DEV_INFO *info);
void EEPROM_Default_MCUDevInfo(E_MCU_DEV_INFO *info);
void EEPROM_Validate_MCUDevInfo(E_MCU_DEV_INFO *info);
#endif

133
Source/SYSTEM/inc/uart.h Normal file
View File

@@ -0,0 +1,133 @@
#ifndef _UART_H_
#define _UART_H_
#include "apt32f102.h"
#include "apt32f102_uart.h"
#define Recv_2400_TimeOut 10 //ms
#define Recv_9600_TimeOut 5 //ms
#define Recv_115200_TimeOut 3 //ms
#define USART_BUFFER_SIZE 300
#define UART_SEND_BUFFER_NUM 10
#define UART_SEND_BUFFER_SIZE 20
#define READ_RXLEVEL_STATE GPIO_Read_Status(GPIOB0,5) //485总线RX引脚
#define WRITE_HIGH_DR GPIO_Write_High(GPIOB0,3) //485 DR
#define WRITE_LOW_DR GPIO_Write_Low(GPIOB0,3) //485 DR
#define REVERISE_DR GPIO_Reverse(GPIOB0,3) //485 DR
#define UART_BUSBUSY 0x01 //总线繁忙
#define UART_BUSIDLE 0x00 //总线空闲
/*调试信息相关定义*/
#ifndef DBG_LOG_EN
#define DBG_LOG_EN 0 //DEBUG LOG 输出总开关
#endif
/*调试信息初始状态*/
#define DBG_OPT_Debug_STATUS 0 //临时调试信息打印开关
#define DBG_OPT_DEVICE_STATUS 0 //设备驱动层打印调试信息打印开关
#define DBG_OPT_SYS_STATUS 0 //系统调试信息打印开关
/*调试信息输出控制位*/
#define DBG_BIT_Debug_STATUS 2
#define DBG_BIT_DEVICE_STATUS 1
#define DBG_BIT_SYS_STATUS 0
#if DBG_LOG_EN
#define DBG_SendByte(data) UARTTxByte(UART2,data)
#define DBG_Printf(data,len) UARTTransmit(UART2,data,len)
#else
#define DBG_SendByte(data)
#define DBG_Printf
#endif
typedef U8_T (*Uart_prt)(U8_T *,U16_T);
typedef enum
{
UART_0,
UART_1,
UART_2,
UART_3,
UART_MAX,
}UART_IDX;
typedef enum
{
BUSSEND_SUCC = 0x00, //发送成功
BUSSEND_WAIT, //等待发送机会
DATA_END, //数据有效期结束
RETRY_END, //重发结束
LEN_ERR, //长度错误
}BUSSEND_REV;
typedef struct{
U8_T RecvBuffer[USART_BUFFER_SIZE];
U8_T DealBuffer[USART_BUFFER_SIZE];
U8_T Receiving;
U16_T RecvLen;
U16_T DealLen;
U32_T RecvTimeout;
U32_T RecvIdleTiming;
Uart_prt processing_cf; //处理函数指针
} UART_t;
typedef struct{ //总线繁忙判断
U8_T SendBuffer[USART_BUFFER_SIZE]; //发送缓冲
U8_T BusState_Flag; //总线繁忙标记位, 0x01:总线繁忙0x00:总线空闲
U8_T HighBit_Flag; //串口RX高电平标记位,默认是高电平0x01.
U8_T BUSBUSY_LOCK; //锁定总线繁忙状态
U8_T ResendCnt; //当前发送次数
U8_T ASend_Flag; //主动上报发送标记
U8_T TotalCnt; //发送总次数
U8_T SetBaudFlag; //设置波特率
U16_T SendLen; //发送缓冲区数据长度
U32_T SetBaud;
U32_T Bus_DelayTime; //总线繁忙转换到空闲状态的随机延时时间
U32_T DataWait_Time; //上报数据间隔
U32_T DataValid_Time; //上报数据有效期
U32_T BusState_Tick; //总线繁忙状态判断时间戳
U32_T ASend_Tick; //主动上报发送间隔判断时间戳
U32_T BusbusyTimeout; //上报数据有效期判断时间戳
}MULIT_t;
extern U32_T Dbg_Switch;
extern volatile int RS485_Comm_Flag,RS485_Comm_Start,RS485_Comm_End,RS485_Comming;
void UARTx_Init(UART_IDX uart_id, Uart_prt prt_cf);
U16_T Get_Uart_BaudCnt(U32_T baud);
U8_T UARTx_ChangeBaud(uint8_t uart_id,uint32_t baud);
void UART2_RecvINT_Processing(char data);
void UART2_TASK(void);
void MCU485_SendData(U8_T *buff,U16_T len);
U8_T BUS485_Send(U8_T *buff,U16_T len);
U8_T MultSend_Task(U8_T *buff,U16_T len,U8_T DatSd);
void Set_GroupSend(U8_T *data,U16_T sled,U8_T SCnt,U32_T indate,U32_T tim_val);
//void Clear_SendFlag(void);
void BUS485_SetBaud(U32_T baud);
void BUS485Send_Task(void);
void BusIdle_Task(void);
void BusBusy_Task(void);
void Dbg_Print(int DbgOptBit, const char *cmd, ...);
void Dbg_Println(int DbgOptBit, const char *cmd, ...);
void Dbg_Print_Buff(int DbgOptBit, const char *cmd, U8_T *buff,U16_T len);
#endif

627
Source/SYSTEM/uart.c Normal file
View File

@@ -0,0 +1,627 @@
#include "includes.h"
#include <string.h>
#include <stdarg.h>
#include <stdio.h>
/**
* Bootload 串口使用情况
* UART0 没有使用
* UART2 用与调试信息输出 - 512000
* UART1 用于Bootload 升级使用
* */
UART_t g_uart; //目前该项目只使用串口2 进行双向通讯
MULIT_t m_send;
void UARTx_Init(UART_IDX uart_id, Uart_prt prt_cf) {
switch(uart_id){
case UART_1:
memset(&g_uart,0,sizeof(UART_t));
memset(&m_send,0,sizeof(MULIT_t));
//串口1-RX接收中断用于串口1的通讯总线繁忙状态判断2025-04-16
// GPIO_PullHigh_Init(GPIOA0,15);
// GPIO_IntGroup_Set(PA0,15,Selete_EXI_PIN15); //EXI0 set PB0.2
// GPIOA0_EXI_Init(EXI15); //PB0.2 as input
// EXTI_trigger_CMD(ENABLE,EXI_PIN15,_EXIFT); //ENABLE falling edge
// EXTI_trigger_CMD(ENABLE,EXI_PIN15,_EXIRT);
// EXTI_interrupt_CMD(ENABLE,EXI_PIN15); //enable EXI
// GPIO_EXTI_interrupt(GPIOA0,0b1000000000000000); //enable GPIOB02 as EXI
// EXI4_Int_Enable();
//
// UART1_DeInit(); //clear all UART Register
// UART_IO_Init(IO_UART1,2); //use PA0.13->RXD1, PB0.0->TXD1
// UARTInitRxTxIntEn(UART1,20000,UART_PAR_NONE); //baudrate=sysclock 48M/20000=2400 tx rx int enabled
// UART1_Int_Enable();
//
// m_send.BusState_Tick = SysTick_1ms;
// m_send.HighBit_Flag = 0x01;
//
// g_uart.RecvTimeout = Recv_2400_TimeOut;
// g_uart.processing_cf = prt_cf;
//
// //485使能引脚初始化
// GPIO_Init(GPIOA0,UART485_DR_PIN,Output);
// GPIO_DriveStrength_EN(GPIOA0,UART485_DR_PIN);
// WRITE_LOW_DR;
break;
case UART_2:
//2026-02-06 使用串口2作为Bootload 升级使用
memset(&g_uart,0,sizeof(UART_t));
memset(&m_send,0,sizeof(MULIT_t));
//串口RX接收中断
GPIO_PullHigh_Init(GPIOB0,5);
GPIO_IntGroup_Set(PB0,5,Selete_EXI_PIN5); //EXI0 set PB0.5
GPIOB0_EXI_Init(EXI5); //PB0.5 as input
EXTI_trigger_CMD(ENABLE,EXI_PIN5,_EXIFT); //ENABLE falling edge
EXTI_trigger_CMD(ENABLE,EXI_PIN5,_EXIRT);
EXTI_interrupt_CMD(ENABLE,EXI_PIN5); //enable EXI
GPIO_EXTI_interrupt(GPIOB0,0b0000000000100000); //enable GPIOB05 as EXI
EXI3_Int_Enable(); //EXI4~EXI9 INT Vector
UART2_DeInit(); //clear all UART Register
UART_IO_Init(IO_UART2,2); //use PA0.13->RXD1, PB0.0->TXD1
UARTInitRxTxIntEn(UART2,20000,UART_PAR_NONE); //baudrate=sysclock 48M/416=115200 tx rx int enabled
UART2_Int_Enable();
m_send.BusState_Tick = SysTick_1ms;
m_send.HighBit_Flag = 0x01;
g_uart.RecvTimeout = Recv_2400_TimeOut;
g_uart.processing_cf = prt_cf;
//485使能引脚初始化
GPIO_Init(GPIOB0,3,Output);
GPIO_DriveStrength_EN(GPIOB0,3);
WRITE_LOW_DR;
break;
}
}
/*******************************************************************************
* Function Name : Get_Uart_BaudCnt
* Description : Uart 获取串口波特率对于设置值
*******************************************************************************/
U16_T Get_Uart_BaudCnt(U32_T baud)
{
switch(baud){
case 2400:
return 20000;
case 4800:
return 10000;
case 9600:
return 5000;
case 19200:
return 2621;
case 56000:
return 898;
case 115200:
return 416;
case 512000:
return 98;
}
return 0x00;
}
/*******************************************************************************
* Function Name : Get_Uart_Recv_Timeout
* Description : Uart 获取串口接收超时时间
*******************************************************************************/
U32_T Get_Uart_Recv_Timeout(U32_T baud)
{
switch(baud){
case 2400:
return Recv_2400_TimeOut;
case 4800:
return Recv_2400_TimeOut;
case 9600:
return Recv_9600_TimeOut;
case 19200:
return Recv_9600_TimeOut;
case 56000:
return Recv_9600_TimeOut;
case 115200:
return Recv_115200_TimeOut;
case 512000:
return Recv_115200_TimeOut;
}
return Recv_115200_TimeOut;
}
/*******************************************************************************
* Function Name : UARTx_ChangeBaud
* Description : Uart 切换串口波特率
*******************************************************************************/
U8_T UARTx_ChangeBaud(uint8_t uart_id,uint32_t baud)
{
U16_T set_para = Get_Uart_BaudCnt(baud);
if(set_para == 0x00) return 0x01; //设置的波特率不支持
switch(uart_id){
case UART_1:
#if DBG_LOG_EN
Dbg_Println(DBG_BIT_SYS_STATUS, "UART ID %d", uart_id);
Dbg_Println(DBG_BIT_SYS_STATUS,"UART baud %d",baud);
#endif
UARTClose(UART1);
UART1_Int_Disable();
UART1_DeInit(); //clear all UART Register
UART_IO_Init(IO_UART1,2); //use PA0.13->RXD1, PB0.0->TXD1
UARTInitRxTxIntEn(UART1,set_para,UART_PAR_NONE); //baudrate=sysclock 48M/416=115200 tx rx int enabled
UART1_Int_Enable();
g_uart.RecvTimeout = Get_Uart_Recv_Timeout(baud);
break;
case UART_2:
UARTClose(UART2);
UART2_Int_Disable();
UART2_DeInit(); //clear all UART Register
UART_IO_Init(IO_UART2,2); //use PA0.13->RXD1, PB0.0->TXD1
UARTInitRxTxIntEn(UART2,set_para,UART_PAR_NONE); //baudrate=sysclock 48M/416=115200 tx rx int enabled
UART2_Int_Enable();
g_uart.RecvTimeout = Get_Uart_Recv_Timeout(baud);
break;
}
}
/*******************************************************************************
* Function Name : UART1_RecvINT_Processing
* Description : 串口1 接收中断处理函数 - 接收中断调用
*******************************************************************************/
//void UART1_RecvINT_Processing(char data){
// if((g_uart.RecvLen + 1) >= USART_BUFFER_SIZE) g_uart.RecvLen = 0;
// g_uart.RecvBuffer[g_uart.RecvLen++] = (U8_T)data;
//
// g_uart.RecvIdleTiming = SysTick_1ms;
// g_uart.Receiving = 0x01;
//}
//
//
//void UART1_TASK(void){
// U8_T ret = 0x00;
// if(g_uart.Receiving == 0x01){
// if(SysTick_1ms - g_uart.RecvIdleTiming > g_uart.RecvTimeout){
//
// SYSCON_Int_Disable();
// g_uart.RecvIdleTiming = SysTick_1ms;
// memcpy(g_uart.DealBuffer,g_uart.RecvBuffer,g_uart.RecvLen);
// g_uart.DealLen = g_uart.RecvLen;
// g_uart.RecvLen = 0;
// g_uart.Receiving = 0;
// SYSCON_Int_Enable();
//
//#if DBG_LOG_EN
// Dbg_Println(DBG_BIT_SYS_STATUS, "UART recv Len %d", g_uart.DealLen);
// Dbg_Print_Buff(DBG_BIT_SYS_STATUS,"UART buff",g_uart.DealBuffer,g_uart.DealLen);
//#endif
//
// if(g_uart.processing_cf != NULL){
// ret = g_uart.processing_cf(g_uart.DealBuffer,g_uart.DealLen);
// }
//
// }
// }
//}
/*******************************************************************************
* Function Name : UART2_RecvINT_Processing
* Description : 串口2 接收中断处理函数 - 接收中断调用
*******************************************************************************/
void UART2_RecvINT_Processing(char data){
if((g_uart.RecvLen + 1) >= USART_BUFFER_SIZE) g_uart.RecvLen = 0;
g_uart.RecvBuffer[g_uart.RecvLen++] = (U8_T)data;
g_uart.RecvIdleTiming = SysTick_1ms;
g_uart.Receiving = 0x01;
}
void UART2_TASK(void){
U8_T ret = 0x00;
if(g_uart.Receiving == 0x01){
if(SysTick_1ms - g_uart.RecvIdleTiming > g_uart.RecvTimeout){
SYSCON_Int_Disable();
g_uart.RecvIdleTiming = SysTick_1ms;
memcpy(g_uart.DealBuffer,g_uart.RecvBuffer,g_uart.RecvLen);
g_uart.DealLen = g_uart.RecvLen;
g_uart.RecvLen = 0;
g_uart.Receiving = 0;
SYSCON_Int_Enable();
#if DBG_LOG_EN
Dbg_Println(DBG_BIT_SYS_STATUS, "UART recv Len %d", g_uart.DealLen);
Dbg_Print_Buff(DBG_BIT_SYS_STATUS,"UART buff",g_uart.DealBuffer,g_uart.DealLen);
#endif
if(g_uart.processing_cf != NULL){
ret = g_uart.processing_cf(g_uart.DealBuffer,g_uart.DealLen);
}
}
}
}
/*因为开启了UART_TX_DONE_S 中断,发送完成需要清楚该中断标志位,因此每次调用串口输出后,需调用该函数,否则会在中断出不来
* 已取消
* */
void UART_Waiting_For_Send(CSP_UART_T *uart){
unsigned int Dataval = 0,delay_cnt = 0;
do{
Dataval = CSP_UART_GET_ISR(uart);
Dataval = Dataval & UART_TX_DONE_S;
delay_cnt ++;
if(delay_cnt >= 50000){
break;
}
}while(Dataval == 0x00); //发送完成
uart->ISR=UART_TX_DONE_S;
}
volatile int RS485_Comm_Flag = 0,RS485_Comm_Start = 0,RS485_Comm_End = 0,RS485_Comming = 0;
void MCU485_SendData(U8_T *buff,U16_T len){
unsigned int Dataval = 0,delay_cnt = 0;
//等待通讯发送完成
while(RS485_Comming == 0x01){
delay_nus(100);
delay_cnt ++;
if(delay_cnt >= 100){
break;
}
REVERISE_DR;//GPIO_Reverse(GPIOB0,3);
}
WRITE_HIGH_DR;//GPIO_Write_High(GPIOB0,3);
RS485_Comm_Flag = 0x01;
RS485_Comm_Start = 0x00;
RS485_Comm_End = 0x00;
UARTTransmit(UART2,buff,len);
do{
delay_nus(100);
delay_cnt ++;
if(delay_cnt >= 100){
break;
}
}while((RS485_Comm_Start < len) || (RS485_Comm_End < len)); //发送完成
WRITE_LOW_DR;//GPIO_Write_Low(GPIOB0,3);
RS485_Comm_Flag = 0x00;
}
/**********************************************************
* @brief BUS485 数据发生函数 - 检测总线是否繁忙,空闲状态下,才发生数据;繁忙状态下,直接退出
* @retval None
* */
U8_T BUS485_Send(U8_T *buff,U16_T len)
{
unsigned int Dataval = 0,delay_cnt = 0;
//等待通讯发送完成
while(RS485_Comming == 0x01){
delay_nus(100);
delay_cnt ++;
if(delay_cnt >= 100){
break;
}
REVERISE_DR;//GPIO_Reverse(GPIOB0,3);
}
if(m_send.BusState_Flag == UART_BUSIDLE){ //总线空闲
CK_CPU_DisAllNormalIrq();
WRITE_HIGH_DR;//GPIO_Write_High(GPIOB0,3);
RS485_Comm_Flag = 0x01;
RS485_Comm_Start = 0x00;
RS485_Comm_End = 0x00;
m_send.BusState_Flag = UART_BUSBUSY;//发送前总线置位繁忙
m_send.BUSBUSY_LOCK = 0x01; //锁定总线状态
CK_CPU_EnAllNormalIrq();
UARTTransmit(UART2,buff,len);
do{
delay_nus(100);
delay_cnt ++;
if(delay_cnt >= 100){
break;
}
}while((RS485_Comm_Start < len) || (RS485_Comm_End < len)); //发送完成
CK_CPU_DisAllNormalIrq();
WRITE_LOW_DR;//GPIO_Write_Low(GPIOB0,3);
RS485_Comm_Flag = 0x00;
m_send.BusState_Tick = SysTick_1ms;
m_send.BUSBUSY_LOCK = 0x00; //解锁总线状态
CK_CPU_EnAllNormalIrq();
return UART_BUSIDLE; //发送成功
}
else{ //总线繁忙
return UART_BUSBUSY; //发送失败
}
return 0x02; //传入状态无效
}
/**********************************************************
* @brief 重发、数据有效期、超时发送判断2025-03-25
* buff:发送数据
* len数据长度
* DatSd发送标记,0x00:无发送0x01有数据发送
*
* @retval 0x00:发送成功 0x01:等待发送 0x02:数据无效
* */
U8_T MultSend_Task(U8_T *buff,U16_T len,U8_T DatSd)
{
if( (len == 0)||(len > USART_BUFFER_SIZE) ) return LEN_ERR;
if(DatSd == 0x01)
{
if( m_send.ResendCnt < m_send.TotalCnt) //判断数据是否还在有效期,是否还有发送次数
{
if(SysTick_1ms - m_send.BusbusyTimeout < m_send.DataValid_Time)
{
if( (m_send.ResendCnt == 0x00) || (SysTick_1ms - m_send.ASend_Tick >= m_send.DataWait_Time) ){//数据发送间隔
if(BUS485_Send(buff,len) == UART_BUSIDLE){ //发送数据
m_send.ASend_Tick = SysTick_1ms;
m_send.ResendCnt++;
#if DBG_LOG_EN
Dbg_Println(DBG_BIT_Debug_STATUS,"SendCnt:%d success",m_send.ResendCnt);
#endif
return BUSSEND_SUCC;//数据发送成功
}
}
}else{
#if DBG_LOG_EN
Dbg_Println(DBG_BIT_Debug_STATUS,"data end");
#endif
return DATA_END;//数据有效期结束
}
}else{
#if DBG_LOG_EN
Dbg_Println(DBG_BIT_Debug_STATUS,"retry end,%d",m_send.ResendCnt );
#endif
return RETRY_END;//没有重发次数
}
}
return BUSSEND_WAIT;//等待
}
/**********************************************************
* @brief 设置发送标志、组包、选择数据有效期档位2025-03-25
* data: 发送数据
* sled 数据长度
* SCnt: 设置数据发送次数
* indate 设置数据有效期
* tim_val: 发送时间间隔
* @retval None
* */
void Set_GroupSend(U8_T *data,U16_T sled,U8_T SCnt,U32_T indate,U32_T tim_val)
{
if((sled == 0x00)|| (sled > USART_BUFFER_SIZE)) return;
memset(m_send.SendBuffer,0, USART_BUFFER_SIZE);
memcpy(m_send.SendBuffer,data,sled);
m_send.SendLen = sled;
m_send.DataValid_Time = indate;//数据有效期
m_send.TotalCnt = SCnt; //数据发送次数
m_send.DataWait_Time = tim_val;//发送数据间隔
m_send.ASend_Flag = 0x01;
m_send.ResendCnt = 0x00;
m_send.BusbusyTimeout = SysTick_1ms;
}
//清除发送标志
//void Clear_SendFlag(void)
//{
// m_send.ASend_Flag = 0x00;
//}
void BUS485_SetBaud(U32_T baud)
{
m_send.SetBaudFlag = 0x01;
m_send.SetBaud = baud;
}
/**********************************************************
* @brief 检测总线空闲在While(1)里调用 2025-03-25
* @retval None
* */
void BUS485Send_Task(void) //2025-03-29
{
U8_T ret = 0xFF;
//空闲等待
if(m_send.ASend_Flag == 0x01)//初始化发送
{
ret = MultSend_Task(m_send.SendBuffer,m_send.SendLen,m_send.ASend_Flag);
if( (ret == DATA_END)||(ret == RETRY_END) )//判断发送数据是否有效
{
#if DBG_LOG_EN
Dbg_Println(DBG_BIT_Debug_STATUS,"send end");
#endif
m_send.ASend_Flag = 0x00;
/*设置波特率*/
if( m_send.SetBaudFlag == 0x01 ){
UARTx_ChangeBaud(UART_2,m_send.SetBaud);
m_send.SetBaudFlag = 0x00;
m_send.SetBaud = 0x00;
}
}
}
}
/**********************************************************
* @brief 检测总线空闲,在定时器中断里调用
* @retval None
* */
void BusIdle_Task(void)
{
if(m_send.BusState_Flag != UART_BUSIDLE && m_send.BUSBUSY_LOCK != 0x01)
{
CK_CPU_DisAllNormalIrq();
if( ( m_send.HighBit_Flag == 0x01 )&&( ( SysTick_1ms - m_send.BusState_Tick ) >= ( g_uart.RecvTimeout + m_send.Bus_DelayTime )) )
{
m_send.BusState_Flag = UART_BUSIDLE;
}
CK_CPU_EnAllNormalIrq();
}
}
/*******************************************************************
* @brief 检测总线繁忙在串口接收RX引脚的外部中断服务函数里调用
* @retval None
* */
void BusBusy_Task(void)
{
CK_CPU_DisAllNormalIrq();
m_send.BusState_Flag = UART_BUSBUSY;
m_send.BusState_Tick = SysTick_1ms;
m_send.Bus_DelayTime = (SysTick_1ms - m_send.ASend_Tick)%10;//随机延时
if(READ_RXLEVEL_STATE == 0x01){
m_send.HighBit_Flag = 0x01; //高电平标志置位
}else if(READ_RXLEVEL_STATE == 0x00){
m_send.HighBit_Flag = 0x00; //低电平
}
CK_CPU_EnAllNormalIrq();
}
/*调试信息输出接口*/
U32_T Dbg_Switch = (DBG_OPT_Debug_STATUS << DBG_BIT_Debug_STATUS)
+ (DBG_OPT_DEVICE_STATUS << DBG_BIT_DEVICE_STATUS)
+ (DBG_OPT_SYS_STATUS << DBG_BIT_SYS_STATUS);
#if DBG_LOG_EN
char Dbg_Buffer[512] = {0};
U32_T SysTick_Now = 0, SysTick_Last = 0, SysTick_Diff = 0;
#endif
void Dbg_Print(int DbgOptBit, const char *cmd, ...){
#if DBG_LOG_EN
U16_T str_offset = 0;
if (Dbg_Switch & (1 << DbgOptBit)) {
SysTick_Now = SysTick_1ms;
SysTick_Diff = SysTick_Now - SysTick_Last; //上一次打印时间差
SysTick_Last = SysTick_Now;
str_offset = snprintf(Dbg_Buffer, sizeof(Dbg_Buffer),"%8d [%6d]: ", SysTick_Now, SysTick_Diff);
DBG_Printf((U8_T *)Dbg_Buffer,str_offset);
va_list args; //定义一个va_list类型的变量用来储存单个参数
va_start(args, cmd); //使args指向可变参数的第一个参数
str_offset = vsnprintf(Dbg_Buffer, sizeof(Dbg_Buffer) ,cmd, args); //必须用vprintf等带V的
va_end(args); //结束可变参数的获取
DBG_Printf((U8_T *)Dbg_Buffer,str_offset);
}
#endif
}
void Dbg_Println(int DbgOptBit, const char *cmd, ...){
#if DBG_LOG_EN
U16_T str_offset = 0;
if (Dbg_Switch & (1 << DbgOptBit)) {
SysTick_Now = SysTick_1ms;
SysTick_Diff = SysTick_Now - SysTick_Last; //上一次打印时间差
SysTick_Last = SysTick_Now;
str_offset = snprintf(Dbg_Buffer, sizeof(Dbg_Buffer) , "%8ld [%6ld]: ", SysTick_Now, SysTick_Diff);
DBG_Printf((U8_T *)Dbg_Buffer,str_offset);
va_list args; //定义一个va_list类型的变量用来储存单个参数
va_start(args, cmd); //使args指向可变参数的第一个参数
str_offset = vsnprintf(Dbg_Buffer, sizeof(Dbg_Buffer) ,cmd, args); //必须用vprintf等带V的
va_end(args); //结束可变参数的获取
DBG_Printf((U8_T *)Dbg_Buffer,str_offset);
DBG_Printf((U8_T *)"\r\n",2);
}
#endif
}
void Dbg_Print_Buff(int DbgOptBit, const char *cmd, U8_T *buff,U16_T len){
#if DBG_LOG_EN
U16_T str_offset = 0;
if (Dbg_Switch & (1 << DbgOptBit)) {
SysTick_Now = SysTick_1ms;
SysTick_Diff = SysTick_Now - SysTick_Last; //上一次打印时间差
SysTick_Last = SysTick_Now;
str_offset = snprintf(Dbg_Buffer, sizeof(Dbg_Buffer) , "%8ld [%6ld]:%s ", SysTick_Now, SysTick_Diff,cmd);
DBG_Printf((U8_T *)Dbg_Buffer,str_offset);
for (uint32_t i = 0; i < len; i++) {
SYSCON_IWDCNT_Reload();
str_offset = snprintf(Dbg_Buffer, sizeof(Dbg_Buffer) , "%02X ", buff[i]);
DBG_Printf((U8_T *)Dbg_Buffer,str_offset);
}
DBG_Printf((U8_T *)"\r\n",2);
}
#endif
}

View File

@@ -0,0 +1,143 @@
/*
******************************************************************************
* @file apt32f102_iostring.c
* @author APT AE Team
* @version V1.00
* @date 2020/05/21
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/******************************************************************************
* Include Files
******************************************************************************/
#include "apt32f102.h"
#include "apt32f102_uart.h"
#include "stdarg.h"
#include "stddef.h"
#include "stdio.h"
#define LDCC_DATA_P 0xe001105c /* LDCC Register. */
#define LDCC_BIT_STATUS 0x80000000 /* LDCC Status bit. */
//#define _debug_uart_io
/******************************************************************************
* Main code
******************************************************************************/
void __putchar__ (char ch)
{
#ifdef _debug_uart_io
//UARTTxByte(UART0,s); //uart 0
UARTTxByte(UART1,s); //uart 1
#else
//select debug serial Pane
volatile unsigned int *pdata = (unsigned int *)LDCC_DATA_P;
while (*pdata & LDCC_BIT_STATUS); //Waiting for data read.
*pdata = ch;
#endif
}
int *myitoa(int value, int* string, int radix)
{
int tmp[33];
int* tp = tmp;
int i;
unsigned v;
int sign;
int* sp;
if (radix > 36 || radix <= 1)
{
return 0;
}
sign = (radix == 10 && value < 0);
if (sign)
v = -value;
else
v = (unsigned)value;
while (v || tp == tmp)
{
i = v % radix;
v = v / radix;
if (i < 10) {
*tp++ = i+'0';
} else {
*tp++ = i + 'a' - 10;
}
}
sp = string;
if (sign)
*sp++ = '-';
while (tp > tmp)
*sp++ = *--tp;
*sp = 0;
return string;
}
void my_printf(const char *fmt, ...)
{
// const char *s;
const int *s;
int d;
//char ch, *pbuf, buf[16];
char ch, *pbuf;
int buf[16];
va_list ap;
va_start(ap, fmt);
while (*fmt) {
if (*fmt != '%') {
__putchar__(*fmt++);
continue;
}
switch (*++fmt) {
case 's':
s = va_arg(ap, const int *);
for ( ; *s; s++) {
__putchar__(*s);
}
break;
case 'd':
d = va_arg(ap, int);
myitoa(d, buf, 10);
for (s = buf; *s; s++) {
__putchar__(*s);
}
break;
case 'x':
case 'X':
d = va_arg(ap, int);
myitoa(d, buf, 16);
for (s = buf; *s; s++) {
__putchar__(*s);
}
break;
// Add other specifiers here...
case 'c':
case 'C':
ch = (unsigned char)va_arg(ap, int);
pbuf = &ch;
__putchar__(*pbuf);
break;
default:
__putchar__(*fmt);
break;
}
fmt++;
}
va_end(ap);
}

3453
Source/arch/apt32f102a.svc Normal file

File diff suppressed because it is too large Load Diff

213
Source/arch/crt0.S Normal file
View File

@@ -0,0 +1,213 @@
//start from __start,
//(0)initialize vector table
//(1)initialize all registers
//(2)prepare initial reg values for user process
//(3)initialize supervisor mode stack pointer
//(4)construct ASID Table
//(5)prepare PTE entry for user process start virtual address
//(6)creat a mapping between VPN:0 and PFN:0 for kernel
//(7)set VBR register
//(8)enable EE and MMU
//(9)jump to the main procedure using jsri main
#define UserOption 0x55aa0005
.export vector_table
//.import VecTable
.align 10
vector_table: //totally 256 entries
// .long __start
// .rept 128
// .long __dummy
// .endr
.long __start
.long MisalignedHandler
.long AccessErrHandler
.long DummyHandler
.long IllegalInstrHandler
.long PriviledgeVioHandler
.long DummyHandler
.long BreakPointHandler
.long UnrecExecpHandler
.long DummyHandler
.long DummyHandler
.long DummyHandler
.long DummyHandler
.long DummyHandler
.long DummyHandler
.long DummyHandler
.long Trap0Handler
.long Trap1Handler
.long Trap2Handler
.long Trap3Handler
.long DummyHandler
.long DummyHandler
.long DummyHandler
.long DummyHandler
.long DummyHandler
.long DummyHandler
.long DummyHandler
.long DummyHandler
.long DummyHandler
.long DummyHandler
.long DummyHandler
.long PendTrapHandler
.long DummyHandler//CORETHandler
.long DummyHandler//SYSCONIntHandler
.long DummyHandler//IFCIntHandler
.long DummyHandler//ADCIntHandler
.long DummyHandler//EPT0IntHandler
.long DummyHandler//EPT0EMIntHandler
.long DummyHandler//WWDTHandler
.long EXI0IntHandler
.long EXI1IntHandler
.long DummyHandler//GPT0IntHandler
.long DummyHandler//GPT1IntHandler
.long DummyHandler
.long DummyHandler//RTCIntHandler
.long DummyHandler//UART0IntHandler
.long UART1IntHandler
.long UART2IntHandler//USARTIntHandler
.long DummyHandler
.long DummyHandler//I2CIntHandler
.long DummyHandler
.long DummyHandler//SPI0IntHandler
.long DummyHandler//SIO0IntHandler
.long EXI2to3IntHandler
.long EXI4to9IntHandler
.long EXI10to15IntHandler
.long DummyHandler//CNTAIntHandler
.long DummyHandler//TKEYIntHandler
.long DummyHandler//LPTIntHandler
.long DummyHandler//LEDIntHandler
.long DummyHandler//BT0IntHandler
.long BT1IntHandler
.long DummyHandler//BT2IntHandler
.long DummyHandler//BT3IntHandler
.long UserOption
.text
.export __start
.long 0x00000000
.long 0x00000000
// .long __start
__start:
//initialize all registers
movi r0, 0
movi r1, 0
movi r2, 0
movi r3, 0
movi r4, 0
movi r5, 0
movi r6, 0
movi r7, 0
//movi r8, 0
//movi r9, 0
//movi r10, 0
//movi r11, 0
//movi r12, 0
//movi r13, 0
//movi r14, 0
//movi r15, 0
//set VBR
lrw r2, vector_table
mtcr r2, cr<1,0>
//enable EE bit of psr
mfcr r2, cr<0,0>
bseti r2, r2, 8
mtcr r2, cr<0,0>
////set rom access delay
// lrw r1, 0xe00000
// lrw r2, 0x7
// st.w r2, (r1,0x0)
////enable cache
// lrw r1, 0xe000f000
// movi r2, 0x2
// st.w r2, (r1,0x0)
// lrw r2, 0x29
// st.w r2, (r1,0x4)
// movi r2, 0x1
// st.w r2, (r1,0x0)
//disable power peak
lrw r1, 0xe000ef90
movi r2, 0x0
st.w r2, (r1, 0x0)
//initialize kernel stack
lrw r7, __kernel_stack
mov r14,r7
subi r6,r7,0x4
//lrw r3, 0x40
lrw r3, 0x04
subu r4, r7, r3
lrw r5, 0x0
INIT_KERLE_STACK:
addi r4, 0x4
st.w r5, (r4)
//cmphs r7, r4
cmphs r6, r4
bt INIT_KERLE_STACK
__to_main:
lrw r0,__main
jsr r0
mov r0, r0
mov r0, r0
lrw r15, __exit
lrw r0,main
jmp r0
mov r0, r0
mov r0, r0
mov r0, r0
mov r0, r0
mov r0, r0
.export __exit
__exit:
lrw r4, 0x20003000
//lrw r5, 0x0
mov r5, r0
st.w r5, (r4)
mfcr r1, cr<0,0>
lrw r1, 0xFFFF
mtcr r1, cr<11,0>
lrw r1, 0xFFF
movi r0, 0x0
st r1, (r0)
.export __fail
__fail:
lrw r1, 0xEEEE
mtcr r1, cr<11,0>
lrw r1, 0xEEE
movi r0, 0x0
st r1, (r0)
__dummy:
br __fail
.export DummyHandler
DummyHandler:
br __fail
.data
.align 10
.long __start

44
Source/arch/mem_init.c Normal file
View File

@@ -0,0 +1,44 @@
/*
* Filename : mem_init.c
*
* Memory Initialization
*
* Copyrights 2015 @ APTCHIP
*
*
*/
#include "string.h"
extern char _end_rodata[];
extern char _start_data[];
extern char _end_data[];
extern char _bss_start[];
extern char _ebss[];
void __main( void )
{
char *dst = _start_data;
char *src = _end_rodata;
/* if the start of data (dst)
is not equal to end of text (src) then
copy it, else it's already in the right place
*/
if( _start_data != _end_rodata ) {
// __memcpy_fast( dst, src, (_end_data - _start_data));
memcpy( dst, src, (_end_data - _start_data));
}
/* zero the bss
*/
if( _ebss - _bss_start ) {
// __memset_fast( _bss_start, 0x00, ( _ebss - _bss_start ));
memset( _bss_start, 0x00, ( _ebss - _bss_start ));
}
}

14
Source/cdkws.mk Normal file
View File

@@ -0,0 +1,14 @@
.PHONY: clean All Project_Title Project_Build
All: Project_Title Project_Build
Project_Title:
@echo "----------Building project:[ MD203F8P - BuildSet ]----------"
Project_Build:
@make -r -f MD203F8P.mk -j 8 -C ./
clean:
@echo "----------Cleaning project:[ MD203F8P - BuildSet ]----------"

58
Source/ckcpu.ld Normal file
View File

@@ -0,0 +1,58 @@
MEMORY
{
ROM(RX) : ORIGIN = 0x00000000, LENGTH = 10K
RAM(RWX) : ORIGIN = 0x20000000, LENGTH = 4K
}
__kernel_stack = ORIGIN(RAM) + LENGTH(RAM) -8 ;
ENTRY(__start)
SECTIONS {
.text :
{
. = ALIGN(0x4) ;
*crt0.o (.text)
*(.text)
} >ROM
.RomCode :
{
. = ALIGN(0x4) ;
*(.text)
} >ROM
.rodata :
{
. = ALIGN(0x4) ;
*(.rodata)
*(.rodata.*)
. = ALIGN(0x4) ;
_end_rodata = .;
} >ROM
.data : AT(_end_rodata)
{
. = ALIGN(0x4) ;
_start_data = .;
*( .data );
. = ALIGN(0x4) ;
_end_data = .;
} >RAM
.bss :
{
. = ALIGN(0x4) ;
_bss_start = . ;
*(.sbss)
*(.sbss.*)
*(.scommon)
*(.bss)
*(.bss.*)
*(COMMON)
. = ALIGN(0x4) ;
_ebss = . ;
_end = . ;
end = . ;
} >RAM
}

View File

@@ -0,0 +1,84 @@
#20180129 V1.00 初版
#20180131 V1.02
1.apt32f102_i2c.h修改I2C_Slave_CONFIG(); PA0.1定义错误
2.apt32f102_i2c.c修改void I2C_Slave_Receive(void)
3.apt32f102_interrupt.c修改LPTIntHandler();
4.syscon.h修改“SYSCON_SCLKCR_RST ((CSP_REGISTER_T)0xD22Dul<<16)”
5.syscon.C SYSCON_RST_VALUE(void)
5.EPT.C &EPT.H 修改
6.syscon.h修改 INTDET_POL_X_TypeDef枚举;
7.apt32f102_initial.c 修改EPT0_Config()
8.apt32f102_interrupt.c修改EPT0IntHandler();
9.修改了CRC输入函数分32/16/8bit数据输入
10.增加了GPT同步及触发事件函数
11.增加了WWDT初始化函数
#20201124 V1.02
1.修改UART_IO_Init(); PA0.15 PA0.14初始化
2.删除SYSCON_CONFIG()"EVTRG function 程序屏蔽"
3.删除了tkey相关残留的程序
#20201124 V1.03
1.增加了touch key库文件
#20201202 V1.04
1.修改了SYSCON_General_CMD();函数fix 使用外部晶振后调试口被占用的问题
2.修改了BT PB0.0配置错误的问题
3.修改了外部中断向量EXI9错误的问题
4.修改了外部中断向量EXI4to9IntHandleEXI10to15IntHandler
5.修改了GPT.h中PB0.1定义错误的问题
6.增加了IFC读ReadDataArry_U8函数读数据时字节长度可不按4的倍数
7.修改了spi.c中PA0.8配置错误的问题
#20200121 V1.05
1.修改了ADC初始化中的错误
2.修改了apt32f102_interrupt.c中EXI15的错误
3.修改了BT.c中BT0和BT1混淆的问题
4.修复了使用触摸FVR参考时调用ADC造成触摸失灵的问题
5.增加了tkey的睡眠睡醒功能
6.修改了1.04 .s文件中外部中断定义错误的问题
#20210601 V1.06
1.修改了COUNTERA IO配置错误
2.修改了BT中IO配置错误
3.修改了EPT PB0.5 CHAY配置错误
4.修改了EPT 外部触发端口使能配置相反的错误
5.增加了I2C做从机时配置i2c中断优先级为最高的配置
6.修改了调用GPIO_DeInit后调试口被修改的问题
7.修复了TK在FVR模式以外开启TCH3后触摸初始化卡死的问题
8.修改了TK参数配置中使能TK的方式采用更直观的方式
9.修改了TK参数配置中EC默认电压为3VFVR参考默认2.048V防止客户使用3.3V工作电压时一开始TK无法工作的问题
#20210621 V1.08
1.解决了触摸长时间睡眠后唤醒失败的问题功耗增加10uA
2.修改了注释为英文
3.修改了不同版本的触摸库文件方便不同应用
#20210801 V1.09
1.修改了syscon.c解决了系统主频在切换时偶尔遇到的时钟卡死问题
2.增加了IO remap功能函数
3.修正1_09和1_09M这两个版本.a库多键模式按键误清零的问题
4.删除之前版本initial.c中对EVTRG function的配置以解决因此产生的某些情况下睡眠后功耗异常的问题
#20210825 V1.10
1.修改了SPI做从机时PA0.14/PA0.15配置错误的问题
2.修改了RTC中参数的定义为volatile解决某些意外情况下进位时小时位出现错误值的问题
3.增加了BT中控制波形stop时输出高/低电平函数
4.修改gpio.c中配置外部组扩展配置时PB0组IO无法配置的问题,增加了EXI16~19的中断函数
5.syscon中加入clo输出配置函数
6.在syscon.c中增加Set_INT_Priority();函数,可直接配置中断优先级
7.在fwlib文件夹增加了iostring.c文件
8.修改库文件包名称为APT32F102x_StdPeriph_Lib
#20211101 V1.11
1.修改了SIO做RX时配置错误的问题
2.增加了debug print功能
3.增加了芯片svc文件方便查看芯片register内容
4.解决了TK和ADC选择不同参考源时造成的互相影响的问题修改了ADC.c和TK库文件
5.修改了EPT中EVTRG配置移位错误
#20211122 V1.12
1.修改了GPT 同步触发模式的配置定义错误
2.增加了频率校准函数std_clk_calib();支持HFOSC IMOSC频率软件校准
3.lib_102ClkCalib_1_03修改了1.02的校准库在与触摸低功耗共同使用时会造成睡眠功耗偏大到1.2mA的问题
#20211213 V1.13
1.修改了在使用ADC时因为配置ADC序列和序列个数不一致而可能引起的ADC卡死问题
2.修改了UART初始化使能函数解决了因配置顺序导致INT_TX_DONE中断无法进入的问题
3.修改了IFC_MR中不同时钟频率下WAIT和SPEED默认值
4.解除了TK使用FVR模式参考电压固定选择4.096V的限制可选择2.048V"抗干扰能力低于4.096V"
#20220825 V1.15
1.修改去除部分编译中出现的警告
2.修改触摸库函数增加因异常情况overflow后造成的按键扫描卡住问题
3.修改部分代码中注释的书写问题
4.修改了uart初始化中奇偶校验错误的问题

View File

@@ -0,0 +1,16 @@
#Touch Key库最新版本V1.15
#Touch Key中断扫描版本
lib_102TKey_1_15.a 触摸库文件完整版(默认库文件)
lib_102TKey_1_15C.a 触摸库文件精简版,程序占用空间更小,扫描速度更快,抗干扰性能降低,睡眠功耗更低
#Touch Key主循环扫描版本
lib_102TKey_1_15M.a 触摸库文件主循环扫描完整版,不支持睡眠唤醒
lib_102TKey_1_15MC.a 触摸库文件主循环扫描精简版程序占用空间更小扫描速度更快抗干扰性能降低去除coret占用没有长按强制更新功能不支持睡眠唤醒
#说明:
C---Compression
M---Main Loop
#注意:
1. 使用Touch Key主循环扫描版本需要在主循环中添加tk_prgm();函数每次执行时间在1~1.8ms之间
2. 未使用coret功能的版本需要在apt32f102_interrupt.c中重新打开CORETHandler()入口
3. 中断扫描版本:每一轮的按键扫描时间可控,触摸体验良好;会占用中断资源,如果有高时序要求的中断,没有配置中断好中断优先级的话会影响高时序要求的中断
4. 主循环版本:不会占用中断资源,对别的中断不会有影响;每一轮的按键扫描时间不可控,如果主循环一次循环里有函数占用大量时间,会影响按键的触摸体验
5. 使用1.15版本必须在linker中包含libm数学库

146
Source/drivers/apt32f102.c Normal file
View File

@@ -0,0 +1,146 @@
/*
******************************************************************************
* @file apt32f102.c
* @author APT AE Team
* @version V1.01
* @date 2019/04/05
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "apt32f102.h"
/**
* @addtogroup Struct pointer assignment Functions
* @{
*/
CSP_CK801_T *CK801 = (CSP_CK801_T *)CK801_BASEADDR ;
CSP_IFC_T *IFC = (CSP_IFC_T *)APB_IFCBase ;
CSP_SYSCON_T *SYSCON = (CSP_SYSCON_T *)APB_SYSCONBase ;
CSP_TKEY_T *TKEY = (CSP_TKEY_T *)APB_TKEYBase ;
CSP_TKEYBUF_T *TKEYBUF = (CSP_TKEYBUF_T *)APB_TKEYBUFBase;
CSP_ADC12_T *ADC0 = (CSP_ADC12_T *)APB_ADC0Base ;
CSP_GPIO_T *GPIOA0 = (CSP_GPIO_T *)APB_GPIOA0Base ; // A0
CSP_GPIO_T *GPIOB0 = (CSP_GPIO_T *)APB_GPIOB0Base ; // B0
CSP_IGRP_T *GPIOGRP = (CSP_IGRP_T *)APB_IGRPBase;
CSP_UART_T *UART0 = (CSP_UART_T *)APB_UART0Base ;
CSP_UART_T *UART1 = (CSP_UART_T *)APB_UART1Base ;
CSP_UART_T *UART2 = (CSP_UART_T *)APB_UART2Base ;
CSP_SSP_T *SPI0 = (CSP_SSP_T *)APB_SPI0Base ;
CSP_I2C_T *I2C0 = (CSP_I2C_T *)APB_I2C0Base ;
CSP_SIO_T *SIO0 = (CSP_SIO_T *)APB_SIO0Base ;
CSP_CA_T *CA0 = (CSP_CA_T *)APB_CNTABase ;
CSP_GPT_T *GPT0 = (CSP_GPT_T *)APB_GPT0Base;
CSP_EPT_T *EPT0 = (CSP_EPT_T *)APB_EPT0Base ;
CSP_ETCB_T *ETCB = (CSP_ETCB_T *)APB_ETCBBase ;
CSP_RTC_T *RTC = (CSP_RTC_T *)APB_RTCBase ;
CSP_LPT_T *LPT = (CSP_LPT_T *)APB_LPTBase ;
CSP_WWDT_T *WWDT = (CSP_WWDT_T *)APB_WWDTBase ;
CSP_BT_T *BT0 = (CSP_BT_T *)APB_BT0Base ;
CSP_BT_T *BT1 = (CSP_BT_T *)APB_BT1Base ;
CSP_CRC_T *CRC = (CSP_CRC_T *)AHB_CRCBase ;
CSP_HWD_T *HWD = (CSP_HWD_T *)APB_HWDBase ;
int __divsi3 ( int a, int b)
{
int PSR;
__asm volatile(
"mfcr %0 , psr \n\r"
"psrclr ie \n\r"
: "=r"(PSR)
);
HWD->CR = 0;
HWD->DIVIDENT = a;
HWD->DIVISOR = b;
PSR |= 0x80000000;
__asm volatile(
"mtcr %0 , psr \n\r"
:
:"r"(PSR)
);
return HWD->QUOTIENT;
}
unsigned int __udivsi3 ( unsigned int a, unsigned int b)
{
int PSR;
__asm volatile(
"mfcr %0 , psr \n\r"
"psrclr ie \n\r"
: "=r"(PSR)
);
HWD->CR = 1;
HWD->DIVIDENT = a;
HWD->DIVISOR = b;
PSR |= 0x80000000;
__asm volatile(
"mtcr %0 , psr \n\r"
:
:"r"(PSR)
);
return HWD->QUOTIENT;
}
int __modsi3 ( int a, int b)
{
int PSR;
__asm volatile(
"mfcr %0 , psr \n\r"
"psrclr ie \n\r"
: "=r"(PSR)
);
HWD->CR = 0;
HWD->DIVIDENT = a;
HWD->DIVISOR = b;
PSR |= 0x80000000;
__asm volatile(
"mtcr %0 , psr \n\r"
:
:"r"(PSR)
);
return HWD->REMAIN;
}
unsigned int __umodsi3 ( unsigned int a, unsigned int b)
{
int PSR;
__asm volatile(
"mfcr %0 , psr \n\r"
"psrclr ie \n\r"
: "=r"(PSR)
);
HWD->CR = 1;
HWD->DIVIDENT = a;
HWD->DIVISOR = b;
PSR |= 0x80000000;
__asm volatile(
"mtcr %0 , psr \n\r"
:
:"r"(PSR)
);
return HWD->REMAIN;
}
/******************* (C) COPYRIGHT 2019 APT Chip *****END OF FILE****/

View File

@@ -0,0 +1,275 @@
/*
******************************************************************************
* @file apt32f102_ck801.c
* @author APT AE Team
* @version V1.08
* @date 2021/06/21
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Includes ------------------------------------------------------------------*/
#include "apt32f102.h"
#include "apt32f102_ck801.h"
void CK801_Init(void)
{
/* Initial the Interrupt source priority level registers */
CK801->IPR[0] = 0xC0804000;
CK801->IPR[1] = 0xC0004000;
CK801->IPR[2] = 0xC0804000;
CK801->IPR[3] = 0xC0804000;
CK801->IPR[4] = 0xC0804000;
CK801->IPR[5] = 0xC0804000;
CK801->IPR[6] = 0xC0804000;
CK801->IPR[7] = 0xC0804000;
CK801->IPTR = 0x00000000;//disable threshold
}
void force_interrupt(IRQn_Type IRQn)
{
CK801->ISPR = (1 << (uint32_t)(IRQn));
}
void CK_CPU_EnAllNormalIrq(void)
{
asm ("psrset ee,ie");
}
void CK_CPU_DisAllNormalIrq(void)
{
asm ("psrclr ie");
}
/* ########################## NVIC functions #################################### */
/**
* @brief Enable Interrupt in NVIC Interrupt Controller
*
* @param IRQn The positive number of the external interrupt to enable
*
* Enable a device specific interupt in the NVIC interrupt controller.
* The interrupt number cannot be a negative value.
*/
__INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
{
CK801->ISER = 1 << (uint32_t)(IRQn);
}
/**
* @brief Disable the interrupt line for external interrupt specified
*
* @param IRQn The positive number of the external interrupt to disable
*
* Disable a device specific interupt in the NVIC interrupt controller.
* The interrupt number cannot be a negative value.
*/
__INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)
{
CK801->ICER = 1 << (uint32_t)(IRQn);
}
/**
* @brief Read the interrupt pending bit for a device specific interrupt source
*
* @param IRQn The number of the device specifc interrupt
* @return always 0
*/
__INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)
{
return (uint32_t)(CK801->ISPR);
}
/**
* @brief Set the pending bit for an external interrupt
*
* @param IRQn The number of the interrupt for set pending
*
* No effect.
*/
__INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)
{
CK801->ISPR = (1 << (uint32_t)(IRQn));
}
/**
* @brief Clear the pending bit for an external interrupt
*
* @param IRQn The number of the interrupt for clear pending
*
* No effect.
*/
__INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)
{
CK801->ICPR = (1 << (uint32_t)(IRQn));
}
/**
* @brief Read the active bit for an external interrupt
*
* @return always 0
*
*/
__INLINE uint32_t NVIC_GetActive(IRQn_Type IRQn)
{
return (CK801->IABR & (1 << IRQn));
}
__INLINE uint32_t NVIC_GetActiveVector(void)
{
unsigned int vectactive = 0;
//isr low 8bits gives the active vector
vectactive = (CK801 ->ISR & 0xff);
return vectactive;
}
/**
* @brief Set the priority for an interrupt
*
* @param IRQn The number of the interrupt for set priority
* @param priority The priority to set ,the number rang: [0-3]
*
* Set the priority for the specified interrupt. The interrupt
* number must be positive to specify an external (device specific)
* interrupt.
*/
__INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
{
uint32_t tmp = ((IRQn & 0x03) << 3);
uint8_t index = IRQn>>2;
if(IRQn >= 0) {
CK801->IPR[index] &= ~(0xff << tmp);
CK801->IPR[index] |= priority << (tmp+6);
}
}
/**
* @brief Read the priority for an interrupt
*
* @param IRQn The number of the interrupt for get priority
* @return The priority for the interrupt
*
* Read the priority for the specified interrupt. The interrupt
* number must be positive to specify an external (device specific)
* interrupt.
*/
__INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn)
{
uint32_t tmp = ((IRQn & 0x03) << 3);
uint8_t index = IRQn>>2;
return (uint32_t)(CK801->IPR[index])>>(tmp + 6);
}
/*###################################################################*/
/*############# Threshold Enable & Set Threshold ###############*/
/*###################################################################*/
/************************************************************
* @brief enable NVIC threshold
* @name: NVIC_EnableThreshold
* @no param
*
*/
__INLINE void NVIC_EnableThreshold(void)
{
CK801 ->IPTR |= 0x80000000;
}
/************************************************************
* @brief disnable NVIC threshold
* @name: NVIC_DisableThreshold
* @no param
*
*/
__INLINE void NVIC_DisableThreshold(void)
{
CK801 ->IPTR &= ~0x80000000;
}
/************************************************************
* @brief set NVIC Priothreshold
* @name: NVIC_SetPrioThreshold
* @param prioshreshold the priority of threshold[0,3]
*
*/
__INLINE void NVIC_SetPrioThreshold(uint8_t prioshreshold)
{
CK801 -> IPTR &= 0xffffff00;
CK801 -> IPTR |= (prioshreshold << 6);
}
/************************************************************
* @brief set NVIC Vectthreshold
* @name: NVIC_SetVectThreshold
* @param vectthreshold the vector of threshold[0,31]
*
*/
__INLINE void NVIC_SetVectThreshold(uint8_t vectthreshold)
{
CK801 -> IPTR &= 0xffff00ff;
CK801 -> IPTR |= ((vectthreshold + 32) << 8);
}
/*###################################################################*/
/*################ Low Power Wakeup Enable ###################*/
/*###################################################################*/
/*************************************************************
* @name: NVIC_PowerWakeUp_Enable
* @brief: enable the bit for Power wake up
* @param: irqn the irqnumber,eg:CK802_CORETIM_IRQn
*/
__INLINE void NVIC_PowerWakeUp_Enable(IRQn_Type irqn)
{
CK801->IWER |= (1 << irqn);
}
/*************************************************************
* @name: NVIC_PowerWakeUp_Disable
* @func: disable the bit for Power wake up
* @param: irqn the irqnumber,eg:CK802_CORETIM_IRQn
*/
__INLINE void NVIC_PowerWakeUp_Disable(IRQn_Type irqn)
{
CK801->IWDR |= (1 << irqn);
}
/*************************************************************
* @name: NVIC_PowerWakeUp_EnableAll
* @func: enable all bits for Power wake up
* @param: none
*/
__INLINE void NVIC_PowerWakeUp_EnableAll(void)
{
CK801->IWER = 0xffffffff;
}
/*************************************************************
* @name: NVIC_PowerWakeUp_EnableAll
* @func: disable all bits for Power wake up
* @param: none
*/
__INLINE void NVIC_PowerWakeUp_DisableAll(void)
{
CK801->IWDR = 0xffffffff;
}
/******************* (C) COPYRIGHT 2019 APT Chip *****END OF FILE****/

774
Source/include/apt32f102.h Normal file
View File

@@ -0,0 +1,774 @@
/*
******************************************************************************
* @file apt32f102_initial.c
* @author APT AE Team
* @version V1.08
* @date 2018/11/01
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef _apt32f102_H
#define _apt32f102_H
/* Includes ------------------------------------------------------------------*/
#include "apt32f102_types_local.h"
#include "apt32f102_ck801.h"
/**
@brief CK801 bits Structure
*/
typedef struct {
volatile unsigned int ReservedA[4]; //0xE000E000
volatile unsigned int CORET_CSR; //0xE000E010
volatile unsigned int CORET_RVR; //0xE000E014
volatile unsigned int CORET_CVR; //0xE000E018
volatile unsigned int CORET_CALIB; //0xE000E01C
volatile unsigned int ReservedB[56]; //0xE000E020
volatile unsigned int ISER; //0xE000E100
volatile unsigned int ReservedC[15]; //
volatile unsigned int IWER; //0xE000E140
volatile unsigned int ReservedD[15]; //
volatile unsigned int ICER; //0xE000E180
volatile unsigned int ReservedE[15]; //
volatile unsigned int IWDR; //0xE000E1C0
volatile unsigned int ReservedF[15]; //
volatile unsigned int ISPR; //0xE000E200
volatile unsigned int ReservedG[31]; //
volatile unsigned int ICPR; //0xE000E280
volatile unsigned int ReservedH[31]; //
volatile unsigned int IABR; //0xE000E300
volatile unsigned int ReservedI[63]; //
volatile unsigned int IPR[8]; //0xE000E400 ~ 0xE000E41C
volatile unsigned int ReservedJ[504]; //
volatile unsigned int ISR; //0xE000EC00
volatile unsigned int IPTR; //0xE000EC04
} CSP_CK801_T;
/**
@brief IFC bits Structure
*/
typedef volatile struct {
volatile unsigned int IDR ;
volatile unsigned int CEDR ;
volatile unsigned int SRR ;
volatile unsigned int CMR ;
volatile unsigned int CR ;
volatile unsigned int MR ;
volatile unsigned int FM_ADDR ;
volatile unsigned int Reserved ;
volatile unsigned int KR ;
volatile unsigned int IMCR ;
volatile unsigned int RISR ;
volatile unsigned int MISR ;
volatile unsigned int ICR ;
} CSP_IFC_T ;
/**
@brief SYSCON bits Structure
*/
typedef volatile struct { /*!< SYSCON Structure */
volatile unsigned int IDCCR; /*!< 0x000: Identification & System Controller Clock Control Register */
volatile unsigned int GCER; /*!< 0x004: System Controller General Control Enable Register */
volatile unsigned int GCDR; /*!< 0x008: System Controller General Control Disable Register */
volatile unsigned int GCSR; /*!< 0x00C: System Controller General Control Status Register */
volatile unsigned int CKST; /*!< 0x010*/
volatile unsigned int RAMCHK; /*!< 0x014*/
volatile unsigned int EFLCHK; /*!< 0x018*/
volatile unsigned int SCLKCR; /*!< 0x01C: System Controller System Clock Selection & Division Register */
volatile unsigned int PCLKCR; /*!< 0x020: System Controller Peripheral Clock Selection & Division Register */
volatile unsigned int _RSVD0; /*!< 0x024*/
volatile unsigned int PCER0; /*!< 0x028: System Controller Peripheral Clock Enable Register */
volatile unsigned int PCDR0; /*!< 0x02C: System Controller Peripheral Clock Disable Register */
volatile unsigned int PCSR0; /*!< 0x030: System Controller Peripheral Clock Status Register */
volatile unsigned int PCER1; /*!< 0x034: System Controller Peripheral Clock Enable Register */
volatile unsigned int PCDR1; /*!< 0x038: System Controller Peripheral Clock Disable Register */
volatile unsigned int PCSR1; /*!< 0x03C: System Controller Peripheral Clock Status Register */
volatile unsigned int OSTR; /*!< 0x040: System Controller External OSC Stable Time Control Register */
volatile unsigned int _RSVD1; /*!< 0x044: System Controller PLL Stable Time Control Register */
volatile unsigned int _RSVD2; /*!< 0x048: System Controller PLL PMS Value Control Register */
volatile unsigned int LVDCR; /*!< 0x04C: System Controller LVD Control Register */
volatile unsigned int CLCR; /*!< 0x050: System Controller IMOSC Fine Adjustment Register*/
volatile unsigned int PWRCR; /*!< 0x054: System Controller Power Control Register */
volatile unsigned int PWRKEY; /*!< 0x058: System Controller Power Control Register */
volatile unsigned int _RSVD3; /*!< 0x05C: */
volatile unsigned int _RSVD4; /*!< 0x060: */
volatile unsigned int OPT1; /*!< 0x064: System Controller OSC Trim Control Register */
volatile unsigned int OPT0; /*!< 0x068: System Controller Protection Control Register */
volatile unsigned int WKCR; /*!< 0x06C: System Controller Clock Quality Check Control Register */
volatile unsigned int _RSVD5; /*!< 0x070: System Controller Clock Quality Check Control Register */
volatile unsigned int IMER; /*!< 0x074: System Controller Interrupt Enable Register */
volatile unsigned int IMDR; /*!< 0x078: System Controller Interrupt Disable Register */
volatile unsigned int IMCR; /*!< 0x07C: System Controller Interrupt Mask Register */
volatile unsigned int IAR; /*!< 0x080: System Controller Interrupt Active Register */
volatile unsigned int ICR; /*!< 0x084: System Controller Clear Status Register */
volatile unsigned int RISR; /*!< 0x088: System Controller Raw Interrupt Status Register */
volatile unsigned int MISR; /*!< 0x08C: System Controller Raw Interrupt Status Register */
volatile unsigned int RSR; /*!< 0x090: System Controller Raw Interrupt Status Register */
volatile unsigned int EXIRT; /*!< 0x094: System Controller Reset Status Register */
volatile unsigned int EXIFT; /*!< 0x098: System Controller External Interrupt Mode 1 (Positive Edge) Register */
volatile unsigned int EXIER; /*!< 0x09C: System Controller External Interrupt Mode 2 (Negative Edge) Register */
volatile unsigned int EXIDR; /*!< 0x0A0: System Controller External Interrupt Enable Register */
volatile unsigned int EXIMR; /*!< 0x0A4: System Controller External Interrupt Disable Register */
volatile unsigned int EXIAR; /*!< 0x0A8: System Controller External Interrupt Mask Register */
volatile unsigned int EXICR; /*!< 0x0AC: System Controller External Interrupt Active Register */
volatile unsigned int EXIRS; /*!< 0x0B0: System Controller External Interrupt Clear Status Register */
volatile unsigned int IWDCR; /*!< 0x0B4: System Controller Independent Watchdog Control Register */
volatile unsigned int IWDCNT; /*!< 0x0B8: SystCem Controller Independent Watchdog Counter Value Register */
volatile unsigned int IWDEDR; /*!< 0x0BC: System Controller Independent Watchdog Enable/disable Register*/
volatile unsigned int IOMAP0; /*!< 0x0C0: Customer Information Content mirror of 1st byte*/
volatile unsigned int IOMAP1; /*!< 0x0C4: Customer Information Content mirror of 1st byte*/
volatile unsigned int CINF0; /*!< 0x0C8: Customer Information Content mirror of 1st byte*/
volatile unsigned int CINF1; /*!< 0x0CC: Customer Information Content mirror of 1st byte*/
volatile unsigned int FINF0; /*!< 0x0D0: Customer Information Content mirror of 1st byte*/
volatile unsigned int FINF1; /*!< 0x0D4: Customer Information Content mirror of 1st byte*/
volatile unsigned int FINF2; /*!< 0x0D8: Customer Information Content mirror of 1st byte*/
volatile unsigned int _RSVD6; /*!< 0x0DC: Customer Information Content mirror of 1st byte*/
volatile unsigned int ERRINF; /*!< 0x0E0:*/
volatile unsigned int UID0 ; /*!< 0x0E4: Customer Information Content mirror of 1st byte*/
volatile unsigned int UID1 ; /*!< 0x0E8: Customer Information Content mirror of 1st byte*/
volatile unsigned int UID2 ; /*!< 0x0EC: Customer Information Content mirror of 1st byte*/
volatile unsigned int PWROPT; /*!< 0x0F0: Power recovery timmming control */
volatile unsigned int EVTRG; /*!< 0x0F4: Trigger gen */
volatile unsigned int EVPS; /*!< 0x0F8: Trigger prs */
volatile unsigned int EVSWF; /*!< 0x0FC: Trigger software force */
volatile unsigned int UREG0; /*!< 0x100: User defined reg0 */
volatile unsigned int UREG1; /*!< 0x104: User defined reg1 */
volatile unsigned int UREG2; /*!< 0x108: User defined reg0 */
volatile unsigned int UREG3; /*!< 0x10C: User defined reg1 */
} CSP_SYSCON_T;
/**
@brief ETCB bits Structure
*/
typedef volatile struct
{
volatile unsigned int EN; /* ETCB Enable */
volatile unsigned int SWTRG; /* ETCB Software Trigger Generator */
volatile unsigned int CH0CON0; /* ETCB Channel 0 Control Register 0 */
volatile unsigned int CH0CON1; /* ETCB Channel 0 Control Register 1 */
volatile unsigned int CH1CON0; /* ETCB Channel 1 Control Register 0 */
volatile unsigned int CH1CON1; /* ETCB Channel 1 Control Register 1 */
volatile unsigned int CH2CON0; /* ETCB Channel 2 Control Register 0 */
volatile unsigned int CH2CON1; /* ETCB Channel 2 Control Register 1 */
volatile unsigned int _RSVD0;
volatile unsigned int _RSVD1;
volatile unsigned int _RSVD2;
volatile unsigned int _RSVD3;
volatile unsigned int CH3CON; /* ETCB Channel 3 Control Register */
volatile unsigned int CH4CON; /* ETCB Channel 3 Control Register */
volatile unsigned int CH5CON; /* ETCB Channel 3 Control Register */
volatile unsigned int CH6CON; /* ETCB Channel 3 Control Register */
volatile unsigned int CH7CON; /* ETCB Channel 3 Control Register */
} CSP_ETCB_T, *CSP_ETCB_PTR;
/**
@brief TKEY bits Structure
*/
typedef volatile struct
{
volatile unsigned int TCH_CCR; /* Control Register */
volatile unsigned int TCH_CON0; /* Control Register */
volatile unsigned int TCH_CON1; /* Control Register */
volatile unsigned int TCH_SCCR; /* Hardmacro control */
volatile unsigned int TCH_SENPRD; /* Sensing target value */
volatile unsigned int TCH_VALBUF; /* Reference value capture value*/
volatile unsigned int TCH_SENCNT; /* Sensing counter value*/
volatile unsigned int TCH_TCHCNT; /* Reference counter value*/
volatile unsigned int TCH_THR; /* Match Status */
volatile unsigned int Reserved0;
volatile unsigned int TCH_RISR; /* Interrupt Enable */
volatile unsigned int TCH_IER; /* Interrupt Clear */
volatile unsigned int TCH_ICR; /* Sensing target value */
volatile unsigned int TCH_RWSR; /* Reference value capture value*/
volatile unsigned int TCH_OVW_THR; /* Sensing counter value*/
volatile unsigned int TCH_OVF; /* Reference counter value*/
volatile unsigned int TCH_OVT; /* Match Status */
volatile unsigned int TCH_SYNCR; /* Interrupt Enable */
volatile unsigned int TCH_EVTRG; /* Interrupt Clear */
volatile unsigned int TCH_EVPS; /* Sensing target value */
volatile unsigned int TCH_EVSWF; /* Reference value capture value*/
} CSP_TKEY_T, *CSP_TKEY_PTR;
/**
@brief TKEY advance bits Structure
*/
typedef volatile struct
{
volatile unsigned int TCH_CHVAL[18]; /* Reference value capture value */
volatile unsigned int TCH_SEQCON[18]; /* SEQ Hardmacro control */
} CSP_TKEYBUF_T, *CSP_TKEYBUF_PTR;
/**
@brief ADC0 bits Structure
*/
typedef volatile struct
{
volatile unsigned int ECR; /**< Clock Enable Register */
volatile unsigned int DCR; /**< Clock Disable Register */
volatile unsigned int PMSR; /**< Power Management Status Register */
volatile unsigned int Reserved0;
volatile unsigned int CR; /**< Control Register */
volatile unsigned int MR; /**< Mode Register */
volatile unsigned int SHR;
volatile unsigned int CSR; /**< Clear Status Register */
volatile unsigned int SR; /**< Status Register */
volatile unsigned int IER; /**< Interrupt Enable Register */
volatile unsigned int IDR; /**< Interrupt Disable Register */
volatile unsigned int IMR; /**< Interrupt Mask Register */
volatile unsigned int SEQ[16]; /**< Conversion Mode Register 0~11 */
volatile unsigned int PRI; /**< Conversion Priority Register */
volatile unsigned int TDL0; /**< Trigger Delay control Register */
volatile unsigned int TDL1; /**< Trigger Delay control Register */
volatile unsigned int SYNCR; /**< Sync Control Register */
volatile unsigned int Reserved1; /**< Trigger Filter Control Register */
volatile unsigned int Reserved2; /**< Trigger Filter Window Register */
volatile unsigned int EVTRG; /**< Event Trigger Control Register */
volatile unsigned int EVPS; /**< Event Prescale Register */
volatile unsigned int EVSWF; /**< Event Softtrig Register */
volatile unsigned int ReservedD[27];
volatile unsigned int DR[16]; /**< Convert Data Register */
volatile unsigned int CMP0; /**< Comparison Data Register */
volatile unsigned int CMP1; /**< Comparison Data Register */
volatile unsigned int DRMASK;
} CSP_ADC12_T, *CSP_ADC12_PTR;
/**
@brief GPIOX bits Structure
*/
typedef volatile struct
{
volatile unsigned int CONLR; /**< Control Low Register */
volatile unsigned int CONHR; /**< Control High Register */
volatile unsigned int WODR; /**< Write Output Data Register */
volatile unsigned int SODR; /**< Set Output Data (bit-wise) Register */
volatile unsigned int CODR; /**< Clear Output Data (bit-wise) Register*/
volatile unsigned int ODSR; /**< Output Data Status Register */
volatile unsigned int PSDR; /**< Pin Data Status Register */
volatile unsigned int FLTEN;
volatile unsigned int PUDR; /**< IO Pullup_Pulldown Register */
volatile unsigned int DSCR; /**< Output Driving Strength Register */
volatile unsigned int OMCR; /**< Slew-rate, Open-Drain Control */
volatile unsigned int IECR; /**< EXI enable control */
volatile unsigned int IEER;
volatile unsigned int IEDR;
} CSP_GPIO_T, *CSP_GPIO_PTR;
typedef volatile struct
{
volatile unsigned int IGRPL; /**< EXI group control */
volatile unsigned int IGRPH; /**< EXI group control */
volatile unsigned int IGREX;
volatile unsigned int IO_CLKEN;
} CSP_IGRP_T, *CSP_IGRP_PTR;
/**
@brief UART0~UART1 bits Structure
*/
typedef volatile struct
{
volatile unsigned int DATA; /**< Write and Read Data Register */
volatile unsigned int SR; /**< Status Register */
volatile unsigned int CTRL; /**< Control Register */
volatile unsigned int ISR; /**< Interrupt Status Register */
volatile unsigned int BRDIV; /**< Baud Rate Generator Register */
volatile unsigned int ReservedA[20];
} CSP_UART_T, *CSP_UART_PTR;
/**
@brief SPI0 bits Structure
*/
typedef struct
{
volatile unsigned int CR0; /**< Control Register 0 */
volatile unsigned int CR1; /**< Control Register 1 */
volatile unsigned int DR; /**< Receive FIFO(read) and transmit FIFO data register(write) */
volatile unsigned int SR; /**< Status register */
volatile unsigned int CPSR; /**< Clock prescale register */
volatile unsigned int IMSCR; /**< Interrupt mask set and clear register */
volatile unsigned int RISR; /**< Raw interrupt status register */
volatile unsigned int MISR; /**< Masked interrupt status register */
volatile unsigned int ICR; /**< Interrupt clear register */
} CSP_SSP_T, *CSP_SSP_PTR;
/**
@brief SIO0 bits Structure
*/
typedef struct
{
volatile unsigned int CR;
volatile unsigned int TXCR0;
volatile unsigned int TXCR1;
volatile unsigned int TXBUF;
volatile unsigned int RXCR0;
volatile unsigned int RXCR1;
volatile unsigned int RXCR2;
volatile unsigned int RXBUF;
volatile unsigned int RISR;
volatile unsigned int MISR;
volatile unsigned int IMCR;
volatile unsigned int ICR;
} CSP_SIO_T, *CSP_SIO_PTR;
/**
@brief I2C0 bits Structure
*/
typedef volatile struct
{
unsigned int CR; /* I2C Control */
unsigned int TADDR; /* I2C Target Address */
unsigned int SADDR; /* I2C Slave Address */
unsigned int ReservedD;
unsigned int DATA_CMD; /* I2C Rx/Tx Data Buffer and Command */
unsigned int SS_SCLH; /* I2C Standard Speed SCL High Count */
unsigned int SS_SCLL; /* I2C Standard Speed SCL Low Count */
unsigned int FS_SCLH; /* I2C Fast mode and Fast Plus SCL High Count*/
unsigned int FS_SCLL; /* I2C Fast mode and Fast Plus SCL Low Count*/
unsigned int ReservedA; /* I2C High Speed SCL High Count */
unsigned int ReservedC; /* I2C High Speed SCL Low Count */
unsigned int RX_FLSEL; /* I2C Receive FIFO Threshold */
unsigned int TX_FLSEL; /* I2C Transmit FIFO Threshold */
unsigned int RX_FL; /* I2C Receive FIFO Level */
unsigned int TX_FL; /* I2C Transmit FIFO Level */
unsigned int ENABLE; /* I2C Enable */
unsigned int STATUS; /* I2C Status */
unsigned int ReservedB; /* I2C Enable Status */
unsigned int SDA_TSETUP; /* I2C SDA Setup Time */
unsigned int SDA_THOLD; /* I2C SDA hold time length */
unsigned int SPKLEN; /* I2C SS and FS Spike Suppression Limit */
//unsigned int HS_SPKLEN; /* I2C HS Spike Suppression Limit */
unsigned int ReservedE;
unsigned int MISR; /* I2C Masked Interrupt Status */
unsigned int IMSCR; /* I2C Interrupt Enable */
unsigned int RISR; /* I2C Raw Interrupt Status */
unsigned int ICR; /* I2C Interrupt Clear */
unsigned int ReservedF;
unsigned int SCL_TOUT; /* I2C SCL Stuck at Low Timeout */
unsigned int SDA_TOUT; /* I2C SDA Stuck at Low Timeout */
unsigned int TX_ABRT; /* I2C Transmit Abort Status */
unsigned int GCALL; /* I2C ACK General Call */
unsigned int NACK; /* I2C Generate SLV_DATA_NACK */
} CSP_I2C_T, *CSP_I2C_PTR;
/**
@brief CA0 bits Structure
*/
typedef struct
{
volatile unsigned int CADATAH; /**< DATA High Register */
volatile unsigned int CADATAL; /**< DATA Low Register */
volatile unsigned int CACON; /**< Control Register */
volatile unsigned int INTMASK; /**< Interrupt Mask CR */
} CSP_CA_T, *CSP_CA_PTR;
/**
@brief GPTX bits Structure
*/
typedef struct
{
volatile unsigned int CEDR; //0x0000 Clock control & ID
volatile unsigned int RSSR; //0x0004 Start & Stop Ctrl
volatile unsigned int PSCR; //0x0008 Clock prescaler
volatile unsigned int CR; //0x000C Control register
volatile unsigned int SYNCR; //0x0010 Synchronization control reg
volatile unsigned int GLDCR; //0x0014 Global load control reg
volatile unsigned int GLDCFG; //0x0018 Global load config
volatile unsigned int GLDCR2; //0x001C Global load control reg2
volatile unsigned int Reserved0; //0x0020
volatile unsigned int PRDR; //0x0024 Period reg
volatile unsigned int Reserved1; //0x0028
volatile unsigned int CMPA; //0x002C Compare Value A
volatile unsigned int CMPB; //0x0030 Compare Value B
volatile unsigned int Reserved2; //0x0034
volatile unsigned int Reserved3; //0x0038
volatile unsigned int CMPLDR; //0x003C Cmp reg load control
volatile unsigned int CNT; //0x0040 Counter reg
volatile unsigned int AQLDR; //0x0044 AQ reg load control
volatile unsigned int AQCRA; //0x0048 Action qualify of ch-A
volatile unsigned int AQCRB; //0x004C Action qualify of ch-B
volatile unsigned int Reserved4; //0x0050
volatile unsigned int Reserved5; //0x0054
volatile unsigned int Reserved6; //0x0058
volatile unsigned int AQOSF; //0x005C AQ output one-shot software forcing
volatile unsigned int AQCSF; //0x0060 AQ output conti-software forcing
volatile unsigned int Reserved7; //0x0064
volatile unsigned int Reserved8; //0x0068
volatile unsigned int Reserved9; //0x006c
volatile unsigned int Reserved10; //0x0070
volatile unsigned int Reserved11; //0x0074
volatile unsigned int Reserved12; //0x0078
volatile unsigned int Reserved13; //0x007c
volatile unsigned int Reserved14; //0x0080
volatile unsigned int Reserved15; //0x0084
volatile unsigned int Reserved16; //0x0088
volatile unsigned int Reserved17; //0x008c
volatile unsigned int Reserved18; //0x0090
volatile unsigned int Reserved19; //0x0094
volatile unsigned int Reserved20; //0x0098
volatile unsigned int Reserved21; //0x009c
volatile unsigned int Reserved22; //0x00a0
volatile unsigned int Reserved23; //0x00a4
volatile unsigned int Reserved24; //0x00a8
volatile unsigned int Reserved25; //0x00ac
volatile unsigned int Reserved26; //0x00b0
volatile unsigned int Reserved27; //0x00b4
volatile unsigned int TRGFTCR; //0x00B8 Trigger Filter control reg
volatile unsigned int TRGFTWR; //0x00BC Trigger filter window
volatile unsigned int EVTRG; //0x00C0 Event trigger setting
volatile unsigned int EVPS; //0x00C4 Event presaler
volatile unsigned int EVCNTINIT; //0x00C8
volatile unsigned int EVSWF; //0x00CC Event software forcing
volatile unsigned int RISR; //0x00D0 Interrupt RISR
volatile unsigned int MISR; //0x00D4 Interrupt MISR
volatile unsigned int IMCR; //0x00D8 Interrupt IMCR
volatile unsigned int ICR; //0x00DC Interrupt clear
volatile unsigned int REGLINK; //0x00E0 Register link
}CSP_GPT_T,*CSP_GPT_PTR;
/**
@brief EPT0 bits Structure
*/
typedef struct
{
volatile unsigned int CEDR; //0x0000 Clock control & ID
volatile unsigned int RSSR; //0x0004 Start & Stop Ctrl
volatile unsigned int PSCR; //0x0008 Clock prescaler
volatile unsigned int CR; //0x000C Control register
volatile unsigned int SYNCR; //0x0010 Synchronization control reg
volatile unsigned int GLDCR; //0x0014 Global load control reg
volatile unsigned int GLDCFG; //0x0018 Global load config
volatile unsigned int GLDCR2; //0x001C Global load control reg2
volatile unsigned int HRCFG; //0x0020
volatile unsigned int PRDR; //0x0024 Period reg
volatile unsigned int PHSR; //0x0028 Phase control reg
volatile unsigned int CMPA; //0x002C Compare Value A
volatile unsigned int CMPB; //0x0030 Compare Value B
volatile unsigned int CMPC; //0x0034 Compare Value C
volatile unsigned int CMPD; //0x0038 Compare Value D
volatile unsigned int CMPLDR; //0x003C Cmp reg load control
volatile unsigned int CNT; //0x0040 Counter reg
volatile unsigned int AQLDR; //0x0044 AQ reg load control
volatile unsigned int AQCRA; //0x0048 Action qualify of ch-A
volatile unsigned int AQCRB; //0x004C Action qualify of ch-B
volatile unsigned int AQCRC; //0x0050 Action qualify of ch-C
volatile unsigned int AQCRD; //0x0054 Action qualify of ch-D
volatile unsigned int AQTSCR; //0x0058 T event selection
volatile unsigned int AQOSF; //0x005C AQ output one-shot software forcing
volatile unsigned int AQCSF; //0x0060 AQ output conti-software forcing
volatile unsigned int DBLDR; //0x0064 Deadband control reg load control
volatile unsigned int DBCR; //0x0068 Deadband control reg
volatile unsigned int DPSCR; //0x006C Deadband clock prescaler
volatile unsigned int DBDTR; //0x0070 Deadband rising delay control
volatile unsigned int DBDTF; //0x0074 Deadband falling delay control
volatile unsigned int CPCR; //0x0078 Chop control
volatile unsigned int EMSRC; //0x007C EM source setting
volatile unsigned int EMSRC2; //0x0080 EM source setting
volatile unsigned int EMPOL; //0x0084 EM polarity setting
volatile unsigned int EMECR; //0x0088 EM enable control
volatile unsigned int EMOSR; //0x008C EM trip out status setting
volatile unsigned int Reserved; //0x0090 Reserved
volatile unsigned int EMSLSR; //0x0094 Softlock status
volatile unsigned int EMSLCLR; //0x0098 Softlock clear
volatile unsigned int EMHLSR; //0x009C Hardlock status
volatile unsigned int EMHLCLR; //0x00A0 Hardlock clear
volatile unsigned int EMFRCR; //0x00A4 Software forcing EM
volatile unsigned int EMRISR; //0x00A8 EM RISR
volatile unsigned int EMMISR; //0x00AC EM MISR
volatile unsigned int EMIMCR; //0x00B0 EM masking enable
volatile unsigned int EMICR; //0x00B4 EM pending clear
volatile unsigned int TRGFTCR; //0x00B8 Trigger Filter control reg
volatile unsigned int TRGFTWR; //0x00BC Trigger filter window
volatile unsigned int EVTRG; //0x00C0 Event trigger setting
volatile unsigned int EVPS; //0x00C4 Event presaler
volatile unsigned int EVCNTINIT; //0x00C8
volatile unsigned int EVSWF; //0x00CC Event software forcing
volatile unsigned int RISR; //0x00D0 Interrupt RISR
volatile unsigned int MISR; //0x00D4 Interrupt MISR
volatile unsigned int IMCR; //0x00D8 Interrupt IMCR
volatile unsigned int ICR; //0x00DC Interrupt clear
volatile unsigned int REGLINK; //0x00E0 Register link
volatile unsigned int REGLINK2; //0x00E4 Register link2
volatile unsigned int REGPROT; //0x00E8 Register protection
} CSP_EPT_T, *CSP_EPT_PTR;
/**
@brief LPT bits Structure
*/
typedef volatile struct
{
volatile unsigned int CEDR; //0x0000 Clock control & ID
volatile unsigned int RSSR; //0x0004 Start & Stop Ctrl
volatile unsigned int PSCR; //0x0008 Clock prescaler
volatile unsigned int CR; //0x000C Control register
volatile unsigned int SYNCR; //0x0010 Synchronization control reg
volatile unsigned int PRDR; //0x0024 Period reg
volatile unsigned int CMP; //0x002C Compare Value A
volatile unsigned int CNT; //0x0040 Counter reg
volatile unsigned int TRGFTCR; //0x00B8 Trigger Filter control reg
volatile unsigned int TRGFTWR; //0x00BC Trigger filter window
volatile unsigned int EVTRG; //0x00C0 Event trigger setting
volatile unsigned int EVPS; //0x00C4 Event presaler
volatile unsigned int EVSWF; //0x00C8 Event software forcing
volatile unsigned int RISR; //0x00CC Interrupt RISR
volatile unsigned int MISR; //0x00D0 Interrupt MISR
volatile unsigned int IMCR; //0x00D4 Interrupt IMCR
volatile unsigned int ICR; //0x00D8 Interrupt clear
} CSP_LPT_T, *CSP_LPT_PTR;
/**
@brief BT0 bits Structure
*/
typedef struct
{
volatile unsigned int RSSR; //0x0000 Reset/Start Control
volatile unsigned int CR; //0x0004 General Control
volatile unsigned int PSCR; //0x0008 Prescaler
volatile unsigned int PRDR; //0x000C Period
volatile unsigned int CMP; //0X0010
volatile unsigned int CNT; //0x0014 Counter
volatile unsigned int EVTRG; //0x0018 Event Trigger
volatile unsigned int EVPS; //0x001C Event Prescaler
volatile unsigned int EVCNTINTI; //0x0020 Event Counter
volatile unsigned int EVSWF; //0x0024 Software force Event Trigger
volatile unsigned int RISR; //0x0028
volatile unsigned int IMCR; //0x002C
volatile unsigned int MISR; //0x0030
volatile unsigned int ICR; //0x0034
} CSP_BT_T, *CSP_BT_PTR;
/**
@brief CRC bits Structure
*/
typedef struct
{
volatile unsigned int IDR; /**< ID Register */
volatile unsigned int CEDR; /**< Clock Enable/Disable Register */
volatile unsigned int SRR; /**< Software Reset Register */
volatile unsigned int CR; /**< Control Register */
volatile unsigned int SEED; /**< Seed Value Register */
volatile unsigned int DATAIN; /**< Data in Value Register */
volatile unsigned int DATAOUT; /**< Data out Value Register */
// TBD... //
} CSP_CRC_T, *CSP_CRC_PTR;
/**
@brief RTC bits Structure
*/
typedef struct
{
volatile unsigned int TIMR; //0x0000 Time Control Register
volatile unsigned int DATR; //0x0004 Date Control Register
volatile unsigned int CR; //0x0008 Control Register
volatile unsigned int CCR; //0x000C Clock Control register
volatile unsigned int ALRAR; //0x0010 Alarm A
volatile unsigned int ALRBR; //0x0014 Alarm B
volatile unsigned int SSR; //0x0018 Sub second
volatile unsigned int CAL; //0x001C Calibration
volatile unsigned int RISR; //0x0020
volatile unsigned int IMCR; //0x0024
volatile unsigned int MISR; //0x0028
volatile unsigned int ICR; //0x002C
volatile unsigned int KEY; //0x0030
volatile unsigned int EVTRG; //0x0034
volatile unsigned int EVPS; //0x0038
volatile unsigned int EVSWF; //0x003C
} CSP_RTC_T, *CSP_RTC_PTR;
/**
@brief WWDT bits Structure
*/
typedef struct
{
volatile unsigned int CR;
volatile unsigned int CFGR;
volatile unsigned int RISR;
volatile unsigned int MISR;
volatile unsigned int IMCR;
volatile unsigned int ICR;
}CSP_WWDT_T,*CSP_WWDT_PTR;
/**
@brief HWD bits Structure
*/
typedef struct
{
volatile S32_T DIVIDENT;
volatile S32_T DIVISOR;
volatile S32_T QUOTIENT;
volatile S32_T REMAIN;
volatile unsigned int CR;
}CSP_HWD_T,*CSP_HWD_PTR;
#define FLASHBase 0x00000000
#define FLASHSize 0x00010000
#define FLASHLimit (FLASHBase + FLASHSize)
#define DFLASHBase 0x10000000
#define DFLASHSize 0x10001000
#define DFLASHLimit (FLASHBase + FLASHSize)
#ifdef REMAP
#define SRAMBase 0x00000000
#define SRAMSize 0x00000800
#define SRAMLimit (SRAMBase + SRAMSize)
#define MEMVectorBase 0x00000700
#define MEMVectorSize (0x50<<2)
#else
#define SRAMBase 0x20000000
#define SRAMSize 0x00001000
#define SRAMLimit (SRAMBase + SRAMSize)
#define MEMVectorBase 0x20000F00
#define MEMVectorSize (0x50<<2)
#endif
//--Peripheral Address Setting
#define APBPeriBase 0x40000000
//--Each Peripheral Address Setting
//#define APB_SFMBase (APBPeriBase + 0x10000)
#define APB_IFCBase (APBPeriBase + 0x10000)
#define APB_SYSCONBase (APBPeriBase + 0x11000)
#define APB_ETCBBase (APBPeriBase + 0x12000)
#define APB_TKEYBase (APBPeriBase + 0x20000)
#define APB_TKEYBUFBase (APBPeriBase + 0x21000)
#define APB_ADC0Base (APBPeriBase + 0x30000)
#define AHBGPIOBase 0x60000000
#define APB_GPIOA0Base (AHBGPIOBase + 0x0000) //A0
#define APB_GPIOB0Base (AHBGPIOBase + 0x2000) //B0
#define APB_IGRPBase (AHBGPIOBase + 0xF000)
#define APB_BT1Base (APBPeriBase + 0x52000)
#define APB_BT0Base (APBPeriBase + 0x51000)
#define APB_CNTABase (APBPeriBase + 0x50000)
#define APB_GPT0Base (APBPeriBase + 0x55000)
#define APB_EPT0Base (APBPeriBase + 0x59000)
#define APB_RTCBase (APBPeriBase + 0x60000)
#define APB_LPTBase (APBPeriBase + 0x61000)
#define APB_WWDTBase (APBPeriBase + 0x62000)
#define APB_UART0Base (APBPeriBase + 0x80000)
#define APB_UART1Base (APBPeriBase + 0x81000)
#define APB_UART2Base (APBPeriBase + 0x82000)
#define APB_SPI0Base (APBPeriBase + 0x90000)
#define APB_SIO0Base (APBPeriBase + 0xB0000)
#define APB_I2C0Base (APBPeriBase + 0xA0000)
#define AHB_CRCBase 0x50000000
#define APB_HWDBase 0x70000000
//--Interrupt Bit Position
#define CORET_INT (0x01ul<<0) //IRQ0
#define SYSCON_INT (0x01ul<<1) //IRQ1
#define IFC_INT (0x01ul<<2) //IRQ2
#define ADC_INT (0x01ul<<3) //IRQ3
#define EPT0_INT (0x01ul<<4) //IRQ4
//DUMMY //IRQ5
#define WWDT_INT (0x01ul<<6) //IRQ6
#define EXI0_INT (0x01ul<<7) //IRQ7
#define EXI1_INT (0x01ul<<8) //IRQ8
#define GPT0_INT (0x01ul<<9) //IRQ9
//DUMMY //IRQ10
//DUMMY //IRQ11
#define RTC_INT (0x01ul<<12) //IRQ12
#define UART0_INT (0x01ul<<13) //IRQ13
#define UART1_INT (0x01ul<<14) //IRQ14
#define UART2_INT (0x01ul<<15) //IRQ15
//DUMMY //IRQ16
#define I2C_INT (0x01ul<<17) //IRQ17
//DUMMY //IRQ18
#define SPI_INT (0x01ul<<19) //IRQ19
#define SIO_INT (0x01ul<<20) //IRQ20
#define EXI2_INT (0x01ul<<21) //IRQ21
#define EXI3_INT (0x01ul<<22) //IRQ22
#define EXI4_INT (0x01ul<<23) //IRQ23
#define CA_INT (0x01ul<<24) //IRQ24
#define TKEY_INT (0x01ul<<25) //IRQ25
#define LPT_INT (0x01ul<<26) //IRQ26
//DUMMY //IRQ27
#define BT0_INT (0x01ul<<28) //IRQ28
#define BT1_INT (0x01ul<<29) //IRQ29
//DUMMY //IRQ30
//DUMMY //IRQ31
extern CSP_CK801_T *CK801 ;
extern CSP_IFC_T *IFC ;
extern CSP_SYSCON_T *SYSCON ;
extern CSP_ETCB_T *ETCB ;
extern CSP_TKEY_T *TKEY ;
extern CSP_TKEYBUF_T *TKEYBUF ;
extern CSP_ADC12_T *ADC0 ;
extern CSP_GPIO_T *GPIOA0 ;
extern CSP_GPIO_T *GPIOB0 ;
extern CSP_IGRP_T *GPIOGRP ;
extern CSP_UART_T *UART0 ;
extern CSP_UART_T *UART1 ;
extern CSP_UART_T *UART2 ;
extern CSP_SSP_T *SPI0 ;
extern CSP_SIO_T *SIO0 ;
extern CSP_I2C_T *I2C0 ;
extern CSP_CA_T *CA0 ;
extern CSP_GPT_T *GPT0 ;
extern CSP_EPT_T *EPT0 ;
extern CSP_LPT_T *LPT ;
extern CSP_HWD_T *HWD ;
extern CSP_WWDT_T *WWDT ;
extern CSP_BT_T *BT0 ;
extern CSP_BT_T *BT1 ;
extern CSP_CRC_T *CRC ;
extern CSP_RTC_T *RTC ;
//ISR Define for generating special interrupt related ASM (CK802), with compile option -mistack
void MisalignedHandler(void) __attribute__((isr));
void IllegalInstrHandler(void) __attribute__((isr));
void AccessErrHandler(void) __attribute__((isr));
void BreakPointHandler(void) __attribute__((isr));
void UnrecExecpHandler(void) __attribute__((isr));
void Trap0Handler(void) __attribute__((isr));
void Trap1Handler(void) __attribute__((isr));
void Trap2Handler(void) __attribute__((isr));
void Trap3Handler(void) __attribute__((isr));
void PendTrapHandler(void) __attribute__((isr));
void CORETHandler(void) __attribute__((isr));
void SYSCONIntHandler(void) __attribute__((isr));
void IFCIntHandler(void) __attribute__((isr));
void ADCIntHandler(void) __attribute__((isr));
void EPT0IntHandler(void) __attribute__((isr));
void WWDTHandler(void) __attribute__((isr));
void EXI0IntHandler(void) __attribute__((isr));
void EXI1IntHandler(void) __attribute__((isr));
void EXI2to3IntHandler(void) __attribute__((isr));
void EXI4to9IntHandler(void) __attribute__((isr));
void EXI10to15IntHandler(void) __attribute__((isr));
void UART0IntHandler(void) __attribute__((isr));
void UART1IntHandler(void) __attribute__((isr));
void UART2IntHandler(void) __attribute__((isr));
void I2CIntHandler(void) __attribute__((isr));
void GPT0IntHandler(void) __attribute__((isr));
void LEDIntHandler(void) __attribute__((isr));
void TKEYIntHandler(void) __attribute__((isr));
void SPI0IntHandler(void) __attribute__((isr));
void SIO0IntHandler(void) __attribute__((isr));
void CNTAIntHandler(void) __attribute__((isr));
void RTCIntHandler(void) __attribute__((isr));
void LPTIntHandler(void) __attribute__((isr));
void BT0IntHandler(void) __attribute__((isr));
void BT1IntHandler(void) __attribute__((isr));
extern int __divsi3 (int a, int b);
extern unsigned int __udivsi3 (unsigned int a, unsigned int b);
extern int __modsi3 (int a, int b);
extern unsigned int __umodsi3 (unsigned int a, unsigned int b);
extern void delay_nms(unsigned int t);
extern void delay_nus(unsigned int t);
#endif
/******************* (C) COPYRIGHT 2019 APT Chip *****END OF FILE****/

View File

@@ -0,0 +1,193 @@
/*
******************************************************************************
* @file apt32f102_bt.h
* @author APT AE Team
* @version V1.08
* @date 2021/06/21
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef _apt32f102_bt_H
#define _apt32f102_bt_H
/* Includes ------------------------------------------------------------------*/
#include "apt32f102.h"
#define BT_RESET_VALUE (0x00000000)
/**
* @brief bt pin numbner
*/
typedef enum
{
BT0_PA00 = 0, /*!< Pin 0 selected */
BT0_PA02 = 1, /*!< Pin 1 selected */
BT0_PA05 = 2, /*!< Pin 2 selected */
BT0_PB02 = 3, /*!< Pin 3 selected */
BT0_PB05 = 4, /*!< Pin 4 selected */
BT0_PA11 = 5, /*!< Pin 5 selected */
BT0_PA13 = 6, /*!< Pin 6 selected */
BT0_PA15 = 7, /*!< Pin 7 selected */
BT1_PA01 = 8, /*!< Pin 8 selected */
BT1_PA06 = 9, /*!< Pin 9 selected */
BT1_PA08 = 10, /*!< Pin 10 selected */
BT1_PA12 = 11, /*!< Pin 11 selected */
BT1_PA14 = 12, /*!< Pin 12 selected */
BT1_PB00 = 13, /*!< Pin 13 selected */
BT1_PB04 = 14, /*!< Pin 13 selected */
}BT_Pin_TypeDef;
/**
* @brief BT CLK EN register
*/
typedef enum
{
BTCLK_DIS = 0,
BTCLK_EN = 1,
}BT_CLK_TypeDef;
/**
* @brief BT START SHADOW register
*/
typedef enum
{
BT_SHADOW = (0<<3),
BT_IMMEDIATE= (1<<3),
}BT_SHDWSTP_TypeDef;
/**
* @brief BT OPM register
*/
typedef enum
{
BT_CONTINUOUS= (0<<4),
BT_ONCE= (1<<4),
}BT_OPM_TypeDef;
/**
* @brief BT EXTCKM register
*/
typedef enum
{
BT_PCLKDIV= (0<<5),
BT_EXTCKM= (1<<5),
}BT_EXTCKM_TypeDef;
/**
* @brief BT IDLEST register
*/
typedef enum
{
BT_IDLE_LOW= (0<<6),
BT_IDLE_HIGH= (1<<6),
}BT_IDLEST_TypeDef;
/**
* @brief BT STARTST register
*/
typedef enum
{
BT_START_LOW= (0<<7),
BT_START_HIGH= (1<<7),
}BT_STARTST_TypeDef;
/**
* @brief BT STARTST register
*/
typedef enum
{
BT_SYNC_DIS= (0<<8),
BT_SYNC_EN= (1<<8),
}BT_SYNCEN_TypeDef;
/**
* @brief BT OSTMDX register
*/
typedef enum
{
BT_OSTMDX_CONTINUOUS= (0<<10),
BT_OSTMDX_ONCE= (1<<10),
}BT_OSTMDX_TypeDef;
/**
* @brief BT AREARM register
*/
typedef enum
{
BT_AREARM_DIS= (0<<14),
BT_AREARM_EN= (1<<14),
}BT_AREARM_TypeDef;
/**
* @brief BT SYNCMD register
*/
typedef enum
{
BT_SYNCMD_DIS= (0<<15),
BT_SYNCMD_EN= (1<<15),
}BT_SYNCMD_TypeDef;
/**
* @brief BT CNTRLD register
*/
typedef enum
{
BT_CNTRLD_EN= (0<<16),
BT_CNTRLD_DIS= (1<<16),
}BT_CNTRLD_TypeDef;
/**
* @brief BT CNTRLD register
*/
typedef enum
{
BT_TRGSRC_DIS= (0<<0),
BT_TRGSRC_PEND= (1<<0),
BT_TRGSRC_CMP= (2<<0),
BT_TRGSRC_OVF= (3<<0),
}BT_TRGSRC_TypeDef;
/**
* @brief BT CNTRLD register
*/
typedef enum
{
BT_TRGOE_DIS= (0<<20),
BT_TRGOE_EN= (1<<20),
}BT_TRGOE_TypeDef;
/**
* @brief BT INT MASK SET/CLR Set
*/
typedef enum
{
BT_PEND = (0x01 << 0),
BT_CMP = (0x01 << 1),
BT_OVF = (0x01 << 2),
BT_EVTRG = (0x01 << 3),
}BT_IMSCR_TypeDef;
extern void BT_DeInit(CSP_BT_T *BTx);
extern void BT_IO_Init(BT_Pin_TypeDef BT_IONAME);
extern void BT_Start(CSP_BT_T *BTx);
extern void BT_Stop(CSP_BT_T *BTx);
extern void BT_Soft_Reset(CSP_BT_T *BTx);
extern void BT_Configure(CSP_BT_T *BTx,BT_CLK_TypeDef BTCLK,U16_T PSCR_DATA,BT_SHDWSTP_TypeDef BTSHDWSTP,BT_OPM_TypeDef BTOPM,BT_EXTCKM_TypeDef BTEXTCKM);
extern void BT_ControlSet_Configure(CSP_BT_T *BTx,BT_STARTST_TypeDef BTSTART,BT_IDLEST_TypeDef BTIDLE,BT_SYNCEN_TypeDef BTSYNC,BT_SYNCMD_TypeDef BTSYNCMD,
BT_OSTMDX_TypeDef BTOSTMD,BT_AREARM_TypeDef BTAREARM,BT_CNTRLD_TypeDef BTCNTRLD);
extern void BT_Period_CMP_Write(CSP_BT_T *BTx,U16_T BTPRDR_DATA,U16_T BTCMP_DATA);
extern void BT_CNT_Write(CSP_BT_T *BTx,U16_T BTCNT_DATA);
extern U16_T BT_PRDR_Read(CSP_BT_T *BTx);
extern U16_T BT_CMP_Read(CSP_BT_T *BTx);
extern U16_T BT_CNT_Read(CSP_BT_T *BTx);
extern void BT_Trigger_Configure(CSP_BT_T *BTx,BT_TRGSRC_TypeDef BTTRG,BT_TRGOE_TypeDef BTTRGOE);
extern void BT_Soft_Tigger(CSP_BT_T *BTx);
extern void BT_ConfigInterrupt_CMD(CSP_BT_T *BTx,FunctionalStatus NewState,BT_IMSCR_TypeDef BT_IMSCR_X);
extern void BT0_INT_ENABLE(void);
extern void BT0_INT_DISABLE(void);
extern void BT1_INT_ENABLE(void);
extern void BT1_INT_DISABLE(void);
extern void BT_Stop_High(CSP_BT_T *BTx);
extern void BT_Stop_Low(CSP_BT_T *BTx);
#endif /**< apt32f102_bt_H */
/******************* (C) COPYRIGHT 2020 APT Chip *****END OF FILE****/

View File

@@ -0,0 +1,130 @@
/*
******************************************************************************
* @file apt32f102_ck801.h
* @author APT AE Team
* @version V1.08
* @date 2021/06/21
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef _apt32f102_ck801_H
#define _apt32f102_ck801_H
//----------------------------------------------------------------------------
// Interrupt Controller
//----------------------------------------------------------------------------
//#define CK801_BASEADDR ((unsigned int) 0xE000E000)
#define CK801_BASEADDR 0xE000E000
#define INTC_ISER CK801_BASEADDR+0x100 //INTC interrupt enable register
#define INTC_IWER CK801_BASEADDR+0x140 //INTC wake-up interrupt enable register
#define INTC_ICER CK801_BASEADDR+0x180 //INTC interrupt enable clear register
#define INTC_IWDR CK801_BASEADDR+0x1C0 //INTC wake-up interrupt enable clear register
#define INTC_ISPR CK801_BASEADDR+0x200 //INTC interrupt pending register
#define INTC_ICPR CK801_BASEADDR+0x280 //INTC interrupt pending clear register
#define INTC_IABR CK801_BASEADDR+0x300 //INTC interrupt acknowledge status register
#define INTC_IPR0 CK801_BASEADDR+0x400 //INTC interrupt priority register
#define INTC_IPR1 CK801_BASEADDR+0x404 //INTC interrupt priority register
#define INTC_IPR2 CK801_BASEADDR+0x408 //INTC interrupt priority register
#define INTC_IPR3 CK801_BASEADDR+0x40C //INTC interrupt priority register
#define INTC_IPR4 CK801_BASEADDR+0x410 //INTC interrupt priority register
#define INTC_IPR5 CK801_BASEADDR+0x414 //INTC interrupt priority register
#define INTC_IPR6 CK801_BASEADDR+0x418 //INTC interrupt priority register
#define INTC_IPR7 CK801_BASEADDR+0x41C //INTC interrupt priority register
#define INTC_ISR CK801_BASEADDR+0xC00 //INTC interrupt status register
#define INTC_IPTR CK801_BASEADDR+0xC04 //INTC interrupt pending threshold register
#define INTC_ISER_WRITE(val) *(volatile UINT32 *) (INTC_ISER ) = val
#define INTC_IWER_WRITE(val) *(volatile UINT32 *) (INTC_IWER ) = val
#define INTC_ICER_WRITE(val) *(volatile UINT32 *) (INTC_ICER ) = val
#define INTC_IWDR_WRITE(val) *(volatile UINT32 *) (INTC_IWDR ) = val
#define INTC_ISPR_WRITE(val) *(volatile UINT32 *) (INTC_ISPR ) = val
#define INTC_ICPR_WRITE(val) *(volatile UINT32 *) (INTC_ICPR ) = val
#define INTC_IABR_WRITE(val) *(volatile UINT32 *) (INTC_IABR ) = val
#define INTC_IPR0_WRITE(val) *(volatile UINT32 *) (INTC_IPR0 ) = val
#define INTC_IPR1_WRITE(val) *(volatile UINT32 *) (INTC_IPR1 ) = val
#define INTC_IPR2_WRITE(val) *(volatile UINT32 *) (INTC_IPR2 ) = val
#define INTC_IPR3_WRITE(val) *(volatile UINT32 *) (INTC_IPR3 ) = val
#define INTC_IPR4_WRITE(val) *(volatile UINT32 *) (INTC_IPR4 ) = val
#define INTC_IPR5_WRITE(val) *(volatile UINT32 *) (INTC_IPR5 ) = val
#define INTC_IPR6_WRITE(val) *(volatile UINT32 *) (INTC_IPR6 ) = val
#define INTC_IPR7_WRITE(val) *(volatile UINT32 *) (INTC_IPR7 ) = val
#define INTC_ISR_WRITE(val) *(volatile UINT32 *) (INTC_ISR ) = val
#define INTC_IPTR_WRITE(val) *(volatile UINT32 *) (INTC_IPTR ) = val
#define INTC_ISER_READ(intc) (intc->ISER )
#define INTC_IWER_READ(intc) (intc->IWER )
#define INTC_ICER_READ(intc) (intc->ICER )
#define INTC_IWDR_READ(intc) (intc->IWDR )
#define INTC_ISPR_READ(intc) (intc->ISPR )
#define INTC_ICPR_READ(intc) (intc->ICPR )
#define INTC_IABR_READ(intc) (intc->IABR )
#define INTC_IPR0_READ(intc) (intc->IPR0 )
#define INTC_IPR1_READ(intc) (intc->IPR1 )
#define INTC_IPR2_READ(intc) (intc->IPR2 )
#define INTC_IPR3_READ(intc) (intc->IPR3 )
#define INTC_IPR4_READ(intc) (intc->IPR4 )
#define INTC_IPR5_READ(intc) (intc->IPR5 )
#define INTC_IPR6_READ(intc) (intc->IPR6 )
#define INTC_IPR7_READ(intc) (intc->IPR7 )
#define INTC_ISR_READ(intc) (intc->ISR )
#define INTC_IPTR_READ(intc) (intc->IPTR )
typedef enum IRQn
{
ISR_Restart = -32,
ISR_Misaligned_Access = -31,
ISR_Access_Error = -30,
ISR_Divided_By_Zero = -29,
ISR_Illegal = -28,
ISR_Privlege_Violation = -27,
ISR_Trace_Exection = -26,
ISR_Breakpoint_Exception = -25,
ISR_Unrecoverable_Error = -24,
ISR_Idly4_Error = -23,
ISR_Auto_INT = -22,
ISR_Auto_FINT = -21,
ISR_Reserved_HAI = -20,
ISR_Reserved_FP = -19,
ISR_TLB_Ins_Empty = -18,
ISR_TLB_Data_Empty = -17,
INTC_CORETIM_IRQn = 0,
INTC_TIME1_IRQn = 1,
INTC_UART0_IRQn = 2,
INTC_GPIOA2_IRQn = 8,
} IRQn_Type;
void INTC_Init(void);
void force_interrupt(IRQn_Type IRQn);
void CK_CPU_EnAllNormalIrq(void);
void CK_CPU_DisAllNormalIrq(void);
#ifndef __INLINE
#define __INLINE inline
#endif
#ifndef uint32_t
#define uint32_t unsigned int
#endif
#ifndef uint8_t
#define uint8_t unsigned char
#endif
#endif
/******************* (C) COPYRIGHT 2019 APT Chip *****END OF FILE****/

View File

@@ -0,0 +1,37 @@
/******************************************************************************
* @file apt32f102_clkcalib.h
* @author APT AE Team
* @version V1.22
* @date 2021/11/22
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
#include "apt32f102.h"
/**
* @brief CALIB OSC SELECTE SET
*/
typedef enum
{
CLK_HFOSC_48M = (0x0ul),
CLK_HFOSC_24M = (0x1ul),
CLK_HFOSC_12M = (0x2ul),
CLK_HFOSC_6M = (0x3ul),
CLK_IMOSC_5556K = (0x4ul),
CLK_IMOSC_4194K = (0x5ul),
CLK_IMOSC_2097K = (0x6ul),
CLK_IMOSC_131K = (0x7ul)
}CALIB_OSC_SELECTE_TypeDef;
extern U8_T std_clk_calib(CALIB_OSC_SELECTE_TypeDef OSC_CALIB_X);

View File

@@ -0,0 +1,221 @@
/*
******************************************************************************
* @file main.c
* @author APT AE Team
* @version V1.08
* @date 2021/06/21
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef _apt32f102_gpio_H
#define _apt32f102_gpio_H
/* Includes ------------------------------------------------------------------*/
#include "apt32f102.h"
#define GPIO_RESET_VALUE (0x00000000)
//--------------------------------------------------------------------------------
//-----------------------------GPIO value enum define--------------------------
//--------------------------------------------------------------------------------
/**
* @brief GPIO pin numbner
*/
typedef enum
{
PIN_0 = 0, /*!< Pin 0 selected */
PIN_1 = 4, /*!< Pin 1 selected */
PIN_2 = 8, /*!< Pin 2 selected */
PIN_3 = 12, /*!< Pin 3 selected */
PIN_4 = 16, /*!< Pin 4 selected */
PIN_5 = 20, /*!< Pin 5 selected */
PIN_6 = 24, /*!< Pin 6 selected */
PIN_7 = 28, /*!< Pin 7 selected */
PIN_8 = 0, /*!< Pin 8 selected */
PIN_9 = 4, /*!< Pin 9 selected */
PIN_10 = 8, /*!< Pin 10 selected */
PIN_11 = 12, /*!< Pin 11 selected */
PIN_12 = 16, /*!< Pin 12 selected */
PIN_13 = 20, /*!< Pin 13 selected */
PIN_14 = 24, /*!< Pin 13 selected */
PIN_15 = 28, /*!< Pin 13 selected */
}GPIO_Pin_TypeDef;
/**
* @brief GPIO high/low register
*/
typedef enum
{
LowByte = 0,
HighByte = 1,
}GPIO_byte_TypeDef;
/**
* @brief GPIO IO status
*/
typedef enum
{
Intput = 1,
Output = 0,
}GPIO_Dir_TypeDef;
/**
* @brief GPIO IO mode
*/
typedef enum
{
PUDR = 0, //pull high or low
DSCR =1, //drive strenth
OMCR =2, //open drain
IECR =3, //int
}GPIO_Mode_TypeDef;
/**
* @brief GPIO IO Group
*/
typedef enum
{
PA0 = 0,
PB0 = 2,
GPIOA = 0,
GPIOB = 2,
}GPIO_Group_TypeDef;
/**
* @brief GPIO exi number
*/
typedef enum
{
EXI0 = 0,
EXI1 = 1,
EXI2 = 2,
EXI3 = 3,
EXI4 = 4,
EXI5 = 5,
EXI6 = 6,
EXI7 = 7,
EXI8 = 8,
EXI9 = 9,
EXI10 = 10,
EXI11 = 11,
EXI12 = 12,
EXI13 = 13,
EXI14 = 14,
EXI15 = 15,
}GPIO_EXI_TypeDef;
/**
* @brief EXI PIN
*/
typedef enum
{
Selete_EXI_PIN0 = (CSP_REGISTER_T)(0),
Selete_EXI_PIN1 = (CSP_REGISTER_T)(1),
Selete_EXI_PIN2 = (CSP_REGISTER_T)(2),
Selete_EXI_PIN3 = (CSP_REGISTER_T)(3),
Selete_EXI_PIN4 = (CSP_REGISTER_T)(4),
Selete_EXI_PIN5 = (CSP_REGISTER_T)(5),
Selete_EXI_PIN6 = (CSP_REGISTER_T)(6),
Selete_EXI_PIN7 = (CSP_REGISTER_T)(7),
Selete_EXI_PIN8 = (CSP_REGISTER_T)(8),
Selete_EXI_PIN9 = (CSP_REGISTER_T)(9),
Selete_EXI_PIN10 = (CSP_REGISTER_T)(10),
Selete_EXI_PIN11 = (CSP_REGISTER_T)(11),
Selete_EXI_PIN12 = (CSP_REGISTER_T)(12),
Selete_EXI_PIN13 = (CSP_REGISTER_T)(13),
Selete_EXI_PIN14 = (CSP_REGISTER_T)(14),
Selete_EXI_PIN15 = (CSP_REGISTER_T)(15),
Selete_EXI_PIN16 = (CSP_REGISTER_T)(16),
Selete_EXI_PIN17 = (CSP_REGISTER_T)(17),
Selete_EXI_PIN18 = (CSP_REGISTER_T)(18),
Selete_EXI_PIN19 = (CSP_REGISTER_T)(19)
}GPIO_EXIPIN_TypeDef;
/**
* @brief GPIO INPUT MODE SETECTED
*/
typedef enum
{
INPUT_MODE_SETECTED_CMOS = 0,
INPUT_MODE_SETECTED_TTL1 = 1,
INPUT_MODE_SETECTED_TTL2 = 2
}INPUT_MODE_SETECTED_TypeDef;
#define nop asm ("nop")
#define SetPA0(n) (GPIOA0->SODR = (1ul<<n))
#define ClrPA0(n) (GPIOA0->CODR = (1ul<<n))
#define SetPB0(n) (GPIOB0->SODR = (1ul<<n))
#define ClrPB0(n) (GPIOB0->CODR = (1ul<<n))
#define PA0in(n) (((GPIOA0->PSDR)>>n) & 1ul)
#define PB0in(n) (((GPIOB0->PSDR)>>n) & 1ul)
#define CSP_GPIO_SET_CONLR(cm,val) ((cm)->CONLR = val)
#define CSP_GPIO_GET_CONLR(cm) ((cm)->CONLR)
#define CSP_GPIO_SET_CONHR(cm,val) ((cm)->CONHR = val)
#define CSP_GPIO_GET_CONHR(cm) ((cm)->CONHR)
#define CSP_GPIO_SET_WODR(cm,val) ((cm)->WODR = val)
#define CSP_GPIO_SET_SODR(cm,val) ((cm)->SODR = val)
#define CSP_GPIO_SET_CODR(cm,val) ((cm)->CODR = val)
#define CSP_GPIO_GET_PSDR(cm) ((cm)->PSDR)
#define CSP_GPIO_SET_PUDR(cm,val) ((cm)->PUDR = val)
#define CSP_GPIO_GET_PUDR(cm) ((cm)->PUDR)
#define CSP_GPIO_SET_DSCR(cm,val) ((cm)->DSCR = val)
#define CSP_GPIO_GET_DSCR(cm) ((cm)->DSCR)
#define CSP_GPIO_SET_OMCR(cm,val) ((cm)->OMCR = val)
#define CSP_GPIO_GET_OMCR(cm) ((cm)->OMCR)
#define CSP_GPIO_SET_IECR(cm,val) ((cm)->IECR = val)
#define CSP_GPIO_GET_IECR(cm) ((cm)->IECR)
#define CSP_GPIO_SET_IGRP(cm,val) ((cm)->IGRP = val)
#define CSP_GPIO_GET_IGRP(cm) ((cm)->IGRP)
/******************************************************************************
************************** Exported functions ************************
******************************************************************************/
extern void GPIOA0_DeInit(GPIO_Pin_TypeDef GPIO_Pin);
extern void GPIO_DeInit(void);
extern void GPIO_TTL_COSM_Selecte(CSP_GPIO_T *GPIOx,uint8_t bit,INPUT_MODE_SETECTED_TypeDef INPUT_MODE_SETECTED_X);
extern void GPIO_Init2(CSP_GPIO_T *GPIOx,GPIO_byte_TypeDef byte,uint32_t val);
extern void GPIO_InPutOutPut_Disable(CSP_GPIO_T *GPIOx,uint8_t PinNum);
extern void GPIO_Init(CSP_GPIO_T *GPIOx,uint8_t PinNum,GPIO_Dir_TypeDef Dir);
extern void GPIO_Write_Low(CSP_GPIO_T *GPIOx,uint8_t bit);
extern void GPIO_Write_High(CSP_GPIO_T *GPIOx,uint8_t bit);
extern void GPIO_MODE_Init(CSP_GPIO_T *GPIOx,GPIO_Mode_TypeDef IO_MODE,uint32_t val);
extern uint8_t GPIO_Read_Status(CSP_GPIO_T *GPIOx,uint8_t bit);
extern uint8_t GPIO_Read_Output(CSP_GPIO_T *GPIOx,uint8_t bit);
extern void GPIO_Reverse(CSP_GPIO_T *GPIOx,uint8_t bit);
extern void GPIO_Set_Value(CSP_GPIO_T *GPIOx,uint8_t bitposi,uint8_t bitval);
extern void GPIOA0_EXI_Init(GPIO_EXI_TypeDef EXI_IO);
extern void GPIOB0_EXI_Init(GPIO_EXI_TypeDef EXI_IO);
extern void GPIO_EXI_EN(CSP_GPIO_T *GPIOx,GPIO_EXI_TypeDef EXI_IO);
extern void GPIO_Debug_IO_12_13(void);
extern void GPIO_Debug_IO_01_02(void);
extern void GPIO_IntGroup_Set(GPIO_Group_TypeDef IO_MODE , uint8_t PinNum , GPIO_EXIPIN_TypeDef EXIPIN_x);
extern void GPIOA00_Set_ResetPin();
extern void GPIO_PullHigh_Init(CSP_GPIO_T *GPIOx,uint8_t bit);
extern void GPIO_PullLow_Init(CSP_GPIO_T *GPIOx,uint8_t bit);
extern void GPIO_PullHighLow_DIS(CSP_GPIO_T *GPIOx,uint8_t bit);
extern void GPIO_OpenDrain_EN(CSP_GPIO_T *GPIOx,uint8_t bit);
extern void GPIO_OpenDrain_DIS(CSP_GPIO_T *GPIOx,uint8_t bit);
extern void GPIO_DriveStrength_EN(CSP_GPIO_T *GPIOx,uint8_t bit);
extern void GPIO_DriveStrength_DIS(CSP_GPIO_T *GPIOx,uint8_t bit);
/*************************************************************/
#endif /**< apt32f102_gpio_H */
/******************* (C) COPYRIGHT 2019 APT Chip *****END OF FILE****/

View File

@@ -0,0 +1,51 @@
/*
******************************************************************************
* @file apt32f102_hwdiv.h
* @author APT AE Team
* @version V1.02
* @date 2019/04/05
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef _apt32f102_hwdiv_H
#define _apt32f102_hwdiv_H
/* Includes ------------------------------------------------------------------*/
#include "apt32f102.h"
#define HWDIV_RESET_VALUE (0x00000000)
//--------------------------------------------------------------------------------
//-----------------------------HWDIV value enum define--------------------------
//--------------------------------------------------------------------------------
#define HWDIV_UNSIGN_BIT (0X01<<0)
extern U32_T HWDIV_Calc_Remain(void);
extern U32_T HWDIV_Calc_Quotient(void);
extern void HWDIV_Calc_UNSIGN(U32_T DIVIDENDx,U32_T DIVISOR_x);
extern void HWDIV_UNSIGN_CMD(FunctionalStatus NewState);
extern void HWDIV_DeInit(void);
extern void HWDIV_Calc_SIGN(long DIVIDENDx,long DIVISOR_x);
extern void HWDIV_Calc_float(float DIVIDENDx,float DIVISOR_x);
#endif /**< apt32f102_hwdiv_H */
/******************* (C) COPYRIGHT 2020 APT Chip *****END OF FILE****/

View File

@@ -0,0 +1,421 @@
/*
******************************************************************************
* @file apt32f102_ifc.h
* @author APT AE Team
* @version V1.08
* @date 2021/06/21
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef _apt32f102_ifc_H
#define _apt32f102_ifc_H
/* Includes ------------------------------------------------------------------*/
#include "apt32f102.h"
/******************************************************************************
************************ ifc Registers Definition *************************
******************************************************************************/
#define IFC_CLK_EN (0x01ul)
#define IFC_CLK_DIS (0xfeul)
#define EnIFCClk (IFC->CEDR = (IFC_CLK_EN))
#define DisIFCClk (IFC->CEDR = (IFC_CLK_DIS))
#define USER_KEY (0x5A5A5A5Aul)
#define SetUserKey (IFC->KR = (USER_KEY))
#define StartOp (0x01ul)
#define IFC_CLKEN (0x01ul) //IFC CLKEN
#define IFC_SWRST (0x01ul) //IFC SWRST
#define HIDM0 ((0x0ul)<<8) //HID0
#define HIDM1 ((0x1ul)<<8) //HID1
#define HIDM2 ((0x2ul)<<8) //HID2
#define HIDM3 ((0x3ul)<<8) //HID3
// IFC Command
#define PROGRAM (0x01ul)
#define PAGE_ERASE (0x02ul)
#define CHIP_ERASE (0x04ul)
#define OPTION_ERASE (0x05ul)
#define PEP_ENABLE (0x06ul) //预编程设定
#define PAGE_BUF_CLR (0x07ul) //页缓存清除
#define DIS_SWD_SET (0x0Dul) //SWD 禁止重映射
#define EN_SWD_SET (0x0Eul) //SWD 使能重映射
#define USER_OPTION (0x0Ful) //User OPTION操作
#define USER_KEY (0x5A5A5A5Aul)
#define CSP_IFC_SET_KR(ifc, val) (ifc->KR = (val))
//
#define StartErase (IFC->CR=(StartOp))
#define EnChipErase (IFC->CMR=(CHIP_ERASE|HIDM1))
#define EnPageErase (IFC->CMR=(PAGE_ERASE|HIDM0))
/**
* @brief IFC page address
*/
typedef enum
{
PROM_PageAdd0 = ((CSP_REGISTER_T)0x00000000), //PROM 每页256BYTE
PROM_PageAdd1 = ((CSP_REGISTER_T)0x00000100),
PROM_PageAdd2 = ((CSP_REGISTER_T)0x00000200),
PROM_PageAdd3 = ((CSP_REGISTER_T)0x00000300),
PROM_PageAdd4 = ((CSP_REGISTER_T)0x00000400),
PROM_PageAdd5 = ((CSP_REGISTER_T)0x00000500),
PROM_PageAdd6 = ((CSP_REGISTER_T)0x00000600),
PROM_PageAdd7 = ((CSP_REGISTER_T)0x00000700),
PROM_PageAdd8 = ((CSP_REGISTER_T)0x00000800),
PROM_PageAdd9 = ((CSP_REGISTER_T)0x00000900),
PROM_PageAdd10 = ((CSP_REGISTER_T)0x00000A00),
PROM_PageAdd11 = ((CSP_REGISTER_T)0x00000B00),
PROM_PageAdd12 = ((CSP_REGISTER_T)0x00000C00),
PROM_PageAdd13 = ((CSP_REGISTER_T)0x00000D00),
PROM_PageAdd14 = ((CSP_REGISTER_T)0x00000E00),
PROM_PageAdd15 = ((CSP_REGISTER_T)0x00000F00),
PROM_PageAdd16 = ((CSP_REGISTER_T)0x00001000),
PROM_PageAdd17 = ((CSP_REGISTER_T)0x00001100),
PROM_PageAdd18 = ((CSP_REGISTER_T)0x00001200),
PROM_PageAdd19 = ((CSP_REGISTER_T)0x00001300),
PROM_PageAdd20 = ((CSP_REGISTER_T)0x00001400),
PROM_PageAdd21 = ((CSP_REGISTER_T)0x00001500),
PROM_PageAdd22 = ((CSP_REGISTER_T)0x00001600),
PROM_PageAdd23 = ((CSP_REGISTER_T)0x00001700),
PROM_PageAdd24 = ((CSP_REGISTER_T)0x00001800),
PROM_PageAdd25 = ((CSP_REGISTER_T)0x00001900),
PROM_PageAdd26 = ((CSP_REGISTER_T)0x00001A00),
PROM_PageAdd27 = ((CSP_REGISTER_T)0x00001B00),
PROM_PageAdd28 = ((CSP_REGISTER_T)0x00001C00),
PROM_PageAdd29 = ((CSP_REGISTER_T)0x00001D00),
PROM_PageAdd30 = ((CSP_REGISTER_T)0x00001E00),
PROM_PageAdd31 = ((CSP_REGISTER_T)0x00001F00),
PROM_PageAdd32 = ((CSP_REGISTER_T)0x00002000),
PROM_PageAdd33 = ((CSP_REGISTER_T)0x00002100),
PROM_PageAdd34 = ((CSP_REGISTER_T)0x00002200),
PROM_PageAdd35 = ((CSP_REGISTER_T)0x00002300),
PROM_PageAdd36 = ((CSP_REGISTER_T)0x00002400),
PROM_PageAdd37 = ((CSP_REGISTER_T)0x00002500),
PROM_PageAdd38 = ((CSP_REGISTER_T)0x00002600),
PROM_PageAdd39 = ((CSP_REGISTER_T)0x00002700),
PROM_PageAdd40 = ((CSP_REGISTER_T)0x00002800),
PROM_PageAdd41 = ((CSP_REGISTER_T)0x00002900),
PROM_PageAdd42 = ((CSP_REGISTER_T)0x00002A00),
PROM_PageAdd43 = ((CSP_REGISTER_T)0x00002B00),
PROM_PageAdd44 = ((CSP_REGISTER_T)0x00002C00),
PROM_PageAdd45 = ((CSP_REGISTER_T)0x00002D00),
PROM_PageAdd46 = ((CSP_REGISTER_T)0x00002E00),
PROM_PageAdd47 = ((CSP_REGISTER_T)0x00002F00),
PROM_PageAdd48 = ((CSP_REGISTER_T)0x00003000),
PROM_PageAdd49 = ((CSP_REGISTER_T)0x00003100),
PROM_PageAdd50 = ((CSP_REGISTER_T)0x00003200),
PROM_PageAdd51 = ((CSP_REGISTER_T)0x00003300),
PROM_PageAdd52 = ((CSP_REGISTER_T)0x00003400),
PROM_PageAdd53 = ((CSP_REGISTER_T)0x00003500),
PROM_PageAdd54 = ((CSP_REGISTER_T)0x00003600),
PROM_PageAdd55 = ((CSP_REGISTER_T)0x00003700),
PROM_PageAdd56 = ((CSP_REGISTER_T)0x00003800),
PROM_PageAdd57 = ((CSP_REGISTER_T)0x00003900),
PROM_PageAdd58 = ((CSP_REGISTER_T)0x00003A00),
PROM_PageAdd59 = ((CSP_REGISTER_T)0x00003B00),
PROM_PageAdd60 = ((CSP_REGISTER_T)0x00003C00),
PROM_PageAdd61 = ((CSP_REGISTER_T)0x00003D00),
PROM_PageAdd62 = ((CSP_REGISTER_T)0x00003E00),
PROM_PageAdd63 = ((CSP_REGISTER_T)0x00003F00),
PROM_PageAdd64 = ((CSP_REGISTER_T)0x00004000),
PROM_PageAdd65 = ((CSP_REGISTER_T)0x00004100),
PROM_PageAdd66 = ((CSP_REGISTER_T)0x00004200),
PROM_PageAdd67 = ((CSP_REGISTER_T)0x00004300),
PROM_PageAdd68 = ((CSP_REGISTER_T)0x00004400),
PROM_PageAdd69 = ((CSP_REGISTER_T)0x00004500),
PROM_PageAdd70 = ((CSP_REGISTER_T)0x00004600),
PROM_PageAdd71 = ((CSP_REGISTER_T)0x00004700),
PROM_PageAdd72 = ((CSP_REGISTER_T)0x00004800),
PROM_PageAdd73 = ((CSP_REGISTER_T)0x00004900),
PROM_PageAdd74 = ((CSP_REGISTER_T)0x00004A00),
PROM_PageAdd75 = ((CSP_REGISTER_T)0x00004B00),
PROM_PageAdd76 = ((CSP_REGISTER_T)0x00004C00),
PROM_PageAdd77 = ((CSP_REGISTER_T)0x00004D00),
PROM_PageAdd78 = ((CSP_REGISTER_T)0x00004E00),
PROM_PageAdd79 = ((CSP_REGISTER_T)0x00004F00),
PROM_PageAdd80 = ((CSP_REGISTER_T)0x00005000),
PROM_PageAdd81 = ((CSP_REGISTER_T)0x00005100),
PROM_PageAdd82 = ((CSP_REGISTER_T)0x00005200),
PROM_PageAdd83 = ((CSP_REGISTER_T)0x00005300),
PROM_PageAdd84 = ((CSP_REGISTER_T)0x00005400),
PROM_PageAdd85 = ((CSP_REGISTER_T)0x00005500),
PROM_PageAdd86 = ((CSP_REGISTER_T)0x00005600),
PROM_PageAdd87 = ((CSP_REGISTER_T)0x00005700),
PROM_PageAdd88 = ((CSP_REGISTER_T)0x00005800),
PROM_PageAdd89 = ((CSP_REGISTER_T)0x00005900),
PROM_PageAdd90 = ((CSP_REGISTER_T)0x00005A00),
PROM_PageAdd91 = ((CSP_REGISTER_T)0x00005B00),
PROM_PageAdd92 = ((CSP_REGISTER_T)0x00005C00),
PROM_PageAdd93 = ((CSP_REGISTER_T)0x00005D00),
PROM_PageAdd94 = ((CSP_REGISTER_T)0x00005E00),
PROM_PageAdd95 = ((CSP_REGISTER_T)0x00005F00),
PROM_PageAdd96 = ((CSP_REGISTER_T)0x00006000),
PROM_PageAdd97 = ((CSP_REGISTER_T)0x00006100),
PROM_PageAdd98 = ((CSP_REGISTER_T)0x00006200),
PROM_PageAdd99 = ((CSP_REGISTER_T)0x00006300),
PROM_PageAdd100 = ((CSP_REGISTER_T)0x00006400),
PROM_PageAdd101 = ((CSP_REGISTER_T)0x00006500),
PROM_PageAdd102 = ((CSP_REGISTER_T)0x00006600),
PROM_PageAdd103 = ((CSP_REGISTER_T)0x00006700),
PROM_PageAdd104 = ((CSP_REGISTER_T)0x00006800),
PROM_PageAdd105 = ((CSP_REGISTER_T)0x00006900),
PROM_PageAdd106 = ((CSP_REGISTER_T)0x00006A00),
PROM_PageAdd107 = ((CSP_REGISTER_T)0x00006B00),
PROM_PageAdd108 = ((CSP_REGISTER_T)0x00006C00),
PROM_PageAdd109 = ((CSP_REGISTER_T)0x00006D00),
PROM_PageAdd110 = ((CSP_REGISTER_T)0x00006E00),
PROM_PageAdd111 = ((CSP_REGISTER_T)0x00006F00),
PROM_PageAdd112 = ((CSP_REGISTER_T)0x00007000),
PROM_PageAdd113 = ((CSP_REGISTER_T)0x00007100),
PROM_PageAdd114 = ((CSP_REGISTER_T)0x00007200),
PROM_PageAdd115 = ((CSP_REGISTER_T)0x00007300),
PROM_PageAdd116 = ((CSP_REGISTER_T)0x00007400),
PROM_PageAdd117 = ((CSP_REGISTER_T)0x00007500),
PROM_PageAdd118 = ((CSP_REGISTER_T)0x00007600),
PROM_PageAdd119 = ((CSP_REGISTER_T)0x00007700),
PROM_PageAdd120 = ((CSP_REGISTER_T)0x00007800),
PROM_PageAdd121 = ((CSP_REGISTER_T)0x00007900),
PROM_PageAdd122 = ((CSP_REGISTER_T)0x00007A00),
PROM_PageAdd123 = ((CSP_REGISTER_T)0x00007B00),
PROM_PageAdd124 = ((CSP_REGISTER_T)0x00007C00),
PROM_PageAdd125 = ((CSP_REGISTER_T)0x00007D00),
PROM_PageAdd126 = ((CSP_REGISTER_T)0x00007E00),
PROM_PageAdd127 = ((CSP_REGISTER_T)0x00007F00),
PROM_PageAdd128 = ((CSP_REGISTER_T)0x00008000),
PROM_PageAdd129 = ((CSP_REGISTER_T)0x00008100),
PROM_PageAdd130 = ((CSP_REGISTER_T)0x00008200),
PROM_PageAdd131 = ((CSP_REGISTER_T)0x00008300),
PROM_PageAdd132 = ((CSP_REGISTER_T)0x00008400),
PROM_PageAdd133 = ((CSP_REGISTER_T)0x00008500),
PROM_PageAdd134 = ((CSP_REGISTER_T)0x00008600),
PROM_PageAdd135 = ((CSP_REGISTER_T)0x00008700),
PROM_PageAdd136 = ((CSP_REGISTER_T)0x00008800),
PROM_PageAdd137 = ((CSP_REGISTER_T)0x00008900),
PROM_PageAdd138 = ((CSP_REGISTER_T)0x00008A00),
PROM_PageAdd139 = ((CSP_REGISTER_T)0x00008B00),
PROM_PageAdd140 = ((CSP_REGISTER_T)0x00008C00),
PROM_PageAdd141 = ((CSP_REGISTER_T)0x00008D00),
PROM_PageAdd142 = ((CSP_REGISTER_T)0x00008E00),
PROM_PageAdd143 = ((CSP_REGISTER_T)0x00008F00),
PROM_PageAdd144 = ((CSP_REGISTER_T)0x00009000),
PROM_PageAdd145 = ((CSP_REGISTER_T)0x00009100),
PROM_PageAdd146 = ((CSP_REGISTER_T)0x00009200),
PROM_PageAdd147 = ((CSP_REGISTER_T)0x00009300),
PROM_PageAdd148 = ((CSP_REGISTER_T)0x00009400),
PROM_PageAdd149 = ((CSP_REGISTER_T)0x00009500),
PROM_PageAdd150 = ((CSP_REGISTER_T)0x00009600),
PROM_PageAdd151 = ((CSP_REGISTER_T)0x00009700),
PROM_PageAdd152 = ((CSP_REGISTER_T)0x00009800),
PROM_PageAdd153 = ((CSP_REGISTER_T)0x00009900),
PROM_PageAdd154 = ((CSP_REGISTER_T)0x00009A00),
PROM_PageAdd155 = ((CSP_REGISTER_T)0x00009B00),
PROM_PageAdd156 = ((CSP_REGISTER_T)0x00009C00),
PROM_PageAdd157 = ((CSP_REGISTER_T)0x00009D00),
PROM_PageAdd158 = ((CSP_REGISTER_T)0x00009E00),
PROM_PageAdd159 = ((CSP_REGISTER_T)0x00009F00),
PROM_PageAdd160 = ((CSP_REGISTER_T)0x0000A000),
PROM_PageAdd161 = ((CSP_REGISTER_T)0x0000A100),
PROM_PageAdd162 = ((CSP_REGISTER_T)0x0000A200),
PROM_PageAdd163 = ((CSP_REGISTER_T)0x0000A300),
PROM_PageAdd164 = ((CSP_REGISTER_T)0x0000A400),
PROM_PageAdd165 = ((CSP_REGISTER_T)0x0000A500),
PROM_PageAdd166 = ((CSP_REGISTER_T)0x0000A600),
PROM_PageAdd167 = ((CSP_REGISTER_T)0x0000A700),
PROM_PageAdd168 = ((CSP_REGISTER_T)0x0000A800),
PROM_PageAdd169 = ((CSP_REGISTER_T)0x0000A900),
PROM_PageAdd170 = ((CSP_REGISTER_T)0x0000AA00),
PROM_PageAdd171 = ((CSP_REGISTER_T)0x0000AB00),
PROM_PageAdd172 = ((CSP_REGISTER_T)0x0000AC00),
PROM_PageAdd173 = ((CSP_REGISTER_T)0x0000AD00),
PROM_PageAdd174 = ((CSP_REGISTER_T)0x0000AE00),
PROM_PageAdd175 = ((CSP_REGISTER_T)0x0000AF00),
PROM_PageAdd176 = ((CSP_REGISTER_T)0x0000B000),
PROM_PageAdd177 = ((CSP_REGISTER_T)0x0000B100),
PROM_PageAdd178 = ((CSP_REGISTER_T)0x0000B200),
PROM_PageAdd179 = ((CSP_REGISTER_T)0x0000B300),
PROM_PageAdd180 = ((CSP_REGISTER_T)0x0000B400),
PROM_PageAdd181 = ((CSP_REGISTER_T)0x0000B500),
PROM_PageAdd182 = ((CSP_REGISTER_T)0x0000B600),
PROM_PageAdd183 = ((CSP_REGISTER_T)0x0000B700),
PROM_PageAdd184 = ((CSP_REGISTER_T)0x0000B800),
PROM_PageAdd185 = ((CSP_REGISTER_T)0x0000B900),
PROM_PageAdd186 = ((CSP_REGISTER_T)0x0000BA00),
PROM_PageAdd187 = ((CSP_REGISTER_T)0x0000BB00),
PROM_PageAdd188 = ((CSP_REGISTER_T)0x0000BC00),
PROM_PageAdd189 = ((CSP_REGISTER_T)0x0000BD00),
PROM_PageAdd190 = ((CSP_REGISTER_T)0x0000BE00),
PROM_PageAdd191 = ((CSP_REGISTER_T)0x0000BF00),
PROM_PageAdd192 = ((CSP_REGISTER_T)0x0000C000),
PROM_PageAdd193 = ((CSP_REGISTER_T)0x0000C100),
PROM_PageAdd194 = ((CSP_REGISTER_T)0x0000C200),
PROM_PageAdd195 = ((CSP_REGISTER_T)0x0000C300),
PROM_PageAdd196 = ((CSP_REGISTER_T)0x0000C400),
PROM_PageAdd197 = ((CSP_REGISTER_T)0x0000C500),
PROM_PageAdd198 = ((CSP_REGISTER_T)0x0000C600),
PROM_PageAdd199 = ((CSP_REGISTER_T)0x0000C700),
PROM_PageAdd200 = ((CSP_REGISTER_T)0x0000C800),
PROM_PageAdd201 = ((CSP_REGISTER_T)0x0000C900),
PROM_PageAdd202 = ((CSP_REGISTER_T)0x0000CA00),
PROM_PageAdd203 = ((CSP_REGISTER_T)0x0000CB00),
PROM_PageAdd204 = ((CSP_REGISTER_T)0x0000CC00),
PROM_PageAdd205 = ((CSP_REGISTER_T)0x0000CD00),
PROM_PageAdd206 = ((CSP_REGISTER_T)0x0000CE00),
PROM_PageAdd207 = ((CSP_REGISTER_T)0x0000CF00),
PROM_PageAdd208 = ((CSP_REGISTER_T)0x0000D000),
PROM_PageAdd209 = ((CSP_REGISTER_T)0x0000D100),
PROM_PageAdd210 = ((CSP_REGISTER_T)0x0000D200),
PROM_PageAdd211 = ((CSP_REGISTER_T)0x0000D300),
PROM_PageAdd212 = ((CSP_REGISTER_T)0x0000D400),
PROM_PageAdd213 = ((CSP_REGISTER_T)0x0000D500),
PROM_PageAdd214 = ((CSP_REGISTER_T)0x0000D600),
PROM_PageAdd215 = ((CSP_REGISTER_T)0x0000D700),
PROM_PageAdd216 = ((CSP_REGISTER_T)0x0000D800),
PROM_PageAdd217 = ((CSP_REGISTER_T)0x0000D900),
PROM_PageAdd218 = ((CSP_REGISTER_T)0x0000DA00),
PROM_PageAdd219 = ((CSP_REGISTER_T)0x0000DB00),
PROM_PageAdd220 = ((CSP_REGISTER_T)0x0000DC00),
PROM_PageAdd221 = ((CSP_REGISTER_T)0x0000DD00),
PROM_PageAdd222 = ((CSP_REGISTER_T)0x0000DE00),
PROM_PageAdd223 = ((CSP_REGISTER_T)0x0000DF00),
PROM_PageAdd224 = ((CSP_REGISTER_T)0x0000E000),
PROM_PageAdd225 = ((CSP_REGISTER_T)0x0000E100),
PROM_PageAdd226 = ((CSP_REGISTER_T)0x0000E200),
PROM_PageAdd227 = ((CSP_REGISTER_T)0x0000E300),
PROM_PageAdd228 = ((CSP_REGISTER_T)0x0000E400),
PROM_PageAdd229 = ((CSP_REGISTER_T)0x0000E500),
PROM_PageAdd230 = ((CSP_REGISTER_T)0x0000E600),
PROM_PageAdd231 = ((CSP_REGISTER_T)0x0000E700),
PROM_PageAdd232 = ((CSP_REGISTER_T)0x0000E800),
PROM_PageAdd233 = ((CSP_REGISTER_T)0x0000E900),
PROM_PageAdd234 = ((CSP_REGISTER_T)0x0000EA00),
PROM_PageAdd235 = ((CSP_REGISTER_T)0x0000EB00),
PROM_PageAdd236 = ((CSP_REGISTER_T)0x0000EC00),
PROM_PageAdd237 = ((CSP_REGISTER_T)0x0000ED00),
PROM_PageAdd238 = ((CSP_REGISTER_T)0x0000EE00),
PROM_PageAdd239 = ((CSP_REGISTER_T)0x0000EF00),
PROM_PageAdd240 = ((CSP_REGISTER_T)0x0000F000),
PROM_PageAdd241 = ((CSP_REGISTER_T)0x0000F100),
PROM_PageAdd242 = ((CSP_REGISTER_T)0x0000F200),
PROM_PageAdd243 = ((CSP_REGISTER_T)0x0000F300),
PROM_PageAdd244 = ((CSP_REGISTER_T)0x0000F400),
PROM_PageAdd245 = ((CSP_REGISTER_T)0x0000F50),
PROM_PageAdd246 = ((CSP_REGISTER_T)0x0000F600),
PROM_PageAdd247 = ((CSP_REGISTER_T)0x0000F700),
PROM_PageAdd248 = ((CSP_REGISTER_T)0x0000F800),
PROM_PageAdd249 = ((CSP_REGISTER_T)0x0000F900),
PROM_PageAdd250 = ((CSP_REGISTER_T)0x0000FA00),
PROM_PageAdd251 = ((CSP_REGISTER_T)0x0000FB00),
PROM_PageAdd252 = ((CSP_REGISTER_T)0x0000FC00),
PROM_PageAdd253 = ((CSP_REGISTER_T)0x0000FD00),
PROM_PageAdd254 = ((CSP_REGISTER_T)0x0000FE00),
PROM_PageAdd255 = ((CSP_REGISTER_T)0x0000FF00),
DROM_PageAdd0 = ((CSP_REGISTER_T)0x10000000), //DROM 每页64BYTE
DROM_PageAdd1 = ((CSP_REGISTER_T)0x10000040),
DROM_PageAdd2 = ((CSP_REGISTER_T)0x10000080),
DROM_PageAdd3 = ((CSP_REGISTER_T)0x100000C0),
DROM_PageAdd4 = ((CSP_REGISTER_T)0x10000100),
DROM_PageAdd5 = ((CSP_REGISTER_T)0x10000140),
DROM_PageAdd6 = ((CSP_REGISTER_T)0x10000180),
DROM_PageAdd7 = ((CSP_REGISTER_T)0x100001C0),
DROM_PageAdd8 = ((CSP_REGISTER_T)0x10000200),
DROM_PageAdd9 = ((CSP_REGISTER_T)0x10000240),
DROM_PageAdd10 = ((CSP_REGISTER_T)0x10000280),
DROM_PageAdd11 = ((CSP_REGISTER_T)0x100002C0),
DROM_PageAdd12 = ((CSP_REGISTER_T)0x10000300),
DROM_PageAdd13 = ((CSP_REGISTER_T)0x10000340),
DROM_PageAdd14 = ((CSP_REGISTER_T)0x10000380),
DROM_PageAdd15 = ((CSP_REGISTER_T)0x100003C0),
DROM_PageAdd16 = ((CSP_REGISTER_T)0x10000400),
DROM_PageAdd17 = ((CSP_REGISTER_T)0x10000440),
DROM_PageAdd18 = ((CSP_REGISTER_T)0x10000480),
DROM_PageAdd19 = ((CSP_REGISTER_T)0x100004C0),
DROM_PageAdd20 = ((CSP_REGISTER_T)0x10000500),
DROM_PageAdd21 = ((CSP_REGISTER_T)0x10000540),
DROM_PageAdd22 = ((CSP_REGISTER_T)0x10000580),
DROM_PageAdd23 = ((CSP_REGISTER_T)0x100005C0),
DROM_PageAdd24 = ((CSP_REGISTER_T)0x10000600),
DROM_PageAdd25 = ((CSP_REGISTER_T)0x10000640),
DROM_PageAdd26 = ((CSP_REGISTER_T)0x10000680),
DROM_PageAdd27 = ((CSP_REGISTER_T)0x100006C0),
DROM_PageAdd28 = ((CSP_REGISTER_T)0x10000700),
DROM_PageAdd29 = ((CSP_REGISTER_T)0x10000740),
DROM_PageAdd30 = ((CSP_REGISTER_T)0x10000780),
DROM_PageAdd31 = ((CSP_REGISTER_T)0x100007C0)
}IFC_ROMSELETED_TypeDef;
/**
* @brief IFC INT mode
*/
typedef enum
{
ERS_END_INT = (0x01ul),
RGM_END_INT = ((0x01ul)<<1),
PEP_END_INT = ((0x01ul)<<2),
PROT_ERR_INT = ((0x01ul)<<12),
UDEF_ERR_INT = ((0x01ul)<<13),
ADDR_ERR_INT = ((0x01ul)<<14),
OVW_ERR_INT = ((0x01ul)<<15)
}IFC_INT_TypeDef;
extern void ChipErase(void);
extern void PageErase(IFC_ROMSELETED_TypeDef XROM_PageAd);
extern void IFC_interrupt_CMD(FunctionalStatus NewState ,IFC_INT_TypeDef IFC_INT_x);
extern void IFC_Int_Enable(void);
extern void IFC_Int_Disable(void);
extern void Page_ProgramData(unsigned int FlashAdd,unsigned int DataSize,volatile unsigned char *BufArry);
extern void Page_ProgramData_int(unsigned int FlashAdd,unsigned int DataSize,volatile unsigned char *BufArry);
extern void ReadDataArry(unsigned int RdStartAdd,unsigned int DataLength,volatile unsigned char *DataArryPoint);
extern void ReadDataArry_U8(unsigned int RdStartAdd,unsigned int DataLength,volatile unsigned char *DataArryPoint);
extern volatile unsigned int R_INT_FlashAdd;
extern volatile unsigned char f_Drom_write_complete;
extern volatile unsigned char f_Drom_writing;
extern volatile unsigned char ifc_step;
extern void Page_ProgramData_U32(unsigned int FlashAdd,unsigned int DataSize,volatile U32_T *BufArry);
extern void ReadDataArry_U32(unsigned int RdStartAdd,unsigned int DataLength,volatile U32_T *DataArryPoint);
#endif /**< apt32f102_ifc_H */
/******************* (C) COPYRIGHT 2020 APT Chip *****END OF FILE****/

View File

@@ -0,0 +1,280 @@
/*
******************************************************************************
* @file apt32f102_lpt.h
* @author APT AE Team
* @version V1.08
* @date 2021/06/21
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef _apt32f102_lpt_H
#define _apt32f102_lpt_H
/* Includes ------------------------------------------------------------------*/
#include "apt32f102.h"
#define LPT_RESET_VALUE (0x00000000)
//--------------------------------------------------------------------------------
//-----------------------------LPT value enum define--------------------------
//--------------------------------------------------------------------------------
/**
* @brief LPT CLK EN register
*/
typedef enum
{
LPTCLK_DIS = 0,
LPTCLK_EN = 1,
}LPT_CLK_TypeDef;
/**
* @brief LPT CLK source register
*/
typedef enum
{
LPT_PCLK_DIV4= (0<<2),
LPT_ISCLK = (1<<2),
LPT_IMCLK_DIV4 = (2<<2),
LPT_EMCLK = (3<<2),
LPT_IN_RISE = (4<<2),
LPT_IN_FALL = (5<<2),
}LPT_CSS_TypeDef;
/**
* @brief LPT START SHADOW register
*/
typedef enum
{
LPT_SHADOW = (0<<6),
LPT_IMMEDIATE= (1<<6),
}LPT_SHDWSTP_TypeDef;
/**
* @brief LPT CLK div register
*/
typedef enum
{
LPT_PSC_DIV0= 0,
LPT_PSC_DIV2= 1,
LPT_PSC_DIV4= 2,
LPT_PSC_DIV8= 3,
LPT_PSC_DIV16= 4,
LPT_PSC_DIV32= 5,
LPT_PSC_DIV64= 6,
LPT_PSC_DIV128= 7,
LPT_PSC_DIV256= 8,
LPT_PSC_DIV512= 9,
LPT_PSC_DIV1024= 0X0A,
LPT_PSC_DIV2048= 0X0B,
LPT_PSC_DIV4096= 0X0C,
}LPT_PSCDIV_TypeDef;
/**
* @brief LPT START SYN EN register
*/
typedef enum
{
LPT_SWSYNDIS= (0<<2),
LPT_SWSYNEN= (1<<2),
}LPT_SWSYN_TypeDef;
/**
* @brief LPT IO stop status register
*/
typedef enum
{
LPT_IDLE_Z= (0<<3), //High-impedance output
LPT_IDLE_LOW= (1<<3),
}LPT_IDLEST_TypeDef;
/**
* @brief LPT PRDLD register
*/
typedef enum
{
LPT_PRDLD_IMMEDIATELY= (0<<4),
LPT_PRDLD_DUTY_END= (1<<4),
}LPT_PRDLD_TypeDef;
/**
* @brief LPT POL register
*/
typedef enum
{
LPT_POL_HIGH= (0<<5),
LPT_POL_LOW= (1<<5),
}LPT_POL_TypeDef;
/**
* @brief LPT OPM register
*/
typedef enum
{
LPT_OPM_CONTINUOUS= (0<<6),
LPT_OPM_ONCE= (1<<6),
}LPT_OPM_TypeDef;
/**
* @brief LPT FLTIPSCLD register
*/
typedef enum
{
LPT_FLTIPSCLD_NULL= (0<<10),
LPT_FLTIPSCLD_EN= (1<<10),
}LPT_FLTIPSCLD_TypeDef;
/**
* @brief LPT FLTDEB register
*/
typedef enum
{
LPT_FLTDEB_00= (0<<13),
LPT_FLTDEB_02= (1<<13),
LPT_FLTDEB_03= (2<<13),
LPT_FLTDEB_04= (3<<13),
LPT_FLTDEB_06= (4<<13),
LPT_FLTDEB_08= (5<<13),
LPT_FLTDEB_16= (6<<13),
LPT_FLTDEB_32= (7<<13),
}LPT_FLTDEB_TypeDef;
/**
* @brief LPT PSCLD register
*/
typedef enum
{
LPT_PSCLD_0= (0<<16), //PSCR
LPT_PSCLD_1= (1<<16),
}LPT_PSCLD_TypeDef;
/**
* @brief LPT CMPLD register
*/
typedef enum
{
LPT_CMPLD_IMMEDIATELY= (0<<17),
LPT_CMPLD_DUTY_END= (1<<17),
}LPT_CMPLD_TypeDef;
/**
* @brief LPT TRGENX register
*/
typedef enum
{
LPT_TRGEN_DIS= (0<<0),
LPT_TRGEN_EN= (1<<0),
}LPT_TRGENX_TypeDef;
/**
* @brief LPT OSTMDX register
*/
typedef enum
{
LPT_OSTMD_CONTINUOUS= (0<<8),
LPT_OSTMD_ONCE= (1<<8),
}LPT_OSTMDX_TypeDef;
/**
* @brief LPT AREARM register
*/
typedef enum
{
LPT_AREARM_DIS= (0<<30),
LPT_AREARM_EN= (1<<30),
}LPT_AREARM_TypeDef;
/**
* @brief LPT SRCSEL register
*/
typedef enum
{
LPT_SRCSEL_DIS= (0<<0),
LPT_SRCSEL_EN= (1<<0),
}LPT_SRCSEL_TypeDef;
/**
* @brief LPT BLKINV register
*/
typedef enum
{
LPT_BLKINV_DIS= (0<<4),
LPT_BLKINV_EN= (1<<4),
}LPT_BLKINV_TypeDef;
/**
* @brief LPT CROSSMD register
*/
typedef enum
{
LPT_CROSSMD_DIS= (0<<7),
LPT_CROSSMD_EN= (1<<7),
}LPT_CROSSMD_TypeDef;
/**
* @brief LPT TRGSRC0 register
*/
typedef enum
{
LPT_TRGSRC0_DIS= (0<<0),
LPT_TRGSRC0_ZRO= (1<<0),
LPT_TRGSRC0_PRD= (2<<0),
LPT_TRGSRC0_ZRO_PRD= (3<<0),
LPT_TRGSRC0_CMP= (4<<0),
}LPT_TRGSRC0_TypeDef;
/**
* @brief LPT ESYN0OE register
*/
typedef enum
{
LPT_ESYN0OE_DIS= (0<<20),
LPT_ESYN0OE_EN= (1<<20),
}LPT_ESYN0OE_TypeDef;
/**
* @brief LPT INT MASK SET/CLR Set
*/
typedef enum
{
LPT_TRGEV0 = (0x01 << 0),
LPT_MATCH = (0x01 << 1),
LPT_PEND = (0x01 << 2),
}LPT_IMSCR_TypeDef;
/**
* @brief LPT IO Set
*/
typedef enum
{
LPT_OUT_PA09 = 0,
LPT_OUT_PB01 = 1,
LPT_IN_PA10 = 2,
}LPT_IOSET_TypeDef;
#define LPT_DEBUG_MODE (0X01<<1)
extern void LPT_DeInit(void);
extern void LPT_IO_Init(LPT_IOSET_TypeDef IONAME);
extern void LPT_Configure(LPT_CLK_TypeDef CLKX,LPT_CSS_TypeDef CSSX,LPT_SHDWSTP_TypeDef SHDWSTPX,
LPT_PSCDIV_TypeDef PSCDIVX,U8_T FLTCKPRSX,LPT_OPM_TypeDef OPMX);
extern void LPT_Debug_Mode(FunctionalStatus NewState);
extern void LPT_Period_CMP_Write(U16_T PRDR_DATA,U16_T CMP_DATA);
extern void LPT_CNT_Write(U16_T CNT_DATA);
extern U16_T LPT_PRDR_Read(void);
extern U16_T LPT_CMP_Read(void);
extern U16_T LPT_CNT_Read(void);
extern void LPT_ControlSet_Configure(LPT_SWSYN_TypeDef SWSYNX,LPT_IDLEST_TypeDef IDLESTX,LPT_PRDLD_TypeDef PRDLDX,LPT_POL_TypeDef POLX,
LPT_FLTDEB_TypeDef FLTDEBX,LPT_PSCLD_TypeDef PSCLDX,LPT_CMPLD_TypeDef CMPLDX);
extern void LPT_SyncSet_Configure(LPT_TRGENX_TypeDef TRGENX,LPT_OSTMDX_TypeDef OSTMDX,LPT_AREARM_TypeDef AREARMX);
extern void LPT_Trigger_Configure(LPT_SRCSEL_TypeDef SRCSELX,LPT_BLKINV_TypeDef BLKINVX,LPT_CROSSMD_TypeDef CROSSMDX,LPT_TRGSRC0_TypeDef TRGSRC0X,
LPT_ESYN0OE_TypeDef ESYN0OEX,U16_T OFFSET_DATA,U16_T WINDOW_DATA,U8_T TRGEC0PRD_DATA);
extern void LPT_Trigger_Cnt(U8_T TRGEV0CNT_DATA);
extern void LPT_Trigger_EVPS(U8_T TRGEC0PRD_DATA,U8_T TRGEV0CNT_DATA);
extern void LPT_Soft_Trigger(void);
extern void LPT_Start(void);
extern void LPT_Stop(void);
extern void LPT_Soft_Reset(void);
extern void LPT_REARM_Write(void);
extern U8_T LPT_REARM_Read(void);
extern void LPT_ConfigInterrupt_CMD(FunctionalStatus NewState,LPT_IMSCR_TypeDef LPT_IMSCR_X);
extern void LPT_INT_ENABLE(void);
extern void LPT_INT_DISABLE(void);
/*************************************************************/
#endif /**< apt32f102_lpt_H */
/******************* (C) COPYRIGHT 2019 APT Chip *****END OF FILE****/

View File

@@ -0,0 +1,526 @@
/*
******************************************************************************
* @file main.c
* @author APT AE Team
* @version V1.09
* @date 2021/07/30
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef _apt32f102_syscon_H
#define _apt32f102_syscon_H
/* Includes ------------------------------------------------------------------*/
#include "apt32f102.h"
/******************************************************************************
************************* syscon Registers Definition *************************
******************************************************************************/
/** @addtogroup SYSCON Registers Reset Value
* @{
*/
#define SYSCON_IDCCR_RST ((CSP_REGISTER_T)0x00000001)
#define SYSCON_GCER_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_GCDR_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_GCSR_RST ((CSP_REGISTER_T)0x00081103)
#define SYSCON_CKST_RST ((CSP_REGISTER_T)0x00000103)
#define SYSCON_RAMCHK_RST ((CSP_REGISTER_T)0x0000ffff)
#define SYSCON_EFLCHK_RST ((CSP_REGISTER_T)(0X0<<24)|0xffffff)
#define SYSCON_SCLKCR_RST ((CSP_REGISTER_T)0xD22Dul<<16)
#define SYSCON_PCLKCR_RST ((CSP_REGISTER_T)0x00000100)
#define SYSCON_PCER0_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_PCDR0_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_PCSR0_RST ((CSP_REGISTER_T)0x005107d1)
#define SYSCON_PCER1_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_PCDR1_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_PCSR1_RST ((CSP_REGISTER_T)0x3023f80)
#define SYSCON_OSTR_RST ((CSP_REGISTER_T)0x70ff3bff)
#define SYSCON_LVDCR_RST ((CSP_REGISTER_T)0x0000000a)
#define SYSCON_CLCR_RST ((CSP_REGISTER_T)0x00000100)
#define SYSCON_PWRCR_RST ((CSP_REGISTER_T)0x141f1f00)
#define SYSCON_IMER_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_IMDR_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_IMCR_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_IAR_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_ICR_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_RISR_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_MISR_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_EXIRT_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_EXIFT_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_EXIER_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_EXIDR_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_EXIMR_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_EXIAR_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_EXICR_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_EXIRS_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_IWDCR_RST ((CSP_REGISTER_T)0x0000070C)
#define SYSCON_IWDCNT_RST ((CSP_REGISTER_T)0x000003fe)
#define SYSCON_PWROPT_RST ((CSP_REGISTER_T)0x00004040)
#define SYSCON_EVTRG_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_EVPS_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_EVSWF_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_UREG0_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_UREG1_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_UREG2_RST ((CSP_REGISTER_T)0x00000000)
#define SYSCON_UREG3_RST ((CSP_REGISTER_T)0x00000000)
//SCLKCR
#define SYSCLK_KEY (0xD22Dul<<16)
//PCLK CONTROL
#define PCLK_KEY (0xC33Cul<<16)
//IDCCR
#define CLKEN (0X01ul)
#define CPUFTRST_EN (0X00<<1)
#define CPUFTRST_DIS (0XA<<1)
#define SWRST (0X01ul<<7)
#define IDCCR_KEY (0xE11Eul<<16)
//LVDCR
#define LVDFLAG (0x01ul<<15) //0: VDD is higher than LVD threshold selected with INTDET_LVL bits. 1: VDD is lower than LVD threshold selected with INTDET_LVL bits
#define LVD_KEY (0xB44Bul<<16)
//IECR IEDR IAR ICR IMSR RISR ISR
//Interrupt Enable/Disable/Active/Clear Control Register
//Interrupt Masking/Raw Interrupt/Masked Status Register
#define ISOSC_ST (0x01ul)
#define IMOSC_ST (0x01ul<<1)
#define ESOSC_ST (0x01ul<<2)
#define EMOSC_ST (0x01ul<<3)
#define HFOSC_ST (0x01ul<<4)
#define SYSCLK_ST (0x01ul<<7)
#define IWDT_INT_ST (0x01ul<<8)
#define WKI_INT_ST (0x01ul<<9)
#define RAMERRINT_ST (0X01ul<<10)
#define LVD_INT_ST (0x01ul<<11)
#define HWD_ERR_ST (0X01ul<<12)
#define EFL_ERR_ST (0X01ul<<13)
#define OPTERR_INT (0X01ul<<14)
#define EM_CMLST_ST (0x01ul<<18)
#define EM_EVTRG0_ST (0x01ul<<19)
#define EM_EVTRG1_ST (0x01ul<<20)
#define EM_EVTRG2_ST (0x01ul<<21)
#define EM_EVTRG3_ST (0x01ul<<22)
#define CMD_ERR_ST (0x01ul<<29)
//RSR
//SYSCON Reset Status Register
#define PORST (0X01ul)
#define LVRRST (0X01ul<<1)
#define EXTRST (0X01ul<<2)
#define ALVRST (0X01ul<<3)
#define IWDRST (0X01ul<<4)
#define EMCMRST (0X01ul<<6)
#define CPURSTREQ (0X01ul<<7)
#define SWRST_RSR (0X01ul<<8)
#define CPUFAULT_RSR (0X01ul<<9)
#define SRAM_RSR (0X01ul<<11)
#define EFL_ERR (0X01ul<<12)
#define WWDTRST (0X01ul<<13)
//IWDCR
#define Check_IWDT_BUSY (0x01ul<<12) //Indicates the independent watchdog operation
#define IWDT_KEY (0x8778ul<<16)
//IWDCNT
#define CLR_IWDT (0x5aul<<24)
//IWDEDR
#define Enable_IWDT (0x0)
#define Disable_IWDT (0x55aa)
#define IWDTEDR_KEY (0x7887ul<<16)
#define CORET_IRQ 0
#define SYSCON_IRQ 1
#define IFC_IRQ 2
#define ADC_IRQ 3
#define EPT0_IRQ 4
#define WWDT_IRQ 6
#define EXI0_IRQ 7
#define EXI1_IRQ 8
#define GPT0_IRQ 9
#define RTC_IRQ 12
#define UART0_IRQ 13
#define UART1_IRQ 14
#define UART2_IRQ 15
#define I2C_IRQ 17
#define SPI_IRQ 19
#define SIO_IRQ 20
#define EXI2_IRQ 21
#define EXI3_IRQ 22
#define EXI4_IRQ 23
#define CA_IRQ 24
#define TKEY_IRQ 25
#define LPT_IRQ 26
#define BT0_IRQ 28
#define BT1_IRQ 29
/**
* @brief SYSCON General Control
*/
typedef enum
{
ENDIS_ISOSC = (CSP_REGISTER_T)(0x01ul),
ENDIS_IMOSC = (CSP_REGISTER_T)(0x01ul<<1),
ENDIS_EMOSC = (CSP_REGISTER_T)(0x01ul<<3),
ENDIS_HFOSC = (CSP_REGISTER_T)(0x01ul<<4),
ENDIS_IDLE_PCLK = (CSP_REGISTER_T)(0x01ul<<8),
ENDIS_SYSTICK = (CSP_REGISTER_T)(0x01ul<<11)
}SYSCON_General_CMD_TypeDef;
/**
* @brief Selected SYSCON CLK
*/
typedef enum
{
SYSCLK_IMOSC = (CSP_REGISTER_T)0x0ul, //IMOSC selected
SYSCLK_EMOSC = (CSP_REGISTER_T)0x1ul, //EMOSC selected
SYSCLK_HFOSC = (CSP_REGISTER_T)0x2ul, //HFOSC selected
SYSCLK_ISOSC = (CSP_REGISTER_T)0x4ul //ISOSC selected
}SystemCLK_TypeDef;
/**
* @brief SYSCON CLK Div
*/
typedef enum
{
HCLK_DIV_1 = (CSP_REGISTER_T)(0x1ul<<8),
HCLK_DIV_2 = (CSP_REGISTER_T)(0x2ul<<8),
HCLK_DIV_3 = (CSP_REGISTER_T)(0x3ul<<8),
HCLK_DIV_4 = (CSP_REGISTER_T)(0x4ul<<8),
HCLK_DIV_5 = (CSP_REGISTER_T)(0x5ul<<8),
HCLK_DIV_6 = (CSP_REGISTER_T)(0x6ul<<8),
HCLK_DIV_7 = (CSP_REGISTER_T)(0x7ul<<8),
HCLK_DIV_8 = (CSP_REGISTER_T)(0x8ul<<8),
HCLK_DIV_12 = (CSP_REGISTER_T)(0x9ul<<8),
HCLK_DIV_16 = (CSP_REGISTER_T)(0xAul<<8),
HCLK_DIV_24 = (CSP_REGISTER_T)(0xBul<<8),
HCLK_DIV_32 = (CSP_REGISTER_T)(0xCul<<8),
HCLK_DIV_64 = (CSP_REGISTER_T)(0xDul<<8),
HCLK_DIV_128 = (CSP_REGISTER_T)(0xEul<<8),
HCLK_DIV_256 = (CSP_REGISTER_T)(0xFul<<8)
}SystemCLK_Div_TypeDef;
/**
* @brief PCLK Div
*/
typedef enum
{
PCLK_DIV_1 = (CSP_REGISTER_T)(0x00ul<<8),
PCLK_DIV_2 = (CSP_REGISTER_T)(0x01ul<<8),
PCLK_DIV_4 = (CSP_REGISTER_T)(0x02ul<<8),
PCLK_DIV_8 = (CSP_REGISTER_T)(0x04ul<<8),
PCLK_DIV_16 = (CSP_REGISTER_T)(0x08ul<<8)
}PCLK_Div_TypeDef;
/**
* @brief LVD enable and disable
*/
typedef enum
{
ENABLE_LVDEN = (CSP_REGISTER_T)0x00, //Power down LVD module
DISABLE_LVDEN = (CSP_REGISTER_T)0x0a //Power down LVD module
}X_LVDEN_TypeDef;
/**
* @brief Detection voltage level to trigger the LVD interrupt
*/
typedef enum
{
INTDET_LVL_2_1V = (CSP_REGISTER_T)(0X00ul<<8), //2.1V
INTDET_LVL_2_4V = (CSP_REGISTER_T)(0X01ul<<8), //2.4V
INTDET_LVL_2_7V = (CSP_REGISTER_T)(0X02ul<<8), //2.7V
INTDET_LVL_3_0V = (CSP_REGISTER_T)(0X03ul<<8), //3.0V
INTDET_LVL_3_3V = (CSP_REGISTER_T)(0X04ul<<8), //3.3V
INTDET_LVL_3_6V = (CSP_REGISTER_T)(0X05ul<<8), //3.6V
INTDET_LVL_3_9V = (CSP_REGISTER_T)(0X06ul<<8), //3.9V
}INTDET_LVL_X_TypeDef;
/**
* @brief Detection voltage level to generate reset
*/
typedef enum
{
RSTDET_LVL_1_9V = (CSP_REGISTER_T)(0X00ul<<12), //1.9V
RSTDET_LVL_2_2V = (CSP_REGISTER_T)(0X01ul<<12), //2.2V
RSTDET_LVL_2_5V = (CSP_REGISTER_T)(0X02ul<<12), //2.5V
RSTDET_LVL_2_8V = (CSP_REGISTER_T)(0X03ul<<12), //2.8V
RSTDET_LVL_3_1V = (CSP_REGISTER_T)(0X04ul<<12), //3.1V
RSTDET_LVL_3_4V = (CSP_REGISTER_T)(0X05ul<<12), //3.4V
RSTDET_LVL_3_7V = (CSP_REGISTER_T)(0X06ul<<12), //3.7V
RSTDET_LVL_4_0V = (CSP_REGISTER_T)(0X07ul<<12) //4.0V
}RSTDET_LVL_X_TypeDef;
/**
* @brief Detection voltage level to trigger the LVD interrupt
*/
typedef enum
{
ENABLE_LVD_INT = (CSP_REGISTER_T)(0X01ul<<11), //ENABLE LVD INT
DISABLE_LVD_INT = (CSP_REGISTER_T)(0X00ul<<11) //DISABLE LVD INT
}X_LVD_INT_TypeDef;
/**
* @brief EXI PIN
*/
typedef enum
{
EXI_PIN0 = (CSP_REGISTER_T)(0X01ul),
EXI_PIN1 = (CSP_REGISTER_T)(0X01ul<<1),
EXI_PIN2 = (CSP_REGISTER_T)(0X01ul<<2),
EXI_PIN3 = (CSP_REGISTER_T)(0X01ul<<3),
EXI_PIN4 = (CSP_REGISTER_T)(0X01ul<<4),
EXI_PIN5 = (CSP_REGISTER_T)(0X01ul<<5),
EXI_PIN6 = (CSP_REGISTER_T)(0X01ul<<6),
EXI_PIN7 = (CSP_REGISTER_T)(0X01ul<<7),
EXI_PIN8 = (CSP_REGISTER_T)(0X01ul<<8),
EXI_PIN9 = (CSP_REGISTER_T)(0X01ul<<9),
EXI_PIN10 = (CSP_REGISTER_T)(0X01ul<<10),
EXI_PIN11 = (CSP_REGISTER_T)(0X01ul<<11),
EXI_PIN12 = (CSP_REGISTER_T)(0X01ul<<12),
EXI_PIN13 = (CSP_REGISTER_T)(0X01ul<<13),
EXI_PIN14 = (CSP_REGISTER_T)(0X01ul<<14),
EXI_PIN15 = (CSP_REGISTER_T)(0X01ul<<15),
EXI_PIN16 = (CSP_REGISTER_T)(0X01ul<<16),
EXI_PIN17 = (CSP_REGISTER_T)(0X01ul<<17),
EXI_PIN18 = (CSP_REGISTER_T)(0X01ul<<18),
EXI_PIN19 = (CSP_REGISTER_T)(0X01ul<<19),
}SYSCON_EXIPIN_TypeDef;
/**
* @brief EXT register
*/
typedef enum
{
_EXIRT = 0,
_EXIFT = 1,
}EXI_tringer_mode_TypeDef;
/**
* @brief SYSON IWDT TIME SET
*/
typedef enum
{
IWDT_TIME_125MS = (CSP_REGISTER_T)(0x00ul<<8), //IWDT_TIME 0x00fff
IWDT_TIME_250MS = (CSP_REGISTER_T)(0x01ul<<8), //IWDT_TIME 0x01fff
IWDT_TIME_500MS = (CSP_REGISTER_T)(0x02ul<<8), //IWDT_TIME 0x03fff
IWDT_TIME_1S = (CSP_REGISTER_T)(0x03ul<<8), //IWDT_TIME 0x07fff
IWDT_TIME_2S = (CSP_REGISTER_T)(0x04ul<<8), //IWDT_TIME 0x0ffff //2M ISOSC 2sec
IWDT_TIME_3S = (CSP_REGISTER_T)(0x05ul<<8), //IWDT_TIME 0x16fff
IWDT_TIME_4S = (CSP_REGISTER_T)(0x06ul<<8), //IWDT_TIME 0x1ffff
IWDT_TIME_8S = (CSP_REGISTER_T)(0x07ul<<8) //IWDT_TIME 0x3ffff
}IWDT_TIME_TypeDef;
/**
* @brief SYSON IWDT TIME DIV SET
*/
typedef enum
{
IWDT_INTW_DIV_1 = (0x00ul<<2), //1/8 of IWDT_TIME
IWDT_INTW_DIV_2 = (0x01ul<<2), //2/8 of IWDT_TIME
IWDT_INTW_DIV_3 = (0x02ul<<2), //3/8 of IWDT_TIME
IWDT_INTW_DIV_4 = (0x03ul<<2), //4/8 of IWDT_TIME
IWDT_INTW_DIV_5 = (0x04ul<<2), //5/8 of IWDT_TIME
IWDT_INTW_DIV_6 = (0x05ul<<2), //6/8 of IWDT_TIME
IWDT_INTW_DIV_7 = (0x06ul<<2) //7/8 of IWDT_TIME
}IWDT_TIMEDIV_TypeDef;
/**
* @brief IMOSC SELECTE SET
*/
typedef enum
{
IMOSC_SELECTE_5556K = (0x00ul<<0),
IMOSC_SELECTE_4194K = (0x01ul<<0),
IMOSC_SELECTE_2097K = (0x02ul<<0),
IMOSC_SELECTE_131K = (0x03ul<<0)
}IMOSC_SELECTE_TypeDef;
/**
* @brief HFOSC SELECTE SET
*/
typedef enum
{
HFOSC_SELECTE_48M = (0x0ul<<4),
HFOSC_SELECTE_24M = (0x1ul<<4),
HFOSC_SELECTE_12M = (0x2ul<<4),
HFOSC_SELECTE_6M = (0x3ul<<4)
}HFOSC_SELECTE_TypeDef;
/**
* @brief EM Filter set
*/
typedef enum
{
EM_FLSEL_5ns = (0x0ul<<26),
EM_FLSEL_10ns = (0x1ul<<26),
EM_FLSEL_15ns = (0x2ul<<26),
EM_FLSEL_20ns = (0x3ul<<26)
}EM_Filter_TypeDef;
/**
* @brief EM Filter CMD
*/
typedef enum
{
EM_FLEN_DIS = (0x0ul<<25),
EM_FLEN_EN = (0x1ul<<25)
}EM_Filter_CMD_TypeDef;
/**
* @brief EM LFSEL BIT
*/
typedef enum
{
EM_LFSEL_DIS = (0x0ul<<10),
EM_LFSEL_EN = (0x1ul<<10)
}EM_LFSEL_TypeDef;
/**
* @brief EM Systemclk data
*/
typedef enum
{
EMOSC_24M = 0,
EMOSC_16M = 1,
EMOSC_12M = 2,
EMOSC_8M = 3,
EMOSC_4M = 4,
EMOSC_36K = 5,
IMOSC = 6,
ISOSC = 7,
HFOSC_48M = 8,
HFOSC_24M = 9,
HFOSC_12M = 10,
HFOSC_6M = 11
}SystemClk_data_TypeDef;
typedef enum
{
CLO_PA02 = 0, //PA0.0 as clo
CLO_PA08 = 1, //PA0.8 as clo
}CLO_IO_TypeDef;
typedef enum
{
INTDET_POL_fall = (1<<6), //fall Trigger
INTDET_POL_X_rise = (2<<6), //rise Trigger
INTDET_POL_X_riseORfall = (3<<6), //fall or rise Trigger
}INTDET_POL_X_TypeDef;
typedef enum
{
//IOMAP0
PIN_I2C_SCL = 0X00, //
PIN_I2C_SDA = 0X01, //
PIN_GPT_CHA = 0X02, //
PIN_GPT_CHB = 0X03, //
PIN_SPI_MOSI = 0X04, //
PIN_SPI_MISO = 0X05, //
PIN_SPI_SCK = 0X06, //
PIN_SPI_NSS = 0X07, //
//IOMAP1
PIN_UART0_RX = 0X10, //
PIN_UART0_TX = 0X11, //
PIN_EPT_CHAX = 0X12, //
PIN_EPT_CHBX = 0X13, //
PIN_EPT_CHCX = 0X14, //
PIN_EPT_CHAY = 0X15, //
PIN_EPT_CHBY = 0X16, //
PIN_EPT_CHCY = 0X17, //
}IOMAP_DIR_TypeDef;
/**
* @brief CLOMX Systemclk data
*/
typedef enum
{
CLO_ISCLK = 0,
CLO_IMCLK = 1,
CLO_EMCLK = 3,
CLO_HFCLK = 4,
CLO_RTCCLK = 6,
CLO_PCLK = 7,
CLO_HCLK = 8,
CLO_IWDTCLK = 9,
CLO_SYSCLK = 0X0D,
}SystemClk_CLOMX_TypeDef;
/**
* @brief CLOMX Systemclk data
*/
typedef enum
{
CLO_DIV0 = 1,
CLO_DIV4 = 0,
CLO_DIV2 = 2,
CLO_DIV8 = 4,
CLO_DIV16 = 5,
}SystemClk_CLODIV_TypeDef;
/** @addtogroup SYSCON_Exported_functions
* @{
*/
extern void SYSCON_RST_VALUE(void);
extern void SYSCON_General_CMD(FunctionalStatus NewState, SYSCON_General_CMD_TypeDef ENDIS_X );
extern void EMOSC_OSTR_Config(U16_T EM_CNT, U8_T EM_GM,EM_LFSEL_TypeDef EM_LFSEL_X, EM_Filter_CMD_TypeDef EM_FLEN_X, EM_Filter_TypeDef EM_FLSEL_X);
extern void SystemCLK_HCLKDIV_PCLKDIV_Config(SystemCLK_TypeDef SYSCLK_X , SystemCLK_Div_TypeDef HCLK_DIV_X , PCLK_Div_TypeDef PCLK_DIV_X , SystemClk_data_TypeDef SystemClk_data_x );
extern void SYSCON_WDT_CMD(FunctionalStatus NewState);
extern void SYSCON_IWDCNT_Reload(void);
extern void SYSCON_IWDCNT_Config(IWDT_TIME_TypeDef IWDT_TIME_X , IWDT_TIMEDIV_TypeDef IWDT_INTW_DIV_X );
extern void SYSCON_LVD_Config(X_LVDEN_TypeDef X_LVDEN , INTDET_LVL_X_TypeDef INTDET_LVL_X , RSTDET_LVL_X_TypeDef RSTDET_LVL_X , X_LVD_INT_TypeDef X_LVD_INT , INTDET_POL_X_TypeDef INTDET_POL_X);
extern void EXTI_trigger_CMD(FunctionalStatus NewState , SYSCON_EXIPIN_TypeDef EXIPIN , EXI_tringer_mode_TypeDef EXI_tringer_mode);
extern void EXTI_interrupt_CMD(FunctionalStatus NewState , SYSCON_EXIPIN_TypeDef EXIPIN);
extern void SYSCON_CLO_CONFIG(CLO_IO_TypeDef clo_io);
extern U32_T SYSCON_Read_CINF0(void);
extern U32_T SYSCON_Read_CINF1(void);
extern void SYSCON_INT_Priority(void);
extern void EXI0_Int_Enable(void);
extern void EXI0_Int_Disable(void);
extern void EXI1_Int_Enable(void);
extern void EXI1_Int_Disable(void);
extern void EXI2_Int_Enable(void);
extern void EXI2_Int_Disable(void);
extern void EXI3_Int_Enable(void);
extern void EXI3_Int_Disable(void);
extern void EXI4_Int_Enable(void);
extern void EXI4_Int_Disable(void);
extern void SYSCON_Int_Enable(void);
extern void SYSCON_Int_Disable(void);
extern void PCLK_goto_idle_mode(void);
extern void PCLK_goto_deepsleep_mode(void);
extern void LVD_Int_Enable(void);
extern void LVD_Int_Disable(void);
extern void IWDT_Int_Enable(void);
extern void IWDT_Int_Disable(void);
extern void EXI0_WakeUp_Enable(void);
extern void EXI0_WakeUp_Disable(void);
extern void EXI1_WakeUp_Enable(void);
extern void EXI1_WakeUp_Disable(void);
extern void EXI2_WakeUp_Enable(void);
extern void EXI2_WakeUp_Disable(void);
extern void EXI3_WakeUp_Enable(void);
extern void EXI3_WakeUp_Disable(void);
extern void EXI4_WakeUp_Enable(void);
extern void EXI4_WakeUp_Disable(void);
extern void SYSCON_WakeUp_Enable(void);
extern void SYSCON_WakeUp_Disable(void);
extern void GPIO_EXTI_interrupt(CSP_GPIO_T * GPIOX,U32_T GPIO_IECR_VALUE);
extern void SYSCON_Software_Reset(void);
extern void SYSCON_HFOSC_SELECTE(HFOSC_SELECTE_TypeDef HFOSC_SELECTE_X);
extern void SYSCON_IMOSC_SELECTE(IMOSC_SELECTE_TypeDef IMOSC_SELECTE_X);
extern void SystemCLK_Clear(void);
extern void GPIO_Remap(CSP_GPIO_T *GPIOx,uint8_t bit,IOMAP_DIR_TypeDef iomap_data);
extern void SYSCON_CLO_SRC_SET(SystemClk_CLOMX_TypeDef clomxr,SystemClk_CLODIV_TypeDef clodivr);
extern void Set_INT_Priority(U8_T int_name,U8_T int_level);
extern U32_T Read_Reset_Status(void);
#endif /**< apt32f102_syscon_H */
/******************* (C) COPYRIGHT 2020 APT Chip *****END OF FILE****/

View File

@@ -0,0 +1,245 @@
/*
******************************************************************************
* @file apt32f102_types_local.h
* @author APT AE Team
* @version V1.08
* @date 2021/06/21
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
#ifndef TYPES_LOCAL_H
#define TYPES_LOCAL_H
/**************************************************************************/
/**************************************************************************
STANDARD DEFINES
**************************************************************************/
#define NIL '\000'
#define TRUE 1
#define FALSE 0
#define YES 1
#define NO 0
#define ON 1
#define OFF 0
#define GOOD 1
#define BAD 0
#define BELL 7 /* Ring the bell */
#define MAX_SINT16 32767
#define CPNULL ((char *)0)
#define NONENTRY -1.0E12
#define DPIE (DOUBLE)3.141592653589793
/* other stuff... */
#define STRNCPY(a,b,c) strncpy (a,b,c); (*((a)+(c)) = 0x00);
/**************************************************************************
STANDARD TYPEDEFS
The ANSI C std defines:
short <= int <= long
char >= 8 bits
short >= 16 bits
long >= 32 bits
(from Harbison & Steele, "C, A Ref. Manual" 3rd ed. p. 99)
so all ANSI C compliant compilers will accept the following.
**************************************************************************/
#ifndef CSP_TYPES_H
#define CSP_TYPES_H
/* Signed Types */
typedef signed char S8_T;
typedef short S16_T;
typedef long S32_T;
/* Unsigned Types */
typedef unsigned char U8_T;
typedef unsigned short U16_T;
typedef unsigned long U32_T;
typedef unsigned long long U64_T;
/* Float Types */
typedef float F32_T;
typedef double F64_T;
/* Boolean types declared as U8_T, as enums are generated as 16 bit */
typedef U8_T B_T;
/* Definitions for the two members of the Boolean type */
#ifndef FALSE
#define FALSE ((B_T) 0)
#endif
#ifndef TRUE
#define TRUE ((B_T) 1)
#endif
/* UNUSED Definition for unused Interrupt numbers * and unused PDC channels */
/* in the CHIP structure. (cf. CSP.C file) */
#ifndef UNUSED
#define UNUSED ((U8_T) 0xFF)
#endif
/* NULL definition */
#ifndef NULL
#define NULL 0
#endif
typedef enum {ENABLE = 1, DISABLE = !ENABLE} ClockStatus, FunctionalStatus;
typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;
typedef enum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;
/******************************************************************************
* Peripherals Type
******************************************************************************/
typedef volatile U32_T CSP_REGISTER_T;
typedef volatile U16_T CSP_REGISTER16_T;
typedef volatile U8_T CSP_REGISTER8_T;
#endif /* CSP_TYPE_H */
/* define 8 bit types */
typedef unsigned char UINT8;
typedef signed char SINT8;
/* define 16 bit types */
typedef unsigned short UINT16;
typedef signed short SINT16;
/* define 32 bit types */
typedef unsigned long UINT32;
typedef signed long SINT32;
typedef void VOID;
typedef signed char CHAR; /* be careful of EOF!!! (EOF = -1) */
typedef unsigned char BOOL;
typedef signed long TIME_T;
typedef float SINGLE;
#ifdef DOUBLE
#undef DOUBLE
#endif
typedef double DOUBLE;
typedef struct
{
unsigned bit0 : 1;
unsigned bit1 : 1;
unsigned bit2 : 1;
unsigned bit3 : 1;
unsigned bit4 : 1;
unsigned bit5 : 1;
unsigned bit6 : 1;
unsigned bit7 : 1;
} REG8;
typedef struct
{
unsigned bit0 : 1;
unsigned bit1 : 1;
unsigned bit2 : 1;
unsigned bit3 : 1;
unsigned bit4 : 1;
unsigned bit5 : 1;
unsigned bit6 : 1;
unsigned bit7 : 1;
unsigned bit8 : 1;
unsigned bit9 : 1;
unsigned bit10: 1;
unsigned bit11: 1;
unsigned bit12: 1;
unsigned bit13: 1;
unsigned bit14: 1;
unsigned bit15: 1;
} REG16;
/**************************************************************************
STANDARD STRING TYPEDEFS
**************************************************************************/
typedef char STRING_3[4];
typedef char STRING_5[6];
typedef char STRING_8[9];
typedef char STRING_10[11];
typedef char STRING_12[13];
typedef char STRING_16[17];
typedef char STRING_24[25];
typedef char STRING_30[31];
typedef char STRING_32[33];
typedef char STRING_48[49];
typedef char STRING_50[51];
typedef char STRING_60[61];
typedef char STRING_80[81];
typedef char STRING_132[133];
typedef char STRING_256[257];
typedef char STRING_512[513];
/********************************************/
/* STANDARD SYSTEM SIZES */
/********************************************/
#define SIZE_UINT8 (size_t)(sizeof (UINT8 ))
#define SIZE_SINT8 (size_t)(sizeof (SINT8 ))
#define SIZE_UINT16 (size_t)(sizeof (UINT16))
#define SIZE_SINT16 (size_t)(sizeof (SINT16))
#define SIZE_UINT32 (size_t)(sizeof (UINT32))
#define SIZE_SINT32 (size_t)(sizeof (SINT32))
#define SIZE_VOID (size_t)(sizeof (VOID ))
#define SIZE_CHAR (size_t)(sizeof (CHAR ))
#define SIZE_BOOL (size_t)(sizeof (BOOL ))
#define SIZE_TIME_T (size_t)(sizeof (TIME_T))
#define SIZE_SINGLE (size_t)(sizeof (SINGLE))
#define SIZE_DOUBLE (size_t)(sizeof (DOUBLE))
#define SIZE_STRING_3 (size_t)(sizeof (STRING_3 ))
#define SIZE_STRING_5 (size_t)(sizeof (STRING_5 ))
#define SIZE_STRING_8 (size_t)(sizeof (STRING_8 ))
#define SIZE_STRING_10 (size_t)(sizeof (STRING_10 ))
#define SIZE_STRING_12 (size_t)(sizeof (STRING_12 ))
#define SIZE_STRING_16 (size_t)(sizeof (STRING_16 ))
#define SIZE_STRING_24 (size_t)(sizeof (STRING_24 ))
#define SIZE_STRING_30 (size_t)(sizeof (STRING_30 ))
#define SIZE_STRING_32 (size_t)(sizeof (STRING_32 ))
#define SIZE_STRING_48 (size_t)(sizeof (STRING_48 ))
#define SIZE_STRING_50 (size_t)(sizeof (STRING_50 ))
#define SIZE_STRING_60 (size_t)(sizeof (STRING_60 ))
#define SIZE_STRING_80 (size_t)(sizeof (STRING_80 ))
#define SIZE_STRING_132 (size_t)(sizeof (STRING_132))
#define SIZE_STRING_256 (size_t)(sizeof (STRING_256))
#define SIZE_STRING_512 (size_t)(sizeof (STRING_512))
/**************************************************************************
STANDARD BIT MANIPULATIONS
**************************************************************************/
#define SETBIT( target, bit ) ((target) |= (1u << (bit)))
#define CLRBIT( target, bit ) ((target) &= ~(1u << (bit)))
#define TOGBIT( target, bit ) ((target) ^= (1u << (bit)))
#define ISBITSET( target, bit ) (!!((target) & (1u << (bit))))
#define ISBITCLR( target, bit ) ( !((target) & (1u << (bit))))
/**************************************************************************/
#endif
/******************* (C) COPYRIGHT 2019 APT Chip *****END OF FILE****/

View File

@@ -0,0 +1,145 @@
/*
******************************************************************************
* @file apt32f102_uart.h
* @author APT AE Team
* @version V1.13
* @date 2021/12/13
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef _apt32f102_uart_H
#define _apt32f102_uart_H
/* Includes ------------------------------------------------------------------*/
#include "apt32f102.h"
typedef enum
{
UART_PAR_NONE =0<<8, //无校验位
UART_PAR_EVEN =4<<8, //偶校验位
UART_PAR_ODD =5<<8, //奇校验位
UART_PAR_SPACE =6<<8, //0校验位
UART_PAR_MARK =7<<8 //1校验位
}UART_PAR_TypeDef;
/**
* @brief UART IO setting
*/
typedef enum
{
IO_UART0 = 0,
IO_UART1 = 1,
IO_UART2 = 2,
}UART_NUM_TypeDef;
/*****************************************************************************
************************** UART Function defined *****************************
******************************************************************************/
#define UART_RESET_VALUE (0x00000000)
/** SR : UART Status Register */
#define UART_TX_FULL (0x01ul << 0) /**< Transmitter full */
#define UART_RX_FULL (0x01ul << 1) /**< Receiver full */
#define UART_TX_OVER (0x01ul << 2) /**< Transmitter buff over */
#define UART_RX_OVER (0x01ul << 3) /**< Receiver buff over */
/** CTRL : UART Control Register */
#define UART_TX (0x01ul << 0) /**< Transmitter Enable/disable */
#define UART_RX (0x01ul << 1) /**< Receiver Enable/disable */
#define UART_TX_INT (0x01ul << 2) /**< Transmitter INT Enable/disable */
#define UART_RX_INT (0x01ul << 3) /**< Receiver INT Enable/disable */
#define UART_TX_IOV (0x01ul << 4) /**< Transmitter INTOver Enable/disable*/
#define UART_RX_IOV (0x01ul << 5) /**< Receiver INTOver Enable/disable */
#define UART_PARUTY_ERR_INT (0x01ul << 7) /**< PARUTY ERROR Status */
#define UART_TX_FIFO_INT (0x01ul << 12) /**< TX fifo int Enable/disable */
#define UART_RX_FIFO_INT (0x01ul << 13) /**< RX fifo int Enable/disable */
#define UART_RX_FIFOOV_INT (0x01ul << 18) /**< RX fifo int over Enable/disable */
#define UART_TX_DONE_INT (0x01ul << 19) /**< Receiver TX done Enable/disable */
//#define UART_TEST_MODE (0x01ul << 6) /**< =1 Test mode */
/** ISR : UART Interrupt Status Register */
#define UART_TX_INT_S (0x01ul << 0) /**< Transmitter INT Status */
#define UART_RX_INT_S (0x01ul << 1) /**< Receiver INTStatus */
#define UART_TX_IOV_S (0x01ul << 2) /**< Transmitter INTOver Status */
#define UART_RX_IOV_S (0x01ul << 3) /**< Receiver INTOver Status */
#define UART_PARUTY_ERR_S (0x01ul << 4) /**< PARUTY ERROR Status */
#define UART_TXMIS_S (0x01ul << 5) /**< tx fifo Status */
#define UART_RXMIS_S (0x01ul << 6) /**< rx fifo Status */
#define UART_RORMIS_S (0x01ul << 7) /**< rx fifo over Status */
#define UART_TX_DONE_S (0x01ul << 19) /**< Receiver INTOver Status */
/** Set DATA register */
#define CSP_UART_SET_DATA(uart, val) ((uart)->DATA = (val))
/** Get DATA register */
#define CSP_UART_GET_DATA(uart) ((uart)->DATA)
/** Set SR register */
#define CSP_UART_SET_SR(uart, val) ((uart)->SR = (val))
/** Get SR register */
#define CSP_UART_GET_SR(uart) ((uart)->SR)
/** Set CTRL register */
#define CSP_UART_SET_CTRL(uart, val) ((uart)->CTRL = (val))
/** Get CTRL register */
#define CSP_UART_GET_CTRL(uart) ((uart)->CTRL)
/** Set ISR register */
#define CSP_UART_SET_ISR(uart, val) ((uart)->ISR = (val))
/** Get ISR register */
#define CSP_UART_GET_ISR(uart) ((uart)->ISR)
/** Set BRDIV register */
#define CSP_UART_SET_BRDIV(uart, val) ((uart)->BRDIV = (val))
/** Get BRDIV register */
#define CSP_UART_GET_BRDIV(uart) ((uart)->BRDIV)
/** UART External Variable Declaration */
#define UART_BUFSIZE 32
extern volatile U16_T RxDataBuf[12];
extern volatile U16_T RxDataPtr;
extern volatile U16_T TxDataPtr;
extern volatile U8_T RxDataFlag;
extern volatile U8_T TxDataFlag;
extern volatile U8_T Uart_send_Length;
extern volatile U16_T Uart_send_Length_temp;
extern volatile U8_T Uart_buffer[UART_BUFSIZE];
/** UART External Functions Declaration */
extern void UARTInit(CSP_UART_T *uart,U16_T baudrate_u16,UART_PAR_TypeDef PAR_DAT);
extern void UARTClose(CSP_UART_T *uart);
extern void UARTInitRxIntEn(CSP_UART_T *uart,U16_T baudrate_u16,UART_PAR_TypeDef PAR_DAT);
extern void UARTInitRxTxIntEn(CSP_UART_T *uart,U16_T baudrate_u16,UART_PAR_TypeDef PAR_DAT);
extern void UARTTxByte(CSP_UART_T *uart,U8_T txdata_u8);
extern void UARTTransmit(CSP_UART_T *uart,U8_T *sourceAddress_u16,U16_T length_u16);
extern U16_T UARTRxByte(CSP_UART_T *uart,U8_T *Rxdata_u16);
extern U8_T UART_ReturnRxByte(CSP_UART_T *uart);
extern U16_T UARTReceive(CSP_UART_T *uart,U8_T *destAddress_u16,U16_T length_u16);
extern void UART0_DeInit(void);
extern void UART1_DeInit(void);
extern void UART2_DeInit(void);
extern void UART_IO_Init(UART_NUM_TypeDef IO_UART_NUM , U8_T UART_IO_G);
extern void UART0_Int_Enable(void);
extern void UART1_Int_Enable(void);
extern void UART2_Int_Enable(void);
extern void UART0_Int_Disable(void);
extern void UART1_Int_Disable(void);
extern void UART2_Int_Disable(void);
extern void UART0_WakeUp_Enable(void);
extern void UART1_WakeUp_Enable(void);
extern void UART2_WakeUp_Enable(void);
extern void UART0_WakeUp_Disable(void);
extern void UART1_WakeUp_Disable(void);
extern void UART2_WakeUp_Disable(void);
extern void UART0_CONFIG(void);
extern void UART1_CONFIG(void);
extern void UART2_CONFIG(void);
extern void UARTTTransmit_data_set(CSP_UART_T *uart );
extern void UARTTransmit_INT_Send(CSP_UART_T *uart );
#endif /**< apt32f102_types_local_H */
/******************* (C) COPYRIGHT 2016 APT Chip *****END OF FILE****/

View File

@@ -0,0 +1,65 @@
/*
******************************************************************************
* @file apt32f102_wwdt.h
* @author APT AE Team
* @version V1.02
* @date 2020/11/20
******************************************************************************
*THIS SOFTWARE WHICH IS FOR ILLUSTRATIVE PURPOSES ONLY WHICH PROVIDES
*CUSTOMER WITH CODING INFORMATION REGARDING THEIR PRODUCTS.
*APT CHIP SHALL NOT BE HELD RESPONSIBILITY ADN LIABILITY FOR ANY DIRECT,
*INDIRECT DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT OF
*SUCH SOFTWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION
*CONTAINED HEREIN IN CONNECTION WITH THEIR PRODUCTS.AND APT CHIP RESERVES
*THE RIGHT TO MAKE CHANGES IN THE SOFTWARE WITHOUT NOTIFICATION
******************************************************************************
*/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef _apt32f102_wwdt_H
#define _apt32f102_wwdt_H
/* Includes ------------------------------------------------------------------*/
#include "apt32f102.h"
#define WWDT_RESET_VALUE (0x00000000)
//--------------------------------------------------------------------------------
//-----------------------------wwdt value enum define--------------------------
//--------------------------------------------------------------------------------
/**
* @brief PSC DIV register
*/
typedef enum
{
PCLK_4096_DIV0 = (0<<8),
PCLK_4096_DIV2 = (1<<8),
PCLK_4096_DIV4 = (2<<8),
PCLK_4096_DIV8 = (3<<8),
}WWDT_PSCDIV_TypeDef;
/**
* @brief WWDT DEBUG MODE register
*/
typedef enum
{
WWDT_DBGDIS = (0<<10),
WWDT_DBGEN = (1<<10),
}WWDT_DBGEN_TypeDef;
#define WWDT_EVI 0X01
extern void WWDT_DeInit(void);
extern void WWDT_CONFIG(WWDT_PSCDIV_TypeDef PSCDIVX,U8_T WND_DATA,WWDT_DBGEN_TypeDef DBGENX);
extern void WWDT_CMD(FunctionalStatus NewState);
extern void WWDT_CNT_Load(U8_T cnt_data);
extern void WWDT_Int_Config(FunctionalStatus NewState);
/*************************************************************/
#endif /**< apt32f102_wwdt_H */
/******************* (C) COPYRIGHT 2019 APT Chip *****END OF FILE****/

37
Source/includes.h Normal file
View File

@@ -0,0 +1,37 @@
#ifndef _INCLUDES_H_
#define _INCLUDES_H_
#include "apt32f102.h"
#include "apt32f102_bt.h"
#include "apt32f102_gpio.h"
#include "apt32f102_ifc.h"
#include "apt32f102_lpt.h"
#include "apt32f102_syscon.h"
#include "apt32f102_uart.h"
#include "apt32f102_wwdt.h"
#include "apt32f102_types_local.h"
#include "apt32f102_clkcalib.h"
/*应用代码头文件*/
#include "uart.h"
#include "eeprom.h"
#include "Bootload_fun.h"
/*工程名称及软件版本号
此定义在每个工程中必须定义,用于识别当前工程对应的机型
Boot中会通过读取EEPROM中保存的设备信息来判断当前是什么机型
如果EEPROM 中没有保存设备信息那么当前就是Boot程序设备地址为0x00设备类型为0x00
*/
#define Project_Area 0x01 //工程所处区域为Boot区域 0x01:Boot区域0x02:APP区域
#define Peoject_Name "MD203_Bootload" //工程名称
#define Project_FW_Version 0x05 //工程对应的软件版本号
#define Project_Type 0x00 //工程对应的设备类型 Boot默认设备类型
extern volatile U32_T SysTick_100us;
extern volatile U32_T SysTick_1ms;
#endif

Binary file not shown.

BIN
Source/lib_102TKey_1_15.a Normal file

Binary file not shown.

BIN
Source/lib_102TKey_1_15C.a Normal file

Binary file not shown.

BIN
Source/lib_102TKey_1_15M.a Normal file

Binary file not shown.

BIN
Source/lib_102TKey_1_15MC.a Normal file

Binary file not shown.

Binary file not shown.

21
Source/main.c Normal file
View File

@@ -0,0 +1,21 @@
#include "includes.h"
extern void delay_nms(unsigned int t);
extern void APT32F102_init(void);
int main(void)
{
APT32F102_init(); //102 initial
while(1)
{
SYSCON_IWDCNT_Reload(); //IWDT Clear
UART2_TASK();
BUS485Send_Task();
Boot_TimeOut_Task();
}
}

241
Source/mcu_initial.c Normal file
View File

@@ -0,0 +1,241 @@
#include "includes.h"
/*************************************************************/
//software delay
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void delay_nms(unsigned int t)
{
volatile unsigned int i,j ,k=0;
j = 50* t;
for ( i = 0; i < j; i++ )
{
k++;
SYSCON_IWDCNT_Reload();
}
}
void delay_nus(unsigned int t)
{
volatile unsigned int i,j ,k=0;
j = 1* t;
for ( i = 0; i < j; i++ )
{
k++;
}
}
/*************************************************************/
//GPIO Initial
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void GPIO_CONFIG(void)
{
//GPIO初始化 - 将GPIO设置为输入下拉
GPIO_DeInit();
GPIO_Init(GPIOA0,0,Intput);
GPIO_Init(GPIOA0,1,Intput);
GPIO_Init(GPIOA0,2,Intput);
GPIO_Init(GPIOA0,3,Intput);
GPIO_Init(GPIOA0,4,Intput);
GPIO_Init(GPIOA0,5,Intput);
/* PA6 - SWC ,PA7 - SWD */
GPIO_Init(GPIOA0,8,Intput);
GPIO_Init(GPIOA0,9,Intput);
GPIO_Init(GPIOA0,10,Intput);
GPIO_Init(GPIOA0,11,Intput);
GPIO_Init(GPIOA0,12,Intput);
GPIO_Init(GPIOA0,13,Intput);
GPIO_Init(GPIOA0,14,Intput);
GPIO_Init(GPIOA0,15,Intput);
GPIO_Init(GPIOB0,0,Intput);
GPIO_Init(GPIOB0,1,Intput);
GPIO_Init(GPIOB0,2,Intput);
GPIO_Init(GPIOB0,3,Intput);
// GPIO_Init(GPIOB0,4,Intput); //默认为Boot 烧录串口2
// GPIO_Init(GPIOB0,5,Intput); //默认为Boot 烧录串口2
GPIO_PullLow_Init(GPIOA0,0);
GPIO_PullLow_Init(GPIOA0,1);
GPIO_PullLow_Init(GPIOA0,2);
GPIO_PullLow_Init(GPIOA0,3);
GPIO_PullLow_Init(GPIOA0,4);
GPIO_PullLow_Init(GPIOA0,5);
GPIO_PullLow_Init(GPIOA0,8);
GPIO_PullLow_Init(GPIOA0,9);
GPIO_PullLow_Init(GPIOA0,10);
GPIO_PullLow_Init(GPIOA0,11);
GPIO_PullLow_Init(GPIOA0,12);
GPIO_PullLow_Init(GPIOA0,13);
GPIO_PullLow_Init(GPIOA0,14);
GPIO_PullLow_Init(GPIOA0,15);
GPIO_PullLow_Init(GPIOB0,0);
GPIO_PullLow_Init(GPIOB0,1);
GPIO_PullLow_Init(GPIOB0,2);
GPIO_PullLow_Init(GPIOB0,3);
// GPIO_PullLow_Init(GPIOB0,4); //默认为Boot 烧录串口2
// GPIO_PullLow_Init(GPIOB0,5); //默认为Boot 烧录串口2
}
/*************************************************************/
//BT Initial
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void BT_CONFIG(void)
{
//PB 保护电流PWM_CURR_LMT
// BT_DeInit(BT0);
// BT_IO_Init(BT0_PB02);
// BT_Configure(BT0,BTCLK_EN,0,BT_IMMEDIATE,BT_CONTINUOUS,BT_PCLKDIV);//TCLK=PCLK/(0+1)
// BT_ControlSet_Configure(BT0,BT_START_HIGH,BT_IDLE_LOW,BT_SYNC_DIS,BT_SYNCMD_DIS,BT_OSTMDX_ONCE,BT_AREARM_DIS,BT_CNTRLD_EN);
// //BT_ControlSet_Configure(BT0,BT_START_HIGH,BT_IDLE_LOW,BT_SYNC_EN,BT_SYNCMD_DIS,BT_OSTMDX_ONCE,BT_AREARM_DIS,BT_CNTRLD_EN);
// //BT_Trigger_Configure(BT0,BT_TRGSRC_PEND,BT_TRGOE_EN);
// BT_Period_CMP_Write(BT0,50,1);
// BT_Start(BT0);
// BT_ConfigInterrupt_CMD(BT0,ENABLE,BT_PEND);
// BT0_INT_ENABLE();
//100us 定时器初始化
BT_DeInit(BT1);
BT_Configure(BT1,BTCLK_EN,0,BT_IMMEDIATE,BT_CONTINUOUS,BT_PCLKDIV);
BT_ControlSet_Configure(BT1,BT_START_HIGH,BT_IDLE_LOW,BT_SYNC_DIS,BT_SYNCMD_DIS,BT_OSTMDX_ONCE,BT_AREARM_DIS,BT_CNTRLD_EN);
BT_Period_CMP_Write(BT1,4780,1);
BT_Start(BT1);
BT_ConfigInterrupt_CMD(BT1,ENABLE,BT_CMP);
BT1_INT_ENABLE();
}
/*************************************************************/
//UART0 CONFIG
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART0_CONFIG(void)
{
UART0_DeInit(); //clear all UART Register
UART_IO_Init(IO_UART0,0); //use PA0.1->RXD0, PA0.0->TXD0
UARTInit(UART0,416,UART_PAR_NONE); //baudrate=sysclock 48M/416=115200
UARTInitRxTxIntEn(UART0,416,UART_PAR_NONE); //baudrate=sysclock 48M/416=115200,tx rx int enabled
UART0_Int_Enable();
}
/*************************************************************/
//UART1 CONFIG
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART1_CONFIG(void)
{
UART1_DeInit(); //clear all UART Register
UART_IO_Init(IO_UART1,0); //use PA0.13->RXD1, PB0.0->TXD1
UARTInit(UART1,416,UART_PAR_NONE); //baudrate=sysclock 48M/416=115200
UARTInitRxTxIntEn(UART1,416,UART_PAR_NONE); //baudrate=sysclock 48M/416=115200 tx rx int enabled
UART1_Int_Enable();
}
/*************************************************************/
//UART2 CONFIG
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART2_CONFIG(void)
{
UART2_DeInit(); //clear all UART Register
UART_IO_Init(IO_UART2,2); //use PA0.7->RXD2, PA0.6->TXD2
UARTInit(UART2,416,UART_PAR_NONE); //baudrate=sysclock 48M/416=115200
//UARTInitRxTxIntEn(UART2,416,UART_PAR_NONE); //baudrate=sysclock 48M/416=115200 tx rx int enabled
//UART2_Int_Enable();
}
/*************************************************************/
//syscon Functions
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void SYSCON_CONFIG(void)
{
//------SYSTEM CLK AND PCLK FUNTION---------------------------/
SYSCON_RST_VALUE(); //SYSCON all register clr
SYSCON_General_CMD(ENABLE,ENDIS_ISOSC); //SYSCON enable/disable clock source
//EMOSC_OSTR_Config(0XAD,0X1f,EM_LFSEL_EN,EM_FLEN_EN,EM_FLSEL_10ns); //EM_CNT=0X3FF,0xAD(36K),EM_GM=0,Low F modedisable,EM filter disable,if enable,cont set 5ns
//SYSCON_General_CMD(ENABLE,ENDIS_EMOSC);
SYSCON_HFOSC_SELECTE(HFOSC_SELECTE_48M); //HFOSC selected 48MHz
SystemCLK_HCLKDIV_PCLKDIV_Config(SYSCLK_HFOSC,HCLK_DIV_1,PCLK_DIV_1,HFOSC_48M);//system clock set, Hclk div ,Pclk div set system clock=SystemCLK/Hclk div/Pclk div
//------------ WDT FUNTION --------------------------------/
SYSCON_IWDCNT_Config(IWDT_TIME_125MS,IWDT_INTW_DIV_7); //WDT TIME 1s,WDT alarm interrupt time=1s-1s*1/8=0.875S
SYSCON_WDT_CMD(ENABLE); //enable/disable WDT
SYSCON_IWDCNT_Reload(); //reload WDT
IWDT_Int_Enable();
//------------ WWDT FUNTION --------------------------------/
// WWDT_CNT_Load(0xFF);
// WWDT_CONFIG(PCLK_4096_DIV0,0xFF,WWDT_DBGDIS);
// WWDT_Int_Config(ENABLE);
//WWDT_CMD(ENABLE); //enable wwdt
//------------ CLO Output --------------------------------/
//SYSCON_CLO_CONFIG(CLO_PA08); //CLO output setting
//SYSCON_CLO_SRC_SET(CLO_HFCLK,CLO_DIV16); //CLO output clock and div
//------------ LVD FUNTION --------------------------------/
SYSCON_LVD_Config(ENABLE_LVDEN,INTDET_LVL_3_9V,RSTDET_LVL_1_9V,ENABLE_LVD_INT,INTDET_POL_fall); //LVD LVR Enable/Disable
LVD_Int_Enable();
//------------ SYSCON Vector --------------------------------/
SYSCON_Int_Enable(); //SYSCON VECTOR
//SYSCON_WakeUp_Enable(); //Enable WDT wakeup INT
//------------------------------------------------------------/
//OSC CLOCK Calibration
//------------------------------------------------------------/
std_clk_calib(CLK_HFOSC_48M); //Select the same clock source as the system
}
/*********************************************************************************/
/*********************************************************************************/
//APT32F102_init /
//EntryParameter:NONE /
//ReturnValue:NONE /
/*********************************************************************************/
void APT32F102_init(void)
{
//------------------------------------------------------------/
//Peripheral clock enable and disable
//EntryParameter:NONE
//ReturnValue:NONE
//------------------------------------------------------------/
SYSCON->PCER0=0xFFFFFFF; //PCLK Enable
SYSCON->PCER1=0xFFFFFFF; //PCLK Enable
while(!(SYSCON->PCSR0&0x1)); //Wait PCLK enabled
//------------------------------------------------------------/
//ISOSC/IMOSC/EMOSC/SYSCLK/IWDT/LVD/EM_CMFAIL/EM_CMRCV/CMD_ERR OSC stable interrupt
//EntryParameter:NONE
//ReturnValue:NONE
//------------------------------------------------------------/
SYSCON_CONFIG(); //syscon initial
CK_CPU_EnAllNormalIrq(); //enable all IRQ
SYSCON_INT_Priority(); //initial all Priority=0xC0
//设置中断优先级 0最高3最低
Set_INT_Priority(UART2_IRQ,1); //串口优先级最高
GPIO_CONFIG();
BT_CONFIG(); //BT initial
// UARTx_Init(UART_1,Boot_Comm_UpgradeProcess);
UARTx_Init(UART_2,Boot_Comm_UpgradeProcess); //通讯串口
Boot_Function_Init();
}
/******************* (C) COPYRIGHT 2019 APT Chip *****END OF FILE****/

858
Source/mcu_interrupt.c Normal file
View File

@@ -0,0 +1,858 @@
#include "includes.h"
/****************************************************
//define
*****************************************************/
volatile int R_CMPA_BUF,R_CMPB_BUF;
//volatile int R_SIOTX_count,R_SIORX_count;
volatile int R_SIORX_buf[10];
/****************************************************
//extern
*****************************************************/
extern void delay_nms(unsigned int t);
/*************************************************************/
//CORET Interrupt
//If you use a touch library file that does not contain coret
//you need to open this interrupt entry
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
//void CORETHandler(void)
//{
// // ISR content ...
//}
/*************************************************************/
//SYSCON Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void SYSCONIntHandler(void)
{
// ISR content ...
nop;
if((SYSCON->MISR&ISOSC_ST)==ISOSC_ST) //ISOSC stable interrupt
{
SYSCON->ICR = ISOSC_ST;
}
else if((SYSCON->MISR&IMOSC_ST)==IMOSC_ST) //IMOSC stable interrupt
{
SYSCON->ICR = IMOSC_ST;
}
else if((SYSCON->MISR&EMOSC_ST)==EMOSC_ST) //EMOSC stable interrupt
{
SYSCON->ICR = EMOSC_ST;
}
else if((SYSCON->MISR&HFOSC_ST)==HFOSC_ST) //HFOSC stable interrupt
{
SYSCON->ICR = HFOSC_ST;
}
else if((SYSCON->MISR&SYSCLK_ST)==SYSCLK_ST) //SYSCLK change end & stable interrupt
{
SYSCON->ICR = SYSCLK_ST;
}
else if((SYSCON->MISR&IWDT_INT_ST)==IWDT_INT_ST) //IWDT alarm window interrupt
{
SYSCON->ICR = IWDT_INT_ST;
// SYSCON->IWDCNT=0x5aul<<24;
}
else if((SYSCON->MISR&WKI_INT_ST)==WKI_INT_ST)
{
SYSCON->ICR = WKI_INT_ST;
}
else if((SYSCON->MISR&RAMERRINT_ST)==RAMERRINT_ST) //SRAM check fail interrupt
{
SYSCON->ICR = RAMERRINT_ST;
}
else if((SYSCON->MISR&LVD_INT_ST)==LVD_INT_ST) //LVD threshold interrupt
{
nop;
SYSCON->ICR = LVD_INT_ST;
}
else if((SYSCON->MISR&HWD_ERR_ST)==HWD_ERR_ST) //Hardware Divider divisor = 0 interrupt
{
SYSCON->ICR = HWD_ERR_ST;
}
else if((SYSCON->MISR&EFL_ERR_ST)==EFL_ERR_ST) //Flash check fail interrupt
{
SYSCON->ICR = EFL_ERR_ST;
}
else if((SYSCON->MISR&OPTERR_INT)==OPTERR_INT) //Option load fail interrupt
{
SYSCON->ICR = OPTERR_INT;
}
else if((SYSCON->MISR&EM_CMLST_ST)==EM_CMLST_ST) //EMOSC clock monitor fail interrupt
{
SYSCON->ICR = EM_CMLST_ST;
}
else if((SYSCON->MISR&EM_EVTRG0_ST)==EM_EVTRG0_ST) //Event Trigger Channel 0 Interrupt
{
SYSCON->ICR = EM_EVTRG0_ST;
}
else if((SYSCON->MISR&EM_EVTRG1_ST)==EM_EVTRG1_ST) //Event Trigger Channel 1 Interrupt
{
SYSCON->ICR = EM_EVTRG1_ST;
}
else if((SYSCON->MISR&EM_EVTRG2_ST)==EM_EVTRG2_ST) //Event Trigger Channel 2 Interrupt
{
SYSCON->ICR = EM_EVTRG2_ST;
}
else if((SYSCON->MISR&EM_EVTRG3_ST)==EM_EVTRG3_ST) //Event Trigger Channel 3 Interrupt
{
SYSCON->ICR = EM_EVTRG3_ST;
}
else if((SYSCON->MISR&CMD_ERR_ST)==CMD_ERR_ST) //Command error interrupt
{
SYSCON->ICR = CMD_ERR_ST;
}
}
/*************************************************************/
//IFC Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void IFCIntHandler(void)
{
// ISR content ...
if(IFC->MISR&ERS_END_INT)
{
IFC->ICR=ERS_END_INT;
}
else if(IFC->MISR&RGM_END_INT)
{
IFC->ICR=RGM_END_INT;
}
else if(IFC->MISR&PEP_END_INT)
{
IFC->ICR=PEP_END_INT;
}
else if(IFC->MISR&PROT_ERR_INT)
{
IFC->ICR=PROT_ERR_INT;
}
else if(IFC->MISR&UDEF_ERR_INT)
{
IFC->ICR=UDEF_ERR_INT;
}
else if(IFC->MISR&ADDR_ERR_INT)
{
IFC->ICR=ADDR_ERR_INT;
}
else if(IFC->MISR&OVW_ERR_INT)
{
IFC->ICR=OVW_ERR_INT;
}
}
/*************************************************************/
//EPT0 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EPT0IntHandler(void)
{
// ISR content ...
// if((EPT0->MISR&EPT_TRGEV0_INT)==EPT_TRGEV0_INT) //TRGEV0 interrupt
// {
// EPT0->ICR=EPT_TRGEV0_INT;
// }
// else if((EPT0->MISR&EPT_TRGEV1_INT)==EPT_TRGEV1_INT) //TRGEV1 interrupt
// {
// EPT0->ICR=EPT_TRGEV1_INT;
// }
// else if((EPT0->MISR&EPT_TRGEV2_INT)==EPT_TRGEV2_INT) //TRGEV2 interrupt
// {
// EPT0->ICR=EPT_TRGEV2_INT;
// }
// else if((EPT0->MISR&EPT_TRGEV3_INT)==EPT_TRGEV3_INT) //TRGEV3 interrupt
// {
// EPT0->ICR=EPT_TRGEV3_INT;
// }
// else if((EPT0->MISR&EPT_CAP_LD0)==EPT_CAP_LD0) //Capture Load to CMPA interrupt
// {
// EPT0->ICR=EPT_CAP_LD0;
// EXTI_trigger_CMD(DISABLE,EXI_PIN0,_EXIRT);
// EXTI_trigger_CMD(ENABLE,EXI_PIN0,_EXIFT);
// R_CMPA_BUF=EPT0->CMPA; //Low voltage counter
// }
// else if((EPT0->MISR&EPT_CAP_LD1)==EPT_CAP_LD1) //Capture Load to CMPB interrupt
// {
// EPT0->ICR=EPT_CAP_LD1;
// EXTI_trigger_CMD(ENABLE,EXI_PIN0,_EXIRT);
// EXTI_trigger_CMD(DISABLE,EXI_PIN0,_EXIFT);
// R_CMPB_BUF=EPT0->CMPB; //Duty counter
// }
// else if((EPT0->MISR&EPT_CAP_LD2)==EPT_CAP_LD2) //Capture Load to CMPC interrupt
// {
// EPT0->ICR=EPT_CAP_LD2;
// }
// else if((EPT0->MISR&EPT_CAP_LD3)==EPT_CAP_LD3) //Capture Load to CMPD interrupt
// {
// EPT0->ICR=EPT_CAP_LD3;
// }
// else if((EPT0->MISR&EPT_CAU)==EPT_CAU) //Up-Counting phase CNT = CMPA interrupt
// {
// EPT0->ICR=EPT_CAU;
// }
// else if((EPT0->MISR&EPT_CAD)==EPT_CAD) //Down-Counting phase CNT = CMPA interrupt
// {
// EPT0->ICR=EPT_CAD;
// }
// else if((EPT0->MISR&EPT_CBU)==EPT_CBU) //Up-Counting phase CNT = CMPB interrupt
// {
// EPT0->ICR=EPT_CBU;
// }
// else if((EPT0->MISR&EPT_CBD)==EPT_CBD) //Down-Counting phase CNT = CMPB interrupt
// {
// EPT0->ICR=EPT_CBD;
// }
// else if((EPT0->MISR&EPT_CCU)==EPT_CCU) //Up-Counting phase CNT = CMPC interrupt
// {
// EPT0->ICR=EPT_CCU;
// }
// else if((EPT0->MISR&EPT_CCD)==EPT_CCD) //Down-Counting phase CNT = CMPC interrupt
// {
// EPT0->ICR=EPT_CCD;
// }
// else if((EPT0->MISR&EPT_CDU)==EPT_CDU) //Up-Counting phase CNT = CMPD interrupt
// {
// EPT0->ICR=EPT_CDU;
// }
// else if((EPT0->MISR&EPT_CDD)==EPT_CDD) //Down-Counting phase CNT = CMPD interrupt
// {
// EPT0->ICR=EPT_CDD;
// }
// else if((EPT0->MISR&EPT_PEND)==EPT_PEND) //End of cycle interrupt
// {
// EPT0->ICR=EPT_PEND;
// //EPT_PRDR_CMPA_CMPB_CMPC_CMPD_Config(50,0,50,0,0);
// EPT_Stop();
// }
// //Emergency interruption
// if((EPT0->EMMISR&EPT_EP0_EMINT)==EPT_EP0_EMINT) //interrupt flag of EP0 event
// {
// EPT0->EMICR=EPT_EP0_EMINT;
// }
// else if((EPT0->EMMISR&EPT_EP1_EMINT)==EPT_EP1_EMINT) //interrupt flag of EP1 event
// {
// EPT0->EMICR=EPT_EP1_EMINT;
// }
// else if((EPT0->EMMISR&EPT_EP2_EMINT)==EPT_EP2_EMINT) //interrupt flag of EP2 event
// {
// EPT0->EMICR=EPT_EP2_EMINT;
// }
// else if((EPT0->EMMISR&EPT_EP3_EMINT)==EPT_EP3_EMINT) //interrupt flag of EP3 event
// {
// EPT0->EMICR=EPT_EP3_EMINT;
// }
// else if((EPT0->EMMISR&EPT_EP4_EMINT)==EPT_EP4_EMINT) //interrupt flag of EP4 event
// {
// EPT0->EMICR=EPT_EP4_EMINT;
// }
// else if((EPT0->EMMISR&EPT_EP5_EMINT)==EPT_EP5_EMINT) //interrupt flag of EP5 event
// {
// EPT0->EMICR=EPT_EP5_EMINT;
// }
// else if((EPT0->EMMISR&EPT_EP6_EMINT)==EPT_EP6_EMINT) //interrupt flag of EP6 event
// {
// EPT0->EMICR=EPT_EP6_EMINT;
// }
// else if((EPT0->EMMISR&EPT_EP7_EMINT)==EPT_EP7_EMINT) //interrupt flag of EP7 event
// {
// EPT0->EMICR=EPT_EP7_EMINT;
// }
// else if((EPT0->EMMISR&EPT_CPU_FAULT_EMINT)==EPT_CPU_FAULT_EMINT) //interrupt flag of CPU_FAULT event
// {
// EPT0->EMICR=EPT_CPU_FAULT_EMINT;
// }
// else if((EPT0->EMMISR&EPT_MEM_FAULT_EMINT)==EPT_MEM_FAULT_EMINT) //interrupt flag of MEM_FAULT event
// {
// EPT0->EMICR=EPT_MEM_FAULT_EMINT;
// }
// else if((EPT0->EMMISR&EPT_EOM_FAULT_EMINT)==EPT_EOM_FAULT_EMINT) //interrupt flag of EOM_FAULT event
// {
// EPT0->EMICR=EPT_EOM_FAULT_EMINT;
// }
}
/*************************************************************/
//WWDT Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void WWDTHandler(void)
{
WWDT->ICR=0X01;
WWDT_CNT_Load(0xFF);
if((WWDT->MISR&WWDT_EVI)==WWDT_EVI) //WWDT EVI interrupt
{
WWDT->ICR = WWDT_EVI;
}
}
/*************************************************************/
//GPT0 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void GPT0IntHandler(void)
{
// ISR content ...
// if((GPT0->MISR&GPT_INT_TRGEV0)==GPT_INT_TRGEV0) //TRGEV0 interrupt
// {
// GPT0->ICR = GPT_INT_TRGEV0;
// }
// else if((GPT0->MISR&GPT_INT_TRGEV1)==GPT_INT_TRGEV1) //TRGEV1 interrupt
// {
// GPT0->ICR = GPT_INT_TRGEV1;
// }
// else if((GPT0->MISR&GPT_INT_CAPLD0)==GPT_INT_CAPLD0) //Capture Load to CMPA interrupt
// {
// GPT0->ICR = GPT_INT_CAPLD0;
// }
// else if((GPT0->MISR&GPT_INT_CAPLD1)==GPT_INT_CAPLD1) //Capture Load to CMPB interrupt
// {
// GPT0->ICR = GPT_INT_CAPLD1;
// }
// else if((GPT0->MISR&GPT_INT_CAU)==GPT_INT_CAU) //Up-Counting phase CNT = CMPA Interrupt
// {
// GPT0->ICR = GPT_INT_CAU;
// }
// else if((GPT0->MISR&GPT_INT_CAD)==GPT_INT_CAD) //Down-Counting phase CNT = CMPA Interrupt
// {
// GPT0->ICR = GPT_INT_CAD;
// }
// else if((GPT0->MISR&GPT_INT_CBU)==GPT_INT_CBU) //Up-Counting phase CNT = CMPB Interrupt
// {
// GPT0->ICR = GPT_INT_CBU;
// }
// else if((GPT0->MISR&GPT_INT_CBD)==GPT_INT_CBD) //Down-Counting phase CNT = CMPB Interrupt
// {
// GPT0->ICR = GPT_INT_CBD;
// }
// else if((GPT0->MISR&GPT_INT_PEND)==GPT_INT_PEND) //End of cycle interrupt
// {
// GPT0->ICR = GPT_INT_PEND;
// }
}
/*************************************************************/
//UART0 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART0IntHandler(void)
{
char inchar = 0;
// ISR content ...
if ((UART0->ISR&UART_RX_INT_S)==UART_RX_INT_S) //RX interrupt
{
UART0->ISR=UART_RX_INT_S;
// inchar = CSP_UART_GET_DATA(UART0);
// UARTTxByte(UART0,inchar);
}
else if( (UART0->ISR&UART_TX_INT_S)==UART_TX_INT_S ) //TX interrupt
{
UART0->ISR=UART_TX_INT_S;
//TxDataFlag = TRUE;
}
else if ((UART0->ISR&UART_RX_IOV_S)==UART_RX_IOV_S) //RX overrun interrupt
{
UART0->ISR=UART_RX_IOV_S;
}
else if ((UART0->ISR&UART_TX_IOV_S)==UART_TX_IOV_S) //TX overrun interrupt
{
UART0->ISR=UART_TX_IOV_S;
}
}
/*************************************************************/
//UART1 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART1IntHandler(void)
{
char inchar = 0;
// ISR content ...
if ((UART1->ISR&UART_RX_INT_S)==UART_RX_INT_S) //RX interrupt
{
UART1->ISR=UART_RX_INT_S;
// inchar = CSP_UART_GET_DATA(UART1);
// UART1_RecvINT_Processing(inchar);
}
else if( (UART1->ISR&UART_TX_INT_S)==UART_TX_INT_S ) //TX interrupt
{
UART1->ISR=UART_TX_INT_S;
// RS485_Comming = 0x01;
//
// if(RS485_Comm_Flag == 0x01){
// RS485_Comm_Start ++;
// }
}
else if ((UART1->ISR&UART_RX_IOV_S)==UART_RX_IOV_S) //RX overrun interrupt
{
UART1->ISR=UART_RX_IOV_S;
}
else if ((UART1->ISR&UART_TX_IOV_S)==UART_TX_IOV_S) //TX overrun interrupt
{
UART1->ISR=UART_TX_IOV_S;
}
else if ((UART1->ISR&UART_TX_DONE_S)==UART_TX_DONE_S)
{
UART1->ISR=UART_TX_DONE_S;
// RS485_Comming = 0x00;
// if(RS485_Comm_Flag == 0x01){
// RS485_Comm_End ++;
// }
}
}
/*************************************************************/
//UART2 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void UART2IntHandler(void)
{
char inchar = 0;
// ISR content ...
if ((UART2->ISR&UART_RX_INT_S)==UART_RX_INT_S) //RX interrupt
{
UART2->ISR=UART_RX_INT_S;
inchar = CSP_UART_GET_DATA(UART2);
UART2_RecvINT_Processing(inchar);
}
else if( (UART2->ISR&UART_TX_INT_S)==UART_TX_INT_S ) //TX interrupt
{
UART2->ISR=UART_TX_INT_S;
RS485_Comming = 0x01;
if(RS485_Comm_Flag == 0x01){
RS485_Comm_Start ++;
}
}
else if ((UART2->ISR&UART_RX_IOV_S)==UART_RX_IOV_S) //RX overrun interrupt
{
UART2->ISR=UART_RX_IOV_S;
}
else if ((UART2->ISR&UART_TX_IOV_S)==UART_TX_IOV_S) //TX overrun interrupt
{
UART2->ISR=UART_TX_IOV_S;
}
else if ((UART2->ISR&UART_TX_DONE_S)==UART_TX_DONE_S)
{
UART2->ISR=UART_TX_DONE_S;
RS485_Comming = 0x00;
if(RS485_Comm_Flag == 0x01){
RS485_Comm_End ++;
}
}
}
/*************************************************************/
//I2C Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void I2CIntHandler(void)
{
// ISR content ...
//I2C_Slave_Receive(); //I2C slave receive function in interruption
}
/*************************************************************/
//SIO Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void SIO0IntHandler(void)
{
// ISR content ...
//The sequence is more than 16bit to send the program
//1.disable interrupt in main loop 2.set the highest priority in the interrupt
/*CK801->IPR[0]=0X40404040;
CK801->IPR[1]=0X40404040;
CK801->IPR[2]=0X40404040;
CK801->IPR[3]=0X40404040;
CK801->IPR[4]=0X40404040;
CK801->IPR[5]=0X40404000;
CK801->IPR[6]=0X40404040;
CK801->IPR[7]=0X40404040;*/
//TXBUFEMPT The sequence length exceeds 15bit needs to be updated into this interrupt
if(SIO0->MISR&0X04)
{
SIO0->ICR=0X04;
}
if(SIO0->MISR&0X01) //TXDNE 发送完成
{
SIO0->ICR=0X01;
//SIO0->TXBUF=0x00; //0:D0,1:D1,2:DL,3:DH;
//INTC_ICER_WRITE(SIO_INT);
}
//The sequence is less than 16bit to send the program
/*if(SIO0->MISR&0X01) //TXDNE
{
SIO0->ICR=0X01;
delay_nms(10);
SIO0->TXBUF=(0x03<<30)|(0x02<<28)|(0x03<<26)|(0x02<<24)|(0x03<<22)|(0x02<<20)|(0x03<<18)|(0x02<<16)|
(0x01<<14)|(0x00<<12)|(0x01<<10)|(0x00<<8)|(0x01<<6)|(0x00<<4)|(0x01<<2)|(0x0<<0); //0:D0,1:D1,2:DL,3:DH;
}*/
if(SIO0->MISR&0X02) //RXDNE
{
SIO0->ICR=0X02;
// if(R_SIORX_count>=1)
// {
// R_SIORX_buf[R_SIORX_count]=SIO0->RXBUF&0xff000000; //8bit
// nop;
// R_SIORX_count=0;
// }
}
else if(SIO0->MISR&0X08) //RXBUFFULL
{
SIO0->ICR=0X08;
// if(R_SIORX_count<1)
// {
// R_SIORX_buf[R_SIORX_count]=SIO0->RXBUF; //32bit
// R_SIORX_count++;
// }
}
else if(SIO0->MISR&0X010) //BREAK
{
SIO0->ICR=0X10;
}
else if(SIO0->MISR&0X020) //TIMEOUT
{
SIO0->ICR=0X20;
}
}
/*************************************************************/
//EXT0/16 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI0IntHandler(void)
{
// ISR content ...
if ((SYSCON->EXIRS&EXI_PIN0)==EXI_PIN0) //EXT0 Interrupt
{
SYSCON->EXICR = EXI_PIN0;
}
else if ((SYSCON->EXIRS&EXI_PIN16)==EXI_PIN16) //EXT16 Interrupt
{
SYSCON->EXICR = EXI_PIN16;
}
}
/*************************************************************/
//EXT1/17 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI1IntHandler(void)
{
// ISR content ...
if ((SYSCON->EXIRS&EXI_PIN1)==EXI_PIN1) //EXT1 Interrupt
{
SYSCON->EXICR = EXI_PIN1;
}
else if ((SYSCON->EXIRS&EXI_PIN17)==EXI_PIN17) //EXT17 Interrupt
{
SYSCON->EXICR = EXI_PIN17;
}
}
/*************************************************************/
//EXI2~3 18~19Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI2to3IntHandler(void)
{
// ISR content ...
if ((SYSCON->EXIRS&EXI_PIN2)==EXI_PIN2) //EXT2 Interrupt
{
SYSCON->EXICR = EXI_PIN2;
}
else if ((SYSCON->EXIRS&EXI_PIN3)==EXI_PIN3) //EXT3 Interrupt
{
SYSCON->EXICR = EXI_PIN3;
}
else if ((SYSCON->EXIRS&EXI_PIN18)==EXI_PIN18) //EXT18 Interrupt
{
SYSCON->EXICR = EXI_PIN18;
}
else if ((SYSCON->EXIRS&EXI_PIN19)==EXI_PIN19) //EXT19 Interrupt
{
SYSCON->EXICR = EXI_PIN19;
}
}
/*************************************************************/
//EXI4~9 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI4to9IntHandler(void)
{
// ISR content ...
if ((SYSCON->EXIRS&EXI_PIN4)==EXI_PIN4) //EXT4 Interrupt
{
SYSCON->EXICR = EXI_PIN4;
}
else if ((SYSCON->EXIRS&EXI_PIN5)==EXI_PIN5) //EXT5 Interrupt
{
SYSCON->EXICR = EXI_PIN5;
BusBusy_Task();
}
else if ((SYSCON->EXIRS&EXI_PIN6)==EXI_PIN6) //EXT6 Interrupt
{
SYSCON->EXICR = EXI_PIN6;
}
else if ((SYSCON->EXIRS&EXI_PIN7)==EXI_PIN7) //EXT7 Interrupt
{
SYSCON->EXICR = EXI_PIN7;
}
else if ((SYSCON->EXIRS&EXI_PIN8)==EXI_PIN8) //EXT8 Interrupt
{
SYSCON->EXICR = EXI_PIN8;
}
else if ((SYSCON->EXIRS&EXI_PIN9)==EXI_PIN9) //EXT9 Interrupt
{
SYSCON->EXICR = EXI_PIN9;
}
}
/*************************************************************/
//EXI4 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void EXI10to15IntHandler(void)
{
// ISR content ...
if ((SYSCON->EXIRS&EXI_PIN10)==EXI_PIN10) //EXT10 Interrupt
{
SYSCON->EXICR = EXI_PIN10;
}
else if ((SYSCON->EXIRS&EXI_PIN11)==EXI_PIN11) //EXT11 Interrupt
{
SYSCON->EXICR = EXI_PIN11;
}
else if ((SYSCON->EXIRS&EXI_PIN12)==EXI_PIN12) //EXT12 Interrupt
{
SYSCON->EXICR = EXI_PIN12;
}
else if ((SYSCON->EXIRS&EXI_PIN13)==EXI_PIN13) //EXT13 Interrupt
{
SYSCON->EXICR = EXI_PIN13;
}
else if ((SYSCON->EXIRS&EXI_PIN14)==EXI_PIN14) //EXT14 Interrupt
{
SYSCON->EXICR = EXI_PIN14;
}
else if ((SYSCON->EXIRS&EXI_PIN15)==EXI_PIN15) //EXT15 Interrupt
{
SYSCON->EXICR = EXI_PIN15;
}
}
/*************************************************************/
//CONTA Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void CNTAIntHandler(void)
{
// ISR content ...
}
/*************************************************************/
//LPT Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void LPTIntHandler(void)
{
// ISR content ...
// if((LPT->MISR&LPT_TRGEV0)==LPT_TRGEV0) //TRGEV0 interrupt
// {
// LPT->ICR = LPT_TRGEV0;
// }
// else if((LPT->MISR&LPT_MATCH)==LPT_MATCH) //MATCH interrupt
// {
// LPT->ICR = LPT_MATCH;
// }
// else if((LPT->MISR&LPT_PEND)==LPT_PEND) //PEND interrupt
// {
// LPT->ICR = LPT_PEND;
// }
}
/*************************************************************/
//BT0 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
U8_T BT_TEMP_State = 1;
void BT0IntHandler(void)
{
// ISR content ...
if((BT0->MISR&BT_PEND)==BT_PEND) //BT0 PEND interrupt
{
BT0->ICR = BT_PEND;
//BT_Stop_Low(BT0);
BT0->CR =BT0->CR & ~(0x01<<6);
BT0->RSSR &=0X0;
}
else if((BT0->MISR&BT_CMP)==BT_CMP) //BT0 CMP Match interrupt
{
BT0->ICR = BT_CMP;
}
else if((BT0->MISR&BT_OVF)==BT_OVF) //BT0 OVF interrupt
{
BT0->ICR = BT_OVF;
}
else if((BT0->MISR&BT_EVTRG)==BT_EVTRG) //BT0 Event trigger interrupt
{
BT0->ICR = BT_EVTRG;
}
}
volatile U32_T SysTick_100us = 0;
volatile U32_T SysTick_1ms = 0;
/*************************************************************/
//BT1 Interrupt
//EntryParameter:NONE
//ReturnValue:NONE
/*************************************************************/
void BT1IntHandler(void)
{
static U8_T NUM = 0;
// ISR content ...
if((BT1->MISR&BT_PEND)==BT_PEND) //BT1 PEND interrupt
{
BT1->ICR = BT_PEND;
}
else if((BT1->MISR&BT_CMP)==BT_CMP) //BT1 CMP Match interrupt
{
BT1->ICR = BT_CMP;
NUM++;
SysTick_100us++;
if(NUM >= 10){
NUM = 0;
SysTick_1ms++;
BusIdle_Task();
}
}
else if((BT1->MISR&BT_OVF)==BT_OVF) //BT1 OVF interrupt
{
BT1->ICR = BT_OVF;
}
else if((BT1->MISR&BT_EVTRG)==BT_EVTRG) //BT1 Event trigger interrupt
{
BT1->ICR = BT_EVTRG;
}
}
/*************************************************************/
/*************************************************************/
/*************************************************************/
//void TKEYIntHandler(void)
//{
// // ISR content ...
//
//}
void PriviledgeVioHandler(void)
{
// ISR content ...
}
void SystemDesPtr(void)
{
// ISR content ...
}
void MisalignedHandler(void)
{
// ISR content ...
}
void IllegalInstrHandler(void)
{
// ISR content ...
}
void AccessErrHandler(void)
{
// ISR content ...
}
void BreakPointHandler(void)
{
// ISR content ...
}
void UnrecExecpHandler(void)
{
// ISR content ...
}
void Trap0Handler(void)
{
// ISR content ...
}
void Trap1Handler(void)
{
// ISR content ...
}
void Trap2Handler(void)
{
// ISR content ...
}
void Trap3Handler(void)
{
// ISR content ...
}
void PendTrapHandler(void)
{
// ISR content ...
}
/******************* (C) COPYRIGHT 2020 APT Chip *****END OF FILE****/