Răsfoiți Sursa

Merge pull request #5054 from yanmowudi/master

修复RTC问题,增加GCC工具链
guo 3 ani în urmă
părinte
comite
ef71de34f7
52 a modificat fișierele cu 7432 adăugiri și 7727 ștergeri
  1. 119 49
      bsp/swm320/.config
  2. 3 3
      bsp/swm320/README.md
  3. 29 32
      bsp/swm320/applications/main.c
  4. 2 2
      bsp/swm320/drivers/Kconfig
  5. 36 0
      bsp/swm320/drivers/board.c
  6. 4 8
      bsp/swm320/drivers/drv_crypto.c
  7. 1 0
      bsp/swm320/drivers/drv_gpio.c
  8. 1 1
      bsp/swm320/drivers/drv_log.h
  9. 44 68
      bsp/swm320/drivers/drv_rtc.c
  10. 1 1
      bsp/swm320/drivers/drv_sdio.c
  11. 6 6
      bsp/swm320/drivers/drv_spi.c
  12. 111 45
      bsp/swm320/drivers/linker_scripts/link.lds
  13. 17 18
      bsp/swm320/libraries/CMSIS/CoreSupport/arm_common_tables.h
  14. 31 31
      bsp/swm320/libraries/CMSIS/CoreSupport/arm_const_structs.h
  15. 530 555
      bsp/swm320/libraries/CMSIS/CoreSupport/arm_math.h
  16. 361 380
      bsp/swm320/libraries/CMSIS/CoreSupport/core_cm0.h
  17. 373 394
      bsp/swm320/libraries/CMSIS/CoreSupport/core_cm0plus.h
  18. 762 778
      bsp/swm320/libraries/CMSIS/CoreSupport/core_cm3.h
  19. 869 886
      bsp/swm320/libraries/CMSIS/CoreSupport/core_cm4.h
  20. 1001 1018
      bsp/swm320/libraries/CMSIS/CoreSupport/core_cm7.h
  21. 163 165
      bsp/swm320/libraries/CMSIS/CoreSupport/core_cmFunc.h
  22. 200 210
      bsp/swm320/libraries/CMSIS/CoreSupport/core_cmInstr.h
  23. 514 381
      bsp/swm320/libraries/CMSIS/CoreSupport/core_cmSimd.h
  24. 51 502
      bsp/swm320/libraries/CMSIS/DeviceSupport/SWM320.h
  25. 62 62
      bsp/swm320/libraries/CMSIS/DeviceSupport/startup/arm/startup_SWM320.s
  26. 406 242
      bsp/swm320/libraries/CMSIS/DeviceSupport/startup/gcc/startup_SWM320.s
  27. 46 46
      bsp/swm320/libraries/CMSIS/DeviceSupport/system_SWM320.c
  28. 131 131
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_adc.c
  29. 196 196
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_can.c
  30. 17 17
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_crc.c
  31. 8 8
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_crc.h
  32. 37 37
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_dma.c
  33. 42 42
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_exti.c
  34. 21 21
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_flash.c
  35. 81 81
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_gpio.c
  36. 44 44
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_i2c.c
  37. 34 34
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_lcd.c
  38. 37 37
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_norflash.c
  39. 2 2
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_norflash.h
  40. 16 16
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_port.c
  41. 95 95
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_pwm.c
  42. 126 126
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_rtc.c
  43. 57 57
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdio.c
  44. 18 18
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdram.c
  45. 175 175
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_spi.c
  46. 12 12
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sram.c
  47. 68 68
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_timr.c
  48. 168 168
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_uart.c
  49. 45 43
      bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_wdt.c
  50. 142 262
      bsp/swm320/project.uvoptx
  51. 94 144
      bsp/swm320/project.uvprojx
  52. 23 10
      bsp/swm320/rtconfig.h

+ 119 - 49
bsp/swm320/.config

@@ -21,6 +21,13 @@ CONFIG_RT_USING_IDLE_HOOK=y
 CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
 CONFIG_RT_IDLE_HOOK_LIST_SIZE=4
 CONFIG_IDLE_THREAD_STACK_SIZE=256
 CONFIG_IDLE_THREAD_STACK_SIZE=256
 # CONFIG_RT_USING_TIMER_SOFT is not set
 # CONFIG_RT_USING_TIMER_SOFT is not set
+
+#
+# kservice optimization
+#
+# CONFIG_RT_KSERVICE_USING_STDLIB is not set
+# CONFIG_RT_KSERVICE_USING_TINY_SIZE is not set
+# CONFIG_RT_USING_ASM_MEMCPY is not set
 CONFIG_RT_DEBUG=y
 CONFIG_RT_DEBUG=y
 CONFIG_RT_DEBUG_COLOR=y
 CONFIG_RT_DEBUG_COLOR=y
 # CONFIG_RT_DEBUG_INIT_CONFIG is not set
 # CONFIG_RT_DEBUG_INIT_CONFIG is not set
@@ -54,6 +61,7 @@ CONFIG_RT_USING_MEMHEAP=y
 # CONFIG_RT_USING_SLAB is not set
 # CONFIG_RT_USING_SLAB is not set
 CONFIG_RT_USING_MEMHEAP_AS_HEAP=y
 CONFIG_RT_USING_MEMHEAP_AS_HEAP=y
 # CONFIG_RT_USING_USERHEAP is not set
 # CONFIG_RT_USING_USERHEAP is not set
+# CONFIG_RT_USING_MEMTRACE is not set
 CONFIG_RT_USING_HEAP=y
 CONFIG_RT_USING_HEAP=y
 
 
 #
 #
@@ -64,8 +72,9 @@ CONFIG_RT_USING_DEVICE=y
 # CONFIG_RT_USING_INTERRUPT_INFO is not set
 # CONFIG_RT_USING_INTERRUPT_INFO is not set
 CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_USING_CONSOLE=y
 CONFIG_RT_CONSOLEBUF_SIZE=128
 CONFIG_RT_CONSOLEBUF_SIZE=128
-CONFIG_RT_CONSOLE_DEVICE_NAME="uart0"
-CONFIG_RT_VER_NUM=0x40003
+CONFIG_RT_CONSOLE_DEVICE_NAME="uart1"
+# CONFIG_RT_PRINTF_LONGLONG is not set
+CONFIG_RT_VER_NUM=0x40004
 CONFIG_ARCH_ARM=y
 CONFIG_ARCH_ARM=y
 CONFIG_RT_USING_CPU_FFS=y
 CONFIG_RT_USING_CPU_FFS=y
 CONFIG_ARCH_ARM_CORTEX_M=y
 CONFIG_ARCH_ARM_CORTEX_M=y
@@ -89,19 +98,19 @@ CONFIG_RT_MAIN_THREAD_PRIORITY=10
 # Command shell
 # Command shell
 #
 #
 CONFIG_RT_USING_FINSH=y
 CONFIG_RT_USING_FINSH=y
+CONFIG_RT_USING_MSH=y
+CONFIG_FINSH_USING_MSH=y
 CONFIG_FINSH_THREAD_NAME="tshell"
 CONFIG_FINSH_THREAD_NAME="tshell"
+CONFIG_FINSH_THREAD_PRIORITY=20
+CONFIG_FINSH_THREAD_STACK_SIZE=4096
 CONFIG_FINSH_USING_HISTORY=y
 CONFIG_FINSH_USING_HISTORY=y
 CONFIG_FINSH_HISTORY_LINES=5
 CONFIG_FINSH_HISTORY_LINES=5
 CONFIG_FINSH_USING_SYMTAB=y
 CONFIG_FINSH_USING_SYMTAB=y
+CONFIG_FINSH_CMD_SIZE=80
+CONFIG_MSH_USING_BUILT_IN_COMMANDS=y
 CONFIG_FINSH_USING_DESCRIPTION=y
 CONFIG_FINSH_USING_DESCRIPTION=y
 # CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set
 # CONFIG_FINSH_ECHO_DISABLE_DEFAULT is not set
-CONFIG_FINSH_THREAD_PRIORITY=20
-CONFIG_FINSH_THREAD_STACK_SIZE=4096
-CONFIG_FINSH_CMD_SIZE=80
 # CONFIG_FINSH_USING_AUTH is not set
 # CONFIG_FINSH_USING_AUTH is not set
-CONFIG_FINSH_USING_MSH=y
-CONFIG_FINSH_USING_MSH_DEFAULT=y
-# CONFIG_FINSH_USING_MSH_ONLY is not set
 CONFIG_FINSH_ARG_MAX=10
 CONFIG_FINSH_ARG_MAX=10
 
 
 #
 #
@@ -116,6 +125,8 @@ CONFIG_RT_USING_DEVICE_IPC=y
 CONFIG_RT_PIPE_BUFSZ=512
 CONFIG_RT_PIPE_BUFSZ=512
 # CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set
 # CONFIG_RT_USING_SYSTEM_WORKQUEUE is not set
 CONFIG_RT_USING_SERIAL=y
 CONFIG_RT_USING_SERIAL=y
+CONFIG_RT_USING_SERIAL_V1=y
+# CONFIG_RT_USING_SERIAL_V2 is not set
 # CONFIG_RT_SERIAL_USING_DMA is not set
 # CONFIG_RT_SERIAL_USING_DMA is not set
 CONFIG_RT_SERIAL_RB_BUFSZ=64
 CONFIG_RT_SERIAL_RB_BUFSZ=64
 # CONFIG_RT_USING_CAN is not set
 # CONFIG_RT_USING_CAN is not set
@@ -154,6 +165,7 @@ CONFIG_RT_USING_PIN=y
 CONFIG_RT_USING_LIBC=y
 CONFIG_RT_USING_LIBC=y
 # CONFIG_RT_USING_PTHREADS is not set
 # CONFIG_RT_USING_PTHREADS is not set
 # CONFIG_RT_USING_MODULE is not set
 # CONFIG_RT_USING_MODULE is not set
+CONFIG_RT_LIBC_DEFAULT_TIMEZONE=8
 
 
 #
 #
 # Network
 # Network
@@ -190,8 +202,14 @@ CONFIG_RT_USING_LIBC=y
 # CONFIG_RT_USING_RYM is not set
 # CONFIG_RT_USING_RYM is not set
 # CONFIG_RT_USING_ULOG is not set
 # CONFIG_RT_USING_ULOG is not set
 # CONFIG_RT_USING_UTEST is not set
 # CONFIG_RT_USING_UTEST is not set
+# CONFIG_RT_USING_RT_LINK is not set
 # CONFIG_RT_USING_LWP is not set
 # CONFIG_RT_USING_LWP is not set
 
 
+#
+# RT-Thread Utestcases
+#
+# CONFIG_RT_USING_UTESTCASES is not set
+
 #
 #
 # RT-Thread online packages
 # RT-Thread online packages
 #
 #
@@ -239,6 +257,7 @@ CONFIG_RT_USING_LIBC=y
 # CONFIG_PKG_USING_AT_DEVICE is not set
 # CONFIG_PKG_USING_AT_DEVICE is not set
 # CONFIG_PKG_USING_ATSRV_SOCKET is not set
 # CONFIG_PKG_USING_ATSRV_SOCKET is not set
 # CONFIG_PKG_USING_WIZNET is not set
 # CONFIG_PKG_USING_WIZNET is not set
+# CONFIG_PKG_USING_ZB_COORDINATOR is not set
 
 
 #
 #
 # IoT Cloud
 # IoT Cloud
@@ -259,8 +278,6 @@ CONFIG_RT_USING_LIBC=y
 # CONFIG_PKG_USING_LIBRWS is not set
 # CONFIG_PKG_USING_LIBRWS is not set
 # CONFIG_PKG_USING_TCPSERVER is not set
 # CONFIG_PKG_USING_TCPSERVER is not set
 # CONFIG_PKG_USING_PROTOBUF_C is not set
 # CONFIG_PKG_USING_PROTOBUF_C is not set
-# CONFIG_PKG_USING_ONNX_PARSER is not set
-# CONFIG_PKG_USING_ONNX_BACKEND is not set
 # CONFIG_PKG_USING_DLT645 is not set
 # CONFIG_PKG_USING_DLT645 is not set
 # CONFIG_PKG_USING_QXWZ is not set
 # CONFIG_PKG_USING_QXWZ is not set
 # CONFIG_PKG_USING_SMTP_CLIENT is not set
 # CONFIG_PKG_USING_SMTP_CLIENT is not set
@@ -275,6 +292,13 @@ CONFIG_RT_USING_LIBC=y
 # CONFIG_PKG_USING_BTSTACK is not set
 # CONFIG_PKG_USING_BTSTACK is not set
 # CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
 # CONFIG_PKG_USING_LORAWAN_ED_STACK is not set
 # CONFIG_PKG_USING_WAYZ_IOTKIT is not set
 # CONFIG_PKG_USING_WAYZ_IOTKIT is not set
+# CONFIG_PKG_USING_MAVLINK is not set
+# CONFIG_PKG_USING_RAPIDJSON is not set
+# CONFIG_PKG_USING_BSAL is not set
+# CONFIG_PKG_USING_AGILE_MODBUS is not set
+# CONFIG_PKG_USING_AGILE_FTP is not set
+# CONFIG_PKG_USING_EMBEDDEDPROTO is not set
+# CONFIG_PKG_USING_RT_LINK_HW is not set
 
 
 #
 #
 # security packages
 # security packages
@@ -291,6 +315,7 @@ CONFIG_RT_USING_LIBC=y
 # CONFIG_PKG_USING_LUA is not set
 # CONFIG_PKG_USING_LUA is not set
 # CONFIG_PKG_USING_JERRYSCRIPT is not set
 # CONFIG_PKG_USING_JERRYSCRIPT is not set
 # CONFIG_PKG_USING_MICROPYTHON is not set
 # CONFIG_PKG_USING_MICROPYTHON is not set
+# CONFIG_PKG_USING_PIKASCRIPT is not set
 
 
 #
 #
 # multimedia packages
 # multimedia packages
@@ -300,9 +325,13 @@ CONFIG_RT_USING_LIBC=y
 # CONFIG_PKG_USING_STEMWIN is not set
 # CONFIG_PKG_USING_STEMWIN is not set
 # CONFIG_PKG_USING_WAVPLAYER is not set
 # CONFIG_PKG_USING_WAVPLAYER is not set
 # CONFIG_PKG_USING_TJPGD is not set
 # CONFIG_PKG_USING_TJPGD is not set
+# CONFIG_PKG_USING_PDFGEN is not set
 # CONFIG_PKG_USING_HELIX is not set
 # CONFIG_PKG_USING_HELIX is not set
 # CONFIG_PKG_USING_AZUREGUIX is not set
 # CONFIG_PKG_USING_AZUREGUIX is not set
 # CONFIG_PKG_USING_TOUCHGFX2RTT is not set
 # CONFIG_PKG_USING_TOUCHGFX2RTT is not set
+# CONFIG_PKG_USING_NUEMWIN is not set
+# CONFIG_PKG_USING_MP3PLAYER is not set
+# CONFIG_PKG_USING_TINYJPEG is not set
 
 
 #
 #
 # tools packages
 # tools packages
@@ -311,6 +340,7 @@ CONFIG_RT_USING_LIBC=y
 # CONFIG_PKG_USING_EASYFLASH is not set
 # CONFIG_PKG_USING_EASYFLASH is not set
 # CONFIG_PKG_USING_EASYLOGGER is not set
 # CONFIG_PKG_USING_EASYLOGGER is not set
 # CONFIG_PKG_USING_SYSTEMVIEW is not set
 # CONFIG_PKG_USING_SYSTEMVIEW is not set
+# CONFIG_PKG_USING_SEGGER_RTT is not set
 # CONFIG_PKG_USING_RDB is not set
 # CONFIG_PKG_USING_RDB is not set
 # CONFIG_PKG_USING_QRCODE is not set
 # CONFIG_PKG_USING_QRCODE is not set
 # CONFIG_PKG_USING_ULOG_EASYFLASH is not set
 # CONFIG_PKG_USING_ULOG_EASYFLASH is not set
@@ -339,15 +369,37 @@ CONFIG_RT_USING_LIBC=y
 # CONFIG_PKG_USING_ANV_MEMLEAK is not set
 # CONFIG_PKG_USING_ANV_MEMLEAK is not set
 # CONFIG_PKG_USING_ANV_TESTSUIT is not set
 # CONFIG_PKG_USING_ANV_TESTSUIT is not set
 # CONFIG_PKG_USING_ANV_BENCH is not set
 # CONFIG_PKG_USING_ANV_BENCH is not set
+# CONFIG_PKG_USING_DEVMEM is not set
+# CONFIG_PKG_USING_REGEX is not set
+# CONFIG_PKG_USING_MEM_SANDBOX is not set
+# CONFIG_PKG_USING_SOLAR_TERMS is not set
+# CONFIG_PKG_USING_GAN_ZHI is not set
 
 
 #
 #
 # system packages
 # system packages
 #
 #
+
+#
+# acceleration: Assembly language or algorithmic acceleration packages
+#
+# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
+# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
+# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
+# CONFIG_PKG_USING_QFPLIB_M3 is not set
+
+#
+# Micrium: Micrium software products porting for RT-Thread
+#
+# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set
+# CONFIG_PKG_USING_UCOSII_WRAPPER is not set
+# CONFIG_PKG_USING_UC_CRC is not set
+# CONFIG_PKG_USING_UC_CLK is not set
+# CONFIG_PKG_USING_UC_COMMON is not set
+# CONFIG_PKG_USING_UC_MODBUS is not set
 # CONFIG_PKG_USING_GUIENGINE is not set
 # CONFIG_PKG_USING_GUIENGINE is not set
 # CONFIG_PKG_USING_PERSIMMON is not set
 # CONFIG_PKG_USING_PERSIMMON is not set
 # CONFIG_PKG_USING_CAIRO is not set
 # CONFIG_PKG_USING_CAIRO is not set
 # CONFIG_PKG_USING_PIXMAN is not set
 # CONFIG_PKG_USING_PIXMAN is not set
-# CONFIG_PKG_USING_LWEXT4 is not set
 # CONFIG_PKG_USING_PARTITION is not set
 # CONFIG_PKG_USING_PARTITION is not set
 # CONFIG_PKG_USING_FAL is not set
 # CONFIG_PKG_USING_FAL is not set
 # CONFIG_PKG_USING_FLASHDB is not set
 # CONFIG_PKG_USING_FLASHDB is not set
@@ -357,6 +409,9 @@ CONFIG_RT_USING_LIBC=y
 # CONFIG_PKG_USING_CMSIS is not set
 # CONFIG_PKG_USING_CMSIS is not set
 # CONFIG_PKG_USING_DFS_YAFFS is not set
 # CONFIG_PKG_USING_DFS_YAFFS is not set
 # CONFIG_PKG_USING_LITTLEFS is not set
 # CONFIG_PKG_USING_LITTLEFS is not set
+# CONFIG_PKG_USING_DFS_JFFS2 is not set
+# CONFIG_PKG_USING_DFS_UFFS is not set
+# CONFIG_PKG_USING_LWEXT4 is not set
 # CONFIG_PKG_USING_THREAD_POOL is not set
 # CONFIG_PKG_USING_THREAD_POOL is not set
 # CONFIG_PKG_USING_ROBOTS is not set
 # CONFIG_PKG_USING_ROBOTS is not set
 # CONFIG_PKG_USING_EV is not set
 # CONFIG_PKG_USING_EV is not set
@@ -366,24 +421,14 @@ CONFIG_RT_USING_LIBC=y
 # CONFIG_PKG_USING_RAMDISK is not set
 # CONFIG_PKG_USING_RAMDISK is not set
 # CONFIG_PKG_USING_MININI is not set
 # CONFIG_PKG_USING_MININI is not set
 # CONFIG_PKG_USING_QBOOT is not set
 # CONFIG_PKG_USING_QBOOT is not set
-
-#
-# Micrium: Micrium software products porting for RT-Thread
-#
-# CONFIG_PKG_USING_UCOSIII_WRAPPER is not set
-# CONFIG_PKG_USING_UCOSII_WRAPPER is not set
-# CONFIG_PKG_USING_UC_CRC is not set
-# CONFIG_PKG_USING_UC_CLK is not set
-# CONFIG_PKG_USING_UC_COMMON is not set
-# CONFIG_PKG_USING_UC_MODBUS is not set
 # CONFIG_PKG_USING_PPOOL is not set
 # CONFIG_PKG_USING_PPOOL is not set
 # CONFIG_PKG_USING_OPENAMP is not set
 # CONFIG_PKG_USING_OPENAMP is not set
 # CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
 # CONFIG_PKG_USING_RT_KPRINTF_THREADSAFE is not set
-# CONFIG_PKG_USING_RT_MEMCPY_CM is not set
-# CONFIG_PKG_USING_QFPLIB_M0_FULL is not set
-# CONFIG_PKG_USING_QFPLIB_M0_TINY is not set
-# CONFIG_PKG_USING_QFPLIB_M3 is not set
 # CONFIG_PKG_USING_LPM is not set
 # CONFIG_PKG_USING_LPM is not set
+# CONFIG_PKG_USING_TLSF is not set
+# CONFIG_PKG_USING_EVENT_RECORDER is not set
+# CONFIG_PKG_USING_ARM_2D is not set
+# CONFIG_PKG_USING_WCWIDTH is not set
 
 
 #
 #
 # peripheral libraries and drivers
 # peripheral libraries and drivers
@@ -408,7 +453,6 @@ CONFIG_RT_USING_LIBC=y
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
 # CONFIG_PKG_USING_WM_LIBRARIES is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK is not set
 # CONFIG_PKG_USING_KENDRYTE_SDK is not set
 # CONFIG_PKG_USING_INFRARED is not set
 # CONFIG_PKG_USING_INFRARED is not set
-# CONFIG_PKG_USING_ROSSERIAL is not set
 # CONFIG_PKG_USING_AGILE_BUTTON is not set
 # CONFIG_PKG_USING_AGILE_BUTTON is not set
 # CONFIG_PKG_USING_AGILE_LED is not set
 # CONFIG_PKG_USING_AGILE_LED is not set
 # CONFIG_PKG_USING_AT24CXX is not set
 # CONFIG_PKG_USING_AT24CXX is not set
@@ -446,10 +490,55 @@ CONFIG_RT_USING_LIBC=y
 # CONFIG_PKG_USING_VIRTUAL_SENSOR is not set
 # CONFIG_PKG_USING_VIRTUAL_SENSOR is not set
 # CONFIG_PKG_USING_VDEVICE is not set
 # CONFIG_PKG_USING_VDEVICE is not set
 # CONFIG_PKG_USING_SGM706 is not set
 # CONFIG_PKG_USING_SGM706 is not set
+# CONFIG_PKG_USING_STM32WB55_SDK is not set
+# CONFIG_PKG_USING_RDA58XX is not set
+# CONFIG_PKG_USING_LIBNFC is not set
+# CONFIG_PKG_USING_MFOC is not set
+# CONFIG_PKG_USING_TMC51XX is not set
+# CONFIG_PKG_USING_TCA9534 is not set
+# CONFIG_PKG_USING_KOBUKI is not set
+# CONFIG_PKG_USING_ROSSERIAL is not set
+# CONFIG_PKG_USING_MICRO_ROS is not set
+# CONFIG_PKG_USING_MCP23008 is not set
+# CONFIG_PKG_USING_BLUETRUM_SDK is not set
+
+#
+# AI packages
+#
+# CONFIG_PKG_USING_LIBANN is not set
+# CONFIG_PKG_USING_NNOM is not set
+# CONFIG_PKG_USING_ONNX_BACKEND is not set
+# CONFIG_PKG_USING_ONNX_PARSER is not set
+# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set
+# CONFIG_PKG_USING_ELAPACK is not set
+# CONFIG_PKG_USING_ULAPACK is not set
+# CONFIG_PKG_USING_QUEST is not set
+# CONFIG_PKG_USING_NAXOS is not set
 
 
 #
 #
 # miscellaneous packages
 # miscellaneous packages
 #
 #
+
+#
+# samples: kernel and components samples
+#
+# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
+# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
+# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
+# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
+
+#
+# entertainment: terminal games and other interesting software packages
+#
+# CONFIG_PKG_USING_CMATRIX is not set
+# CONFIG_PKG_USING_SL is not set
+# CONFIG_PKG_USING_CAL is not set
+# CONFIG_PKG_USING_ACLOCK is not set
+# CONFIG_PKG_USING_THREES is not set
+# CONFIG_PKG_USING_2048 is not set
+# CONFIG_PKG_USING_SNAKE is not set
+# CONFIG_PKG_USING_TETRIS is not set
+# CONFIG_PKG_USING_DONUT is not set
 # CONFIG_PKG_USING_LIBCSV is not set
 # CONFIG_PKG_USING_LIBCSV is not set
 # CONFIG_PKG_USING_OPTPARSE is not set
 # CONFIG_PKG_USING_OPTPARSE is not set
 # CONFIG_PKG_USING_FASTLZ is not set
 # CONFIG_PKG_USING_FASTLZ is not set
@@ -460,44 +549,25 @@ CONFIG_RT_USING_LIBC=y
 # CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
 # CONFIG_PKG_USING_FLEXIBLE_BUTTON is not set
 # CONFIG_PKG_USING_CANFESTIVAL is not set
 # CONFIG_PKG_USING_CANFESTIVAL is not set
 # CONFIG_PKG_USING_ZLIB is not set
 # CONFIG_PKG_USING_ZLIB is not set
+# CONFIG_PKG_USING_MINIZIP is not set
 # CONFIG_PKG_USING_DSTR is not set
 # CONFIG_PKG_USING_DSTR is not set
 # CONFIG_PKG_USING_TINYFRAME is not set
 # CONFIG_PKG_USING_TINYFRAME is not set
 # CONFIG_PKG_USING_KENDRYTE_DEMO is not set
 # CONFIG_PKG_USING_KENDRYTE_DEMO is not set
 # CONFIG_PKG_USING_DIGITALCTRL is not set
 # CONFIG_PKG_USING_DIGITALCTRL is not set
 # CONFIG_PKG_USING_UPACKER is not set
 # CONFIG_PKG_USING_UPACKER is not set
 # CONFIG_PKG_USING_UPARAM is not set
 # CONFIG_PKG_USING_UPARAM is not set
-
-#
-# samples: kernel and components samples
-#
-# CONFIG_PKG_USING_KERNEL_SAMPLES is not set
-# CONFIG_PKG_USING_FILESYSTEM_SAMPLES is not set
-# CONFIG_PKG_USING_NETWORK_SAMPLES is not set
-# CONFIG_PKG_USING_PERIPHERAL_SAMPLES is not set
 # CONFIG_PKG_USING_HELLO is not set
 # CONFIG_PKG_USING_HELLO is not set
 # CONFIG_PKG_USING_VI is not set
 # CONFIG_PKG_USING_VI is not set
 # CONFIG_PKG_USING_KI is not set
 # CONFIG_PKG_USING_KI is not set
-# CONFIG_PKG_USING_NNOM is not set
-# CONFIG_PKG_USING_LIBANN is not set
-# CONFIG_PKG_USING_ELAPACK is not set
 # CONFIG_PKG_USING_ARMv7M_DWT is not set
 # CONFIG_PKG_USING_ARMv7M_DWT is not set
 # CONFIG_PKG_USING_VT100 is not set
 # CONFIG_PKG_USING_VT100 is not set
-# CONFIG_PKG_USING_ULAPACK is not set
 # CONFIG_PKG_USING_UKAL is not set
 # CONFIG_PKG_USING_UKAL is not set
 # CONFIG_PKG_USING_CRCLIB is not set
 # CONFIG_PKG_USING_CRCLIB is not set
-
-#
-# games: games run on RT-Thread console
-#
-# CONFIG_PKG_USING_THREES is not set
-# CONFIG_PKG_USING_2048 is not set
-# CONFIG_PKG_USING_SNAKE is not set
-# CONFIG_PKG_USING_TETRIS is not set
 # CONFIG_PKG_USING_LWGPS is not set
 # CONFIG_PKG_USING_LWGPS is not set
-# CONFIG_PKG_USING_TENSORFLOWLITEMICRO is not set
 # CONFIG_PKG_USING_STATE_MACHINE is not set
 # CONFIG_PKG_USING_STATE_MACHINE is not set
 # CONFIG_PKG_USING_MCURSES is not set
 # CONFIG_PKG_USING_MCURSES is not set
 # CONFIG_PKG_USING_COWSAY is not set
 # CONFIG_PKG_USING_COWSAY is not set
+# CONFIG_PKG_USING_TERMBOX is not set
 
 
 #
 #
 # Hardware Drivers Config
 # Hardware Drivers Config
@@ -508,8 +578,8 @@ CONFIG_SOC_SWM320=y
 # On-chip Peripheral Drivers
 # On-chip Peripheral Drivers
 #
 #
 CONFIG_BSP_USING_UART=y
 CONFIG_BSP_USING_UART=y
-CONFIG_BSP_USING_UART0=y
-# CONFIG_BSP_USING_UART1 is not set
+# CONFIG_BSP_USING_UART0 is not set
+CONFIG_BSP_USING_UART1=y
 # CONFIG_BSP_USING_UART2 is not set
 # CONFIG_BSP_USING_UART2 is not set
 # CONFIG_BSP_USING_UART3 is not set
 # CONFIG_BSP_USING_UART3 is not set
 CONFIG_BSP_USING_GPIO=y
 CONFIG_BSP_USING_GPIO=y

+ 3 - 3
bsp/swm320/README.md

@@ -93,7 +93,7 @@
   - 32K片内时钟源
   - 32K片内时钟源
   - 2~32MHz片外晶振
   - 2~32MHz片外晶振
 
 
-芯片更多详细信息请参考[华芯微特技术支持][http://www.synwit.cn/support-1/3.html]
+芯片更多详细信息请参考[华芯微特技术支持](http://www.synwit.cn/support-1/3.html)
 
 
 ## 编译说明
 ## 编译说明
 
 
@@ -119,7 +119,7 @@
 
 
 - 使用 Jlink 连接开发板到 PC (需要 Jlink 驱动)
 - 使用 Jlink 连接开发板到 PC (需要 Jlink 驱动)
 
 
-将串口 0 引脚为:`[PA2/PA3]`和 USB 转串口模块 P2 相连,串口配置方式为115200-N-8-1。
+将串口 1 引脚为:`[PC2/PC3]`和 USB 转串口模块 J11 相连,串口配置方式为115200-N-8-1。
 
 
 当使用 [env工具](https://www.rt-thread.org/page/download.html) 正确编译产生出rtthread.bin映像文件后,可以使用 ISP 的方式来烧写到设备中。
 当使用 [env工具](https://www.rt-thread.org/page/download.html) 正确编译产生出rtthread.bin映像文件后,可以使用 ISP 的方式来烧写到设备中。
 
 
@@ -166,4 +166,4 @@ msh />
 
 
 * [RT-Thread 文档中心](https://www.rt-thread.org/document/site/)
 * [RT-Thread 文档中心](https://www.rt-thread.org/document/site/)
 
 
-* [SWM320数据手册](http://www.synwit.cn/support-1/3.html)
+* [SWM320数据手册](https://www.synwit.cn/col.jsp?id=155)

+ 29 - 32
bsp/swm320/applications/main.c

@@ -1,5 +1,5 @@
 /*
 /*
- * Copyright (c) 2006-2018, RT-Thread Development Team
+ * Copyright (c) 2006-2021, RT-Thread Development Team
  *
  *
  * SPDX-License-Identifier: Apache-2.0
  * SPDX-License-Identifier: Apache-2.0
  *
  *
@@ -10,7 +10,7 @@
 #include <rtthread.h>
 #include <rtthread.h>
 #include <rtdevice.h>
 #include <rtdevice.h>
 
 
-#define LED_PIN 21
+#define LED_PIN 32
 
 
 int main(void)
 int main(void)
 {
 {
@@ -29,7 +29,7 @@ int main(void)
 }
 }
 
 
 // #ifdef RT_USING_PIN
 // #ifdef RT_USING_PIN
-// #define KEY1_PIN 25
+// #define KEY1_PIN 31
 // void key1_cb(void *args)
 // void key1_cb(void *args)
 // {
 // {
 //     rt_kprintf("key1 irq!\n");
 //     rt_kprintf("key1 irq!\n");
@@ -46,7 +46,7 @@ int main(void)
 // #endif
 // #endif
 
 
 #ifdef RT_USING_ADC
 #ifdef RT_USING_ADC
-#define ADC_DEV_NAME "adc0"
+#define ADC_DEV_NAME "adc1"
 #define ADC_DEV_CHANNEL 0
 #define ADC_DEV_CHANNEL 0
 #define REFER_VOLTAGE 330
 #define REFER_VOLTAGE 330
 #define CONVERT_BITS (1 << 12)
 #define CONVERT_BITS (1 << 12)
@@ -64,16 +64,15 @@ static int adc_vol_sample(int argc, char *argv[])
         return RT_ERROR;
         return RT_ERROR;
     }
     }
 
 
-    while (1)
-    {
-        ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);
-        value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
-        rt_kprintf("the value is :%d,", value);
-        vol = value * REFER_VOLTAGE / CONVERT_BITS;
-        rt_kprintf("the voltage is :%d.%02d \n", vol / 100, vol % 100);
-        rt_thread_mdelay(500);
-        ret = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL);
-    }
+    ret = rt_adc_enable(adc_dev, ADC_DEV_CHANNEL);
+
+    value = rt_adc_read(adc_dev, ADC_DEV_CHANNEL);
+    rt_kprintf("the value is :%d,", value);
+
+    vol = value * REFER_VOLTAGE / CONVERT_BITS;
+    rt_kprintf("the voltage is :%d.%02d \n", vol / 100, vol % 100);
+
+    ret = rt_adc_disable(adc_dev, ADC_DEV_CHANNEL);
 
 
     return ret;
     return ret;
 }
 }
@@ -143,17 +142,17 @@ MSH_CMD_EXPORT(hwtimer_sample, hwtimer sample);
 #endif
 #endif
 
 
 #ifdef RT_USING_PWM
 #ifdef RT_USING_PWM
-#define PWM_DEV_NAME "pwm0" /* PWM???? */
-#define PWM_DEV_CHANNEL 0   /* PWM?? */
+#define PWM_DEV_NAME "pwm0" /* PWM设备名称 */
+#define PWM_DEV_CHANNEL 0   /* PWM通道 */
 
 
-struct rt_device_pwm *pwm_dev; /* PWM???? */
+struct rt_device_pwm *pwm_dev; /* PWM设备句柄 */
 
 
 static int pwm_sample(int argc, char *argv[])
 static int pwm_sample(int argc, char *argv[])
 {
 {
     rt_uint32_t period, pulse;
     rt_uint32_t period, pulse;
 
 
-    period = 500000; /* ???0.5ms,?????ns */
-    pulse = 250000;  /* PWM?????,?????ns */
+    period = 500000; /* 周期为0.5ms,单位为纳秒ns */
+    pulse = 250000;  /* PWM脉冲宽度值,单位为纳秒ns */
 
 
     pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME);
     pwm_dev = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME);
     if (pwm_dev == RT_NULL)
     if (pwm_dev == RT_NULL)
@@ -170,26 +169,27 @@ MSH_CMD_EXPORT(pwm_sample, pwm sample);
 #endif
 #endif
 
 
 #ifdef RT_USING_RTC
 #ifdef RT_USING_RTC
+#include <time.h>
 static int rtc_sample(int argc, char *argv[])
 static int rtc_sample(int argc, char *argv[])
 {
 {
     rt_err_t ret = RT_EOK;
     rt_err_t ret = RT_EOK;
     time_t now;
     time_t now;
 
 
-    ret = set_date(2020, 6, 15);
+    ret = set_date(2020, 2, 28);
     if (ret != RT_EOK)
     if (ret != RT_EOK)
     {
     {
         rt_kprintf("set RTC date failed\n");
         rt_kprintf("set RTC date failed\n");
         return ret;
         return ret;
     }
     }
 
 
-    ret = set_time(11, 15, 50);
+    ret = set_time(23, 59, 55);
     if (ret != RT_EOK)
     if (ret != RT_EOK)
     {
     {
         rt_kprintf("set RTC time failed\n");
         rt_kprintf("set RTC time failed\n");
         return ret;
         return ret;
     }
     }
 
 
-    rt_thread_mdelay(3000);
+    //rt_thread_mdelay(3000);
     now = time(RT_NULL);
     now = time(RT_NULL);
     rt_kprintf("%s\n", ctime(&now));
     rt_kprintf("%s\n", ctime(&now));
 
 
@@ -205,7 +205,7 @@ static rt_device_t wdg_dev;
 
 
 static void idle_hook(void)
 static void idle_hook(void)
 {
 {
-    rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_KEEPALIVE, NULL);
+    rt_device_control(wdg_dev, RT_DEVICE_CTRL_WDT_KEEPALIVE, RT_NULL);
     rt_kprintf("feed the dog!\n ");
     rt_kprintf("feed the dog!\n ");
 }
 }
 
 
@@ -264,7 +264,7 @@ MSH_CMD_EXPORT(wdt_sample, wdt sample);
 
 
 static int rt_hw_spi_flash_init(void)
 static int rt_hw_spi_flash_init(void)
 {
 {
-    rt_hw_spi_device_attach("spi0", "spi00", GPIOA, PIN12);
+    rt_hw_spi_device_attach("spi0", "spi00", GPIOP, PIN22);
 
 
     if (RT_NULL == rt_sfud_flash_probe(W25Q_FLASH_NAME, W25Q_SPI_DEVICE_NAME))
     if (RT_NULL == rt_sfud_flash_probe(W25Q_FLASH_NAME, W25Q_SPI_DEVICE_NAME))
     {
     {
@@ -273,7 +273,6 @@ static int rt_hw_spi_flash_init(void)
 
 
     return RT_EOK;
     return RT_EOK;
 }
 }
-/* ???????? */
 INIT_COMPONENT_EXPORT(rt_hw_spi_flash_init);
 INIT_COMPONENT_EXPORT(rt_hw_spi_flash_init);
 
 
 static void spi_w25q_sample(int argc, char *argv[])
 static void spi_w25q_sample(int argc, char *argv[])
@@ -292,12 +291,12 @@ static void spi_w25q_sample(int argc, char *argv[])
         rt_strncpy(name, W25Q_SPI_DEVICE_NAME, RT_NAME_MAX);
         rt_strncpy(name, W25Q_SPI_DEVICE_NAME, RT_NAME_MAX);
     }
     }
 
 
-    /* ?? spi ???????? */
+    /* 查找 spi 设备获取设备句柄 */
     spi_dev_w25q = (struct rt_spi_device *)rt_device_find(name);
     spi_dev_w25q = (struct rt_spi_device *)rt_device_find(name);
     struct rt_spi_configuration cfg;
     struct rt_spi_configuration cfg;
     cfg.data_width = 8;
     cfg.data_width = 8;
     cfg.mode = RT_SPI_MASTER | RT_SPI_MODE_0 | RT_SPI_MSB;
     cfg.mode = RT_SPI_MASTER | RT_SPI_MODE_0 | RT_SPI_MSB;
-    cfg.max_hz = 20 * 1000 * 1000; /* 20M */
+    cfg.max_hz = 30 * 1000 * 1000; /* 20M */
 
 
     rt_spi_configure(spi_dev_w25q, &cfg);
     rt_spi_configure(spi_dev_w25q, &cfg);
     if (!spi_dev_w25q)
     if (!spi_dev_w25q)
@@ -306,11 +305,11 @@ static void spi_w25q_sample(int argc, char *argv[])
     }
     }
     else
     else
     {
     {
-        /* ??1:?? rt_spi_send_then_recv()??????ID */
+        /* 方式1:使用 rt_spi_send_then_recv()发送命令读取ID */
         rt_spi_send_then_recv(spi_dev_w25q, &w25x_read_id, 1, id, 5);
         rt_spi_send_then_recv(spi_dev_w25q, &w25x_read_id, 1, id, 5);
         rt_kprintf("use rt_spi_send_then_recv() read w25q ID is:%x%x\n", id[3], id[4]);
         rt_kprintf("use rt_spi_send_then_recv() read w25q ID is:%x%x\n", id[3], id[4]);
 
 
-        /* ??2:?? rt_spi_transfer_message()??????ID */
+        /* 方式2:使用 rt_spi_transfer_message()发送命令读取ID */
         struct rt_spi_message msg1, msg2;
         struct rt_spi_message msg1, msg2;
 
 
         msg1.send_buf = &w25x_read_id;
         msg1.send_buf = &w25x_read_id;
@@ -352,7 +351,6 @@ static void spi_flash_elmfat_sample(void)
 
 
     rt_kprintf("Write string '%s' to /user/test.txt.\n", str);
     rt_kprintf("Write string '%s' to /user/test.txt.\n", str);
 
 
-    /* ????????????,??????????????*/
     fd = open("/user/test.txt", O_WRONLY | O_CREAT);
     fd = open("/user/test.txt", O_WRONLY | O_CREAT);
     if (fd >= 0)
     if (fd >= 0)
     {
     {
@@ -362,7 +360,6 @@ static void spi_flash_elmfat_sample(void)
         close(fd);
         close(fd);
     }
     }
 
 
-    /* ????????? */
     fd = open("/user/test.txt", O_RDONLY);
     fd = open("/user/test.txt", O_RDONLY);
     if (fd >= 0)
     if (fd >= 0)
     {
     {
@@ -397,7 +394,7 @@ MSH_CMD_EXPORT(spi_w25q_sample, spi w25q sample);
 //{
 //{
 //    int fd, size;
 //    int fd, size;
 //    struct statfs elm_stat;
 //    struct statfs elm_stat;
-//    char str[] = "elmfat mount to sdcard.\r\n", buf[80];
+//    char str[] = "elmfat mount to sdcard.", buf[80];
 
 
 //    if (dfs_mkfs("elm", SDCARD_NAME) == 0)
 //    if (dfs_mkfs("elm", SDCARD_NAME) == 0)
 //        rt_kprintf("make elmfat filesystem success.\n");
 //        rt_kprintf("make elmfat filesystem success.\n");

+ 2 - 2
bsp/swm320/drivers/Kconfig

@@ -245,11 +245,11 @@ menu "On-chip Peripheral Drivers"
         select RT_USING_SPI
         select RT_USING_SPI
         if BSP_USING_SPI
         if BSP_USING_SPI
             config BSP_USING_SPI0
             config BSP_USING_SPI0
-                bool "Enable SPI0 BUS(CS/A12,MISO/A11,MOSI/A10,CLK/A9)"
+                bool "Enable SPI0 BUS(CS/P22,MISO/P19,MOSI/P18,CLK/P23)"
                 default n
                 default n
 
 
             config BSP_USING_SPI1
             config BSP_USING_SPI1
-                bool "Enable SPI1 BUS(CS/C4,MISO/C5,MOSI/C6,CLK/C7)"
+                bool "Enable SPI1 BUS(CS/B6,MISO/B3,MOSI/B2,CLK/B1)"
                 default n
                 default n
         endif
         endif
 
 

+ 36 - 0
bsp/swm320/drivers/board.c

@@ -17,6 +17,7 @@ static void bsp_clock_config(void)
     SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND);
     SysTick_Config(SystemCoreClock / RT_TICK_PER_SECOND);
     SysTick->CTRL |= 0x00000004UL;
     SysTick->CTRL |= 0x00000004UL;
 }
 }
+
 void SysTick_Handler(void)
 void SysTick_Handler(void)
 {
 {
     /* enter interrupt */
     /* enter interrupt */
@@ -28,6 +29,41 @@ void SysTick_Handler(void)
     rt_interrupt_leave();
     rt_interrupt_leave();
 }
 }
 
 
+/**
+ * This function will delay for some us.
+ *
+ * @param us the delay time of us
+ */
+void rt_hw_us_delay(rt_uint32_t us)
+{
+    rt_uint32_t ticks;
+    rt_uint32_t told, tnow, tcnt = 0;
+    rt_uint32_t reload = SysTick->LOAD;
+
+    ticks = us * reload / (1000000 / RT_TICK_PER_SECOND);
+    told = SysTick->VAL;
+    while (1)
+    {
+        tnow = SysTick->VAL;
+        if (tnow != told)
+        {
+            if (tnow < told)
+            {
+                tcnt += told - tnow;
+            }
+            else
+            {
+                tcnt += reload - tnow + told;
+            }
+            told = tnow;
+            if (tcnt >= ticks)
+            {
+                break;
+            }
+        }
+    }
+}
+
 void rt_hw_board_init()
 void rt_hw_board_init()
 {
 {
     bsp_clock_config();
     bsp_clock_config();

+ 4 - 8
bsp/swm320/drivers/drv_crypto.c

@@ -21,11 +21,6 @@ struct swm_hwcrypto_device
 
 
 #ifdef BSP_USING_CRC
 #ifdef BSP_USING_CRC
 
 
-struct hash_ctx_des
-{
-    struct swm_crc_cfg contex;
-};
-
 static struct hwcrypto_crc_cfg crc_backup_cfg;
 static struct hwcrypto_crc_cfg crc_backup_cfg;
 
 
 static rt_uint32_t _crc_update(struct hwcrypto_crc *ctx, const rt_uint8_t *in, rt_size_t length)
 static rt_uint32_t _crc_update(struct hwcrypto_crc *ctx, const rt_uint8_t *in, rt_size_t length)
@@ -108,6 +103,7 @@ static const struct hwcrypto_crc_ops crc_ops =
     {
     {
         .update = _crc_update,
         .update = _crc_update,
 };
 };
+#endif /* BSP_USING_CRC */
 
 
 static rt_err_t _crypto_create(struct rt_hwcrypto_ctx *ctx)
 static rt_err_t _crypto_create(struct rt_hwcrypto_ctx *ctx)
 {
 {
@@ -170,7 +166,7 @@ static rt_err_t _crypto_clone(struct rt_hwcrypto_ctx *des, const struct rt_hwcry
     case HWCRYPTO_TYPE_CRC:
     case HWCRYPTO_TYPE_CRC:
         if (des->contex && src->contex)
         if (des->contex && src->contex)
         {
         {
-            rt_memcpy(des->contex, src->contex, sizeof(struct hash_ctx_des));
+            rt_memcpy(des->contex, src->contex, sizeof(struct swm_crc_cfg));
         }
         }
         break;
         break;
 #endif /* BSP_USING_CRC */
 #endif /* BSP_USING_CRC */
@@ -226,5 +222,5 @@ int rt_hw_crypto_init(void)
 }
 }
 INIT_BOARD_EXPORT(rt_hw_crypto_init);
 INIT_BOARD_EXPORT(rt_hw_crypto_init);
 
 
-#endif /* BSP_USING_WDT */
-#endif /* RT_USING_WDT */
+
+#endif /* RT_USING_HWCRYPTO */

+ 1 - 0
bsp/swm320/drivers/drv_gpio.c

@@ -475,6 +475,7 @@ static void rt_hw_pin_isr(GPIO_TypeDef *GPIOx)
         }
         }
     }
     }
 }
 }
+
 void GPIOA_Handler(void)
 void GPIOA_Handler(void)
 {
 {
     rt_interrupt_enter();
     rt_interrupt_enter();

+ 1 - 1
bsp/swm320/drivers/drv_log.h

@@ -1,5 +1,5 @@
 /*
 /*
- * Copyright (c) 2006-2018, RT-Thread Development Team
+ * Copyright (c) 2006-2021, RT-Thread Development Team
  *
  *
  * SPDX-License-Identifier: Apache-2.0
  * SPDX-License-Identifier: Apache-2.0
  *
  *

+ 44 - 68
bsp/swm320/drivers/drv_rtc.c

@@ -10,6 +10,7 @@
  */
  */
 
 
 #include "drv_rtc.h"
 #include "drv_rtc.h"
+#include <sys/time.h>
 
 
 #ifdef RT_USING_RTC
 #ifdef RT_USING_RTC
 #ifdef BSP_USING_RTC
 #ifdef BSP_USING_RTC
@@ -18,8 +19,6 @@
 #define LOG_TAG "drv.rtc"
 #define LOG_TAG "drv.rtc"
 #include <drv_log.h>
 #include <drv_log.h>
 
 
-static struct rt_device rtc_device;
-
 static uint32_t calcWeekDay(uint32_t year, uint32_t month, uint32_t date)
 static uint32_t calcWeekDay(uint32_t year, uint32_t month, uint32_t date)
 {
 {
     uint32_t i, cnt = 0;
     uint32_t i, cnt = 0;
@@ -55,8 +54,8 @@ static time_t swm_get_rtc_time_stamp(void)
     tm_new.tm_min = get_datetime.Minute;
     tm_new.tm_min = get_datetime.Minute;
     tm_new.tm_hour = get_datetime.Hour;
     tm_new.tm_hour = get_datetime.Hour;
     tm_new.tm_mday = get_datetime.Date;
     tm_new.tm_mday = get_datetime.Date;
-    tm_new.tm_mon = get_datetime.Month - 1;
-    tm_new.tm_year = get_datetime.Year - 1900;
+    tm_new.tm_mon = get_datetime.Month;
+    tm_new.tm_year = get_datetime.Year;
 
 
     LOG_D("get rtc time.");
     LOG_D("get rtc time.");
     return mktime(&tm_new);
     return mktime(&tm_new);
@@ -72,9 +71,9 @@ static rt_err_t swm_set_rtc_time_stamp(time_t time_stamp)
     set_datetime.Minute = p_tm->tm_min;
     set_datetime.Minute = p_tm->tm_min;
     set_datetime.Hour = p_tm->tm_hour;
     set_datetime.Hour = p_tm->tm_hour;
     set_datetime.Date = p_tm->tm_mday;
     set_datetime.Date = p_tm->tm_mday;
-    set_datetime.Month = p_tm->tm_mon + 1;
-    set_datetime.Year = p_tm->tm_year + 1900;
-    //    datetime.Day = p_tm->tm_wday;
+    set_datetime.Month = p_tm->tm_mon;
+    set_datetime.Year = p_tm->tm_year;
+    // set_datetime.Day = p_tm->tm_wday;
 
 
     RTC_Stop(RTC);
     RTC_Stop(RTC);
     while (RTC->CFGABLE == 0)
     while (RTC->CFGABLE == 0)
@@ -86,7 +85,7 @@ static rt_err_t swm_set_rtc_time_stamp(time_t time_stamp)
     RTC->MONDAY = (calcWeekDay(set_datetime.Year, set_datetime.Month, set_datetime.Date)
     RTC->MONDAY = (calcWeekDay(set_datetime.Year, set_datetime.Month, set_datetime.Date)
                    << RTC_MONDAY_DAY_Pos) |
                    << RTC_MONDAY_DAY_Pos) |
                   ((set_datetime.Month) << RTC_MONDAY_MON_Pos);
                   ((set_datetime.Month) << RTC_MONDAY_MON_Pos);
-    RTC->YEAR = set_datetime.Year - 1901;
+    RTC->YEAR = set_datetime.Year;
     RTC->LOAD = 1 << RTC_LOAD_TIME_Pos;
     RTC->LOAD = 1 << RTC_LOAD_TIME_Pos;
     RTC_Start(RTC);
     RTC_Start(RTC);
 
 
@@ -94,43 +93,7 @@ static rt_err_t swm_set_rtc_time_stamp(time_t time_stamp)
     return RT_EOK;
     return RT_EOK;
 }
 }
 
 
-static rt_err_t swm_rtc_control(rt_device_t rtc_device, int cmd, void *args)
-{
-    rt_err_t result = RT_EOK;
-    RT_ASSERT(rtc_device != RT_NULL);
-
-    switch (cmd)
-    {
-    case RT_DEVICE_CTRL_RTC_GET_TIME:
-        *(rt_uint32_t *)args = swm_get_rtc_time_stamp();
-        LOG_D("RTC: get rtc_time %x\n", *(rt_uint32_t *)args);
-        break;
-    case RT_DEVICE_CTRL_RTC_SET_TIME:
-        if (swm_set_rtc_time_stamp(*(rt_uint32_t *)args))
-        {
-            result = -RT_ERROR;
-        }
-        LOG_D("RTC: set rtc_time %x\n", *(rt_uint32_t *)args);
-        break;
-    default:
-        break;
-    }
-
-    return result;
-}
-
-#ifdef RT_USING_DEVICE_OPS
-const static struct rt_device_ops swm_rtc_ops =
-    {
-        RT_NULL,
-        RT_NULL,
-        RT_NULL,
-        RT_NULL,
-        RT_NULL,
-        swm_rtc_control};
-#endif
-
-static void swm_rtc_init(void)
+static rt_err_t swm_rtc_init(void)
 {
 {
     RTC_InitStructure rtc_initstruct;
     RTC_InitStructure rtc_initstruct;
 
 
@@ -144,37 +107,50 @@ static void swm_rtc_init(void)
     rtc_initstruct.MinuteIEn = 0;
     rtc_initstruct.MinuteIEn = 0;
     RTC_Init(RTC, &rtc_initstruct);
     RTC_Init(RTC, &rtc_initstruct);
     RTC_Start(RTC);
     RTC_Start(RTC);
+
+    return RT_EOK;
+}
+
+static rt_err_t swm_rtc_get_secs(void *args)
+{
+    *(rt_uint32_t *)args = swm_get_rtc_time_stamp();
+    LOG_D("RTC: get rtc_time %x\n", *(rt_uint32_t *)args);
+
+    return RT_EOK;
 }
 }
 
 
-static rt_err_t rt_hw_rtc_register(rt_device_t rtc_device, const char *name, rt_uint32_t flag)
+static rt_err_t swm_rtc_set_secs(void *args)
 {
 {
-    RT_ASSERT(rtc_device != RT_NULL);
-
-    swm_rtc_init();
-
-#ifdef RT_USING_DEVICE_OPS
-    rtc_device->ops = &swm_rtc_ops;
-#else
-    rtc_device->init = RT_NULL;
-    rtc_device->open = RT_NULL;
-    rtc_device->close = RT_NULL;
-    rtc_device->read = RT_NULL;
-    rtc_device->write = RT_NULL;
-    rtc_device->control = swm_rtc_control;
-#endif
-    rtc_device->type = RT_Device_Class_RTC;
-    rtc_device->rx_indicate = RT_NULL;
-    rtc_device->tx_complete = RT_NULL;
-    rtc_device->user_data = RT_NULL;
-
-    /* register a character device */
-    return rt_device_register(rtc_device, name, flag);
+    rt_err_t result = RT_EOK;
+
+    if (swm_set_rtc_time_stamp(*(rt_uint32_t *)args))
+    {
+        result = -RT_ERROR;
+    }
+    LOG_D("RTC: set rtc_time %x\n", *(rt_uint32_t *)args);
+
+    return result;
 }
 }
 
 
+static const struct rt_rtc_ops swm_rtc_ops =
+{
+    swm_rtc_init,
+    swm_rtc_get_secs,
+    swm_rtc_set_secs,
+    RT_NULL,
+    RT_NULL,
+    RT_NULL,
+    RT_NULL,
+};
+
+static rt_rtc_dev_t swm_rtc_device;
+
 int rt_hw_rtc_init(void)
 int rt_hw_rtc_init(void)
 {
 {
     rt_err_t result;
     rt_err_t result;
-    result = rt_hw_rtc_register(&rtc_device, "rtc", RT_DEVICE_FLAG_RDWR);
+
+    swm_rtc_device.ops = &swm_rtc_ops;
+    result = rt_hw_rtc_register(&swm_rtc_device, "rtc", RT_DEVICE_FLAG_RDWR,RT_NULL);
     if (result != RT_EOK)
     if (result != RT_EOK)
     {
     {
         LOG_E("rtc register err code: %d", result);
         LOG_E("rtc register err code: %d", result);

+ 1 - 1
bsp/swm320/drivers/drv_sdio.c

@@ -47,7 +47,7 @@ static void rthw_sdio_wait_completed(struct rthw_sdio *sdio)
     SDIO_TypeDef *hw_sdio = sdio->sdio_des.hw_sdio;
     SDIO_TypeDef *hw_sdio = sdio->sdio_des.hw_sdio;
 
 
     if (rt_event_recv(&sdio->event, 0xffffffff, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR,
     if (rt_event_recv(&sdio->event, 0xffffffff, RT_EVENT_FLAG_OR | RT_EVENT_FLAG_CLEAR,
-                      rt_tick_from_millisecond(5000), &status) != RT_EOK)
+                      rt_tick_from_millisecond(1000), &status) != RT_EOK)
     {
     {
         LOG_E("wait completed timeout");
         LOG_E("wait completed timeout");
         cmd->err = -RT_ETIMEOUT;
         cmd->err = -RT_ETIMEOUT;

+ 6 - 6
bsp/swm320/drivers/drv_spi.c

@@ -279,15 +279,15 @@ int rt_hw_spi_init(void)
     rt_err_t result;
     rt_err_t result;
 
 
 #ifdef BSP_USING_SPI0
 #ifdef BSP_USING_SPI0
-    PORT_Init(PORTA, PIN9, FUNMUX1_SPI0_SCLK, 0);
-    PORT_Init(PORTA, PIN10, FUNMUX0_SPI0_MOSI, 0);
-    PORT_Init(PORTA, PIN11, FUNMUX1_SPI0_MISO, 1);
+    PORT_Init(PORTP, PIN23, FUNMUX1_SPI0_SCLK, 0);
+    PORT_Init(PORTP, PIN18, FUNMUX0_SPI0_MOSI, 0);
+    PORT_Init(PORTP, PIN19, FUNMUX1_SPI0_MISO, 1);
 #endif //BSP_USING_SPI0
 #endif //BSP_USING_SPI0
 
 
 #ifdef BSP_USING_SPI1
 #ifdef BSP_USING_SPI1
-    PORT_Init(PORTC, PIN7, FUNMUX1_SPI1_SCLK, 0);
-    PORT_Init(PORTC, PIN6, FUNMUX0_SPI1_MOSI, 0);
-    PORT_Init(PORTC, PIN5, FUNMUX1_SPI1_MISO, 1);
+    PORT_Init(PORTB, PIN1, FUNMUX1_SPI1_SCLK, 0);
+    PORT_Init(PORTB, PIN2, FUNMUX0_SPI1_MOSI, 0);
+    PORT_Init(PORTB, PIN3, FUNMUX1_SPI1_MISO, 1);
 #endif //BSP_USING_SPI1
 #endif //BSP_USING_SPI1
     for (int i = 0; i < sizeof(spi_cfg) / sizeof(spi_cfg[0]); i++)
     for (int i = 0; i < sizeof(spi_cfg) / sizeof(spi_cfg[0]); i++)
     {
     {

+ 111 - 45
bsp/swm320/drivers/linker_scripts/link.lds

@@ -1,71 +1,137 @@
-/* Entry Point */
-ENTRY(Reset_Handler)
-
-/* Specify the memory areas */
+/* Program Entry, set to mark it as "used" and avoid gc */
 MEMORY
 MEMORY
 {
 {
-	ROM   (arx) : ORIGIN = 0x00000000,    LENGTH = 0x00080000 /* 512k */
-    RAM   (arw) : ORIGIN = 0x20000000,    LENGTH = 0x00020000 /* 128k */
+    CODE (rx) : ORIGIN = 0x00000000, LENGTH = 512k /* 1024KB flash */
+    DATA (rw) : ORIGIN = 0x20000000, LENGTH =  128k /* 128K sram */
 }
 }
+ENTRY(Reset_Handler)
+_system_stack_size = 0x200;
 
 
-/* Define output sections */
 SECTIONS
 SECTIONS
 {
 {
-    . = ORIGIN(ROM);
     .text :
     .text :
     {
     {
-        KEEP(*(.isr_vector))
-
-        *(.text)
-        *(.text*)
+        . = ALIGN(4);
+        _stext = .;
+        KEEP(*(.isr_vector))            /* Startup code */
+        . = ALIGN(4);
+        *(.text)                        /* remaining code */
+        *(.text.*)                      /* remaining code */
+        *(.rodata)                      /* read-only data (constants) */
         *(.rodata*)
         *(.rodata*)
-    } > ROM
+        *(.glue_7)
+        *(.glue_7t)
+        *(.gnu.linkonce.t*)
+
+        /* section information for finsh shell */
+        . = ALIGN(4);
+        __fsymtab_start = .;
+        KEEP(*(FSymTab))
+        __fsymtab_end = .;
+        . = ALIGN(4);
+        __vsymtab_start = .;
+        KEEP(*(VSymTab))
+        __vsymtab_end = .;
+        . = ALIGN(4);
+
+        /* section information for initial. */
+        . = ALIGN(4);
+        __rt_init_start = .;
+        KEEP(*(SORT(.rti_fn*)))
+        __rt_init_end = .;
+        . = ALIGN(4);
+
+        . = ALIGN(4);
+        _etext = .;
+    } > CODE = 0
+
+    /* .ARM.exidx is sorted, so has to go in its own output section.  */
+    __exidx_start = .;
+    .ARM.exidx :
+    {
+        *(.ARM.exidx* .gnu.linkonce.armexidx.*)
+
+        /* This is used by the startup in order to initialize the .data secion */
+        _sidata = .;
+    } > CODE
+    __exidx_end = .;
 
 
-    . = ALIGN(4);
-    __data_load__ = LOADADDR(.data);
+    /* .data section which is used for initialized data */
 
 
-    . = ALIGN(4);
-    .data :
+    .data : AT (_sidata)
     {
     {
-        __data_start__ = .;
-	    
+        . = ALIGN(4);
+        /* This is used by the startup in order to initialize the .data secion */
+        _sdata = . ;
+
         *(.data)
         *(.data)
-        *(.data*)
+        *(.data.*)
+        *(.gnu.linkonce.d*)
+
+        . = ALIGN(4);
+        /* This is used by the startup in order to initialize the .data secion */
+        _edata = . ;
+    } >DATA
 
 
+    .stack : 
+    {
+        . = . + _system_stack_size;
         . = ALIGN(4);
         . = ALIGN(4);
-        __data_end__ = .;
-    } > RAM AT> ROM
+        _estack = .;
+    } >DATA
 
 
-    . = ALIGN(4);
+    __bss_start = .;
     .bss :
     .bss :
     {
     {
-        __bss_start__ = .;
+        . = ALIGN(4);
+        /* This is used by the startup in order to initialize the .bss secion */
+        _sbss = .;
 
 
         *(.bss)
         *(.bss)
-        *(.bss*)
+        *(.bss.*)
         *(COMMON)
         *(COMMON)
 
 
         . = ALIGN(4);
         . = ALIGN(4);
-        __bss_end__ = .;
-    } > RAM
-    . = ALIGN(4);
+        /* This is used by the startup in order to initialize the .bss secion */
+        _ebss = . ;
+        
+        *(.bss.init)
+    } > DATA
+    __bss_end = .;
 
 
-    .heap :
-    {
-        end = .;
-        __HeapBase = .;
-
-        *(.heap)
-    } > RAM
-
-    /* .stack_dummy section doesn't contains any symbols.
-     * It is only used for linker to calculate size of stack sections */
-    .stack_dummy :
-    {
-        *(.stack)
-    } > RAM
+    _end = .;
 
 
-    __StackTop   = ORIGIN(RAM) + LENGTH(RAM);
-    __StackLimit = __StackTop - SIZEOF(.stack_dummy);
-    ASSERT(__StackLimit >= __HeapLimit, "region RAM overflowed with stack")
+    /* Stabs debugging sections.  */
+    .stab          0 : { *(.stab) }
+    .stabstr       0 : { *(.stabstr) }
+    .stab.excl     0 : { *(.stab.excl) }
+    .stab.exclstr  0 : { *(.stab.exclstr) }
+    .stab.index    0 : { *(.stab.index) }
+    .stab.indexstr 0 : { *(.stab.indexstr) }
+    .comment       0 : { *(.comment) }
+    /* DWARF debug sections.
+     * Symbols in the DWARF debugging sections are relative to the beginning
+     * of the section so we begin them at 0.  */
+    /* DWARF 1 */
+    .debug          0 : { *(.debug) }
+    .line           0 : { *(.line) }
+    /* GNU DWARF 1 extensions */
+    .debug_srcinfo  0 : { *(.debug_srcinfo) }
+    .debug_sfnames  0 : { *(.debug_sfnames) }
+    /* DWARF 1.1 and DWARF 2 */
+    .debug_aranges  0 : { *(.debug_aranges) }
+    .debug_pubnames 0 : { *(.debug_pubnames) }
+    /* DWARF 2 */
+    .debug_info     0 : { *(.debug_info .gnu.linkonce.wi.*) }
+    .debug_abbrev   0 : { *(.debug_abbrev) }
+    .debug_line     0 : { *(.debug_line) }
+    .debug_frame    0 : { *(.debug_frame) }
+    .debug_str      0 : { *(.debug_str) }
+    .debug_loc      0 : { *(.debug_loc) }
+    .debug_macinfo  0 : { *(.debug_macinfo) }
+    /* SGI/MIPS DWARF 2 extensions */
+    .debug_weaknames 0 : { *(.debug_weaknames) }
+    .debug_funcnames 0 : { *(.debug_funcnames) }
+    .debug_typenames 0 : { *(.debug_typenames) }
+    .debug_varnames  0 : { *(.debug_varnames) }
 }
 }

+ 17 - 18
bsp/swm320/libraries/CMSIS/CoreSupport/arm_common_tables.h

@@ -2,12 +2,12 @@
 * Copyright (C) 2010-2014 ARM Limited. All rights reserved.
 * Copyright (C) 2010-2014 ARM Limited. All rights reserved.
 *
 *
 * $Date:        31. July 2014
 * $Date:        31. July 2014
-* $Revision: 	V1.4.4
+* $Revision:    V1.4.4
 *
 *
-* Project: 	    CMSIS DSP Library
-* Title:	    arm_common_tables.h
+* Project:      CMSIS DSP Library
+* Title:        arm_common_tables.h
 *
 *
-* Description:	This file has extern declaration for common tables like Bitreverse, reciprocal etc which are used across different functions
+* Description:  This file has extern declaration for common tables like Bitreverse, reciprocal etc which are used across different functions
 *
 *
 * Target Processor: Cortex-M4/Cortex-M3
 * Target Processor: Cortex-M4/Cortex-M3
 *
 *
@@ -85,14 +85,13 @@ extern const float32_t twiddleCoef_rfft_1024[1024];
 extern const float32_t twiddleCoef_rfft_2048[2048];
 extern const float32_t twiddleCoef_rfft_2048[2048];
 extern const float32_t twiddleCoef_rfft_4096[4096];
 extern const float32_t twiddleCoef_rfft_4096[4096];
 
 
-
 /* floating-point bit reversal tables */
 /* floating-point bit reversal tables */
-#define ARMBITREVINDEXTABLE__16_TABLE_LENGTH ((uint16_t)20  )
-#define ARMBITREVINDEXTABLE__32_TABLE_LENGTH ((uint16_t)48  )
-#define ARMBITREVINDEXTABLE__64_TABLE_LENGTH ((uint16_t)56  )
-#define ARMBITREVINDEXTABLE_128_TABLE_LENGTH ((uint16_t)208 )
-#define ARMBITREVINDEXTABLE_256_TABLE_LENGTH ((uint16_t)440 )
-#define ARMBITREVINDEXTABLE_512_TABLE_LENGTH ((uint16_t)448 )
+#define ARMBITREVINDEXTABLE__16_TABLE_LENGTH ((uint16_t)20)
+#define ARMBITREVINDEXTABLE__32_TABLE_LENGTH ((uint16_t)48)
+#define ARMBITREVINDEXTABLE__64_TABLE_LENGTH ((uint16_t)56)
+#define ARMBITREVINDEXTABLE_128_TABLE_LENGTH ((uint16_t)208)
+#define ARMBITREVINDEXTABLE_256_TABLE_LENGTH ((uint16_t)440)
+#define ARMBITREVINDEXTABLE_512_TABLE_LENGTH ((uint16_t)448)
 #define ARMBITREVINDEXTABLE1024_TABLE_LENGTH ((uint16_t)1800)
 #define ARMBITREVINDEXTABLE1024_TABLE_LENGTH ((uint16_t)1800)
 #define ARMBITREVINDEXTABLE2048_TABLE_LENGTH ((uint16_t)3808)
 #define ARMBITREVINDEXTABLE2048_TABLE_LENGTH ((uint16_t)3808)
 #define ARMBITREVINDEXTABLE4096_TABLE_LENGTH ((uint16_t)4032)
 #define ARMBITREVINDEXTABLE4096_TABLE_LENGTH ((uint16_t)4032)
@@ -108,13 +107,13 @@ extern const uint16_t armBitRevIndexTable2048[ARMBITREVINDEXTABLE2048_TABLE_LENG
 extern const uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE4096_TABLE_LENGTH];
 extern const uint16_t armBitRevIndexTable4096[ARMBITREVINDEXTABLE4096_TABLE_LENGTH];
 
 
 /* fixed-point bit reversal tables */
 /* fixed-point bit reversal tables */
-#define ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH ((uint16_t)12  )
-#define ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH ((uint16_t)24  )
-#define ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH ((uint16_t)56  )
-#define ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH ((uint16_t)112 )
-#define ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH ((uint16_t)240 )
-#define ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH ((uint16_t)480 )
-#define ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH ((uint16_t)992 )
+#define ARMBITREVINDEXTABLE_FIXED___16_TABLE_LENGTH ((uint16_t)12)
+#define ARMBITREVINDEXTABLE_FIXED___32_TABLE_LENGTH ((uint16_t)24)
+#define ARMBITREVINDEXTABLE_FIXED___64_TABLE_LENGTH ((uint16_t)56)
+#define ARMBITREVINDEXTABLE_FIXED__128_TABLE_LENGTH ((uint16_t)112)
+#define ARMBITREVINDEXTABLE_FIXED__256_TABLE_LENGTH ((uint16_t)240)
+#define ARMBITREVINDEXTABLE_FIXED__512_TABLE_LENGTH ((uint16_t)480)
+#define ARMBITREVINDEXTABLE_FIXED_1024_TABLE_LENGTH ((uint16_t)992)
 #define ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH ((uint16_t)1984)
 #define ARMBITREVINDEXTABLE_FIXED_2048_TABLE_LENGTH ((uint16_t)1984)
 #define ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH ((uint16_t)4032)
 #define ARMBITREVINDEXTABLE_FIXED_4096_TABLE_LENGTH ((uint16_t)4032)
 
 

+ 31 - 31
bsp/swm320/libraries/CMSIS/CoreSupport/arm_const_structs.h

@@ -2,12 +2,12 @@
 * Copyright (C) 2010-2014 ARM Limited. All rights reserved.
 * Copyright (C) 2010-2014 ARM Limited. All rights reserved.
 *
 *
 * $Date:        31. July 2014
 * $Date:        31. July 2014
-* $Revision: 	V1.4.4
+* $Revision:    V1.4.4
 *
 *
-* Project: 	    CMSIS DSP Library
-* Title:	    arm_const_structs.h
+* Project:      CMSIS DSP Library
+* Title:        arm_const_structs.h
 *
 *
-* Description:	This file has constant structs that are initialized for
+* Description:  This file has constant structs that are initialized for
 *              user convenience.  For example, some can be given as
 *              user convenience.  For example, some can be given as
 *              arguments to the arm_cfft_f32() function.
 *              arguments to the arm_cfft_f32() function.
 *
 *
@@ -46,34 +46,34 @@
 #include "arm_math.h"
 #include "arm_math.h"
 #include "arm_common_tables.h"
 #include "arm_common_tables.h"
 
 
-   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len16;
-   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len32;
-   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len64;
-   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len128;
-   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len256;
-   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len512;
-   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024;
-   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048;
-   extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096;
+extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len16;
+extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len32;
+extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len64;
+extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len128;
+extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len256;
+extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len512;
+extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len1024;
+extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len2048;
+extern const arm_cfft_instance_f32 arm_cfft_sR_f32_len4096;
 
 
-   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len16;
-   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len32;
-   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len64;
-   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len128;
-   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len256;
-   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len512;
-   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024;
-   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048;
-   extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096;
+extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len16;
+extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len32;
+extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len64;
+extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len128;
+extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len256;
+extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len512;
+extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len1024;
+extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len2048;
+extern const arm_cfft_instance_q31 arm_cfft_sR_q31_len4096;
 
 
-   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len16;
-   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len32;
-   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len64;
-   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len128;
-   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len256;
-   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len512;
-   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024;
-   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048;
-   extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096;
+extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len16;
+extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len32;
+extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len64;
+extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len128;
+extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len256;
+extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len512;
+extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len1024;
+extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len2048;
+extern const arm_cfft_instance_q15 arm_cfft_sR_q15_len4096;
 
 
 #endif
 #endif

Fișier diff suprimat deoarece este prea mare
+ 530 - 555
bsp/swm320/libraries/CMSIS/CoreSupport/arm_math.h


+ 361 - 380
bsp/swm320/libraries/CMSIS/CoreSupport/core_cm0.h

@@ -1,4 +1,4 @@
-/**************************************************************************//**
+/**************************************************************************/ /**
  * @file     core_cm0.h
  * @file     core_cm0.h
  * @brief    CMSIS Cortex-M0 Core Peripheral Access Layer Header File
  * @brief    CMSIS Cortex-M0 Core Peripheral Access Layer Header File
  * @version  V4.00
  * @version  V4.00
@@ -34,16 +34,16 @@
    POSSIBILITY OF SUCH DAMAGE.
    POSSIBILITY OF SUCH DAMAGE.
    ---------------------------------------------------------------------------*/
    ---------------------------------------------------------------------------*/
 
 
-
-#if defined ( __ICCARM__ )
- #pragma system_include  /* treat file as system include file for MISRA check */
+#if defined(__ICCARM__)
+#pragma system_include /* treat file as system include file for MISRA check */
 #endif
 #endif
 
 
 #ifndef __CORE_CM0_H_GENERIC
 #ifndef __CORE_CM0_H_GENERIC
 #define __CORE_CM0_H_GENERIC
 #define __CORE_CM0_H_GENERIC
 
 
 #ifdef __cplusplus
 #ifdef __cplusplus
- extern "C" {
+extern "C"
+{
 #endif
 #endif
 
 
 /** \page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions
 /** \page CMSIS_MISRA_Exceptions  MISRA-C:2004 Compliance Exceptions
@@ -59,7 +59,6 @@
      Function-like macros are used to allow more efficient code.
      Function-like macros are used to allow more efficient code.
  */
  */
 
 
-
 /*******************************************************************************
 /*******************************************************************************
  *                 CMSIS definitions
  *                 CMSIS definitions
  ******************************************************************************/
  ******************************************************************************/
@@ -68,85 +67,84 @@
  */
  */
 
 
 /*  CMSIS CM0 definitions */
 /*  CMSIS CM0 definitions */
-#define __CM0_CMSIS_VERSION_MAIN  (0x04)                                   /*!< [31:16] CMSIS HAL main version   */
-#define __CM0_CMSIS_VERSION_SUB   (0x00)                                   /*!< [15:0]  CMSIS HAL sub version    */
-#define __CM0_CMSIS_VERSION       ((__CM0_CMSIS_VERSION_MAIN << 16) | \
-                                    __CM0_CMSIS_VERSION_SUB          )     /*!< CMSIS HAL version number         */
+#define __CM0_CMSIS_VERSION_MAIN (0x04) /*!< [31:16] CMSIS HAL main version   */
+#define __CM0_CMSIS_VERSION_SUB (0x00)  /*!< [15:0]  CMSIS HAL sub version    */
+#define __CM0_CMSIS_VERSION ((__CM0_CMSIS_VERSION_MAIN << 16) | \
+                             __CM0_CMSIS_VERSION_SUB) /*!< CMSIS HAL version number         */
+
+#define __CORTEX_M (0x00) /*!< Cortex-M Core                    */
+
+#if defined(__CC_ARM)
+#define __ASM __asm       /*!< asm keyword for ARM Compiler          */
+#define __INLINE __inline /*!< inline keyword for ARM Compiler       */
+#define __STATIC_INLINE static __inline
+
+#elif defined(__GNUC__)
+#define __ASM __asm     /*!< asm keyword for GNU Compiler          */
+#define __INLINE inline /*!< inline keyword for GNU Compiler       */
+#define __STATIC_INLINE static inline
+
+#elif defined(__ICCARM__)
+#define __ASM __asm     /*!< asm keyword for IAR Compiler          */
+#define __INLINE inline /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */
+#define __STATIC_INLINE static inline
+
+#elif defined(__TMS470__)
+#define __ASM __asm /*!< asm keyword for TI CCS Compiler       */
+#define __STATIC_INLINE static inline
+
+#elif defined(__TASKING__)
+#define __ASM __asm     /*!< asm keyword for TASKING Compiler      */
+#define __INLINE inline /*!< inline keyword for TASKING Compiler   */
+#define __STATIC_INLINE static inline
+
+#elif defined(__CSMC__)
+#define __packed
+#define __ASM _asm      /*!< asm keyword for COSMIC Compiler      */
+#define __INLINE inline /*use -pc99 on compile line !< inline keyword for COSMIC Compiler   */
+#define __STATIC_INLINE static inline
 
 
-#define __CORTEX_M                (0x00)                                   /*!< Cortex-M Core                    */
-
-
-#if   defined ( __CC_ARM )
-  #define __ASM            __asm                                      /*!< asm keyword for ARM Compiler          */
-  #define __INLINE         __inline                                   /*!< inline keyword for ARM Compiler       */
-  #define __STATIC_INLINE  static __inline
+#endif
 
 
-#elif defined ( __GNUC__ )
-  #define __ASM            __asm                                      /*!< asm keyword for GNU Compiler          */
-  #define __INLINE         inline                                     /*!< inline keyword for GNU Compiler       */
-  #define __STATIC_INLINE  static inline
+/** __FPU_USED indicates whether an FPU is used or not.
+    This core does not support an FPU at all
+*/
+#define __FPU_USED 0
 
 
-#elif defined ( __ICCARM__ )
-  #define __ASM            __asm                                      /*!< asm keyword for IAR Compiler          */
-  #define __INLINE         inline                                     /*!< inline keyword for IAR Compiler. Only available in High optimization mode! */
-  #define __STATIC_INLINE  static inline
+#if defined(__CC_ARM)
+#if defined __TARGET_FPU_VFP
+#warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+#endif
 
 
-#elif defined ( __TMS470__ )
-  #define __ASM            __asm                                      /*!< asm keyword for TI CCS Compiler       */
-  #define __STATIC_INLINE  static inline
+#elif defined(__GNUC__)
+#if defined(__VFP_FP__) && !defined(__SOFTFP__)
+#warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+#endif
 
 
-#elif defined ( __TASKING__ )
-  #define __ASM            __asm                                      /*!< asm keyword for TASKING Compiler      */
-  #define __INLINE         inline                                     /*!< inline keyword for TASKING Compiler   */
-  #define __STATIC_INLINE  static inline
+#elif defined(__ICCARM__)
+#if defined __ARMVFP__
+#warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+#endif
 
 
-#elif defined ( __CSMC__ )
-  #define __packed
-  #define __ASM            _asm                                      /*!< asm keyword for COSMIC Compiler      */
-  #define __INLINE         inline                                    /*use -pc99 on compile line !< inline keyword for COSMIC Compiler   */
-  #define __STATIC_INLINE  static inline
+#elif defined(__TMS470__)
+#if defined __TI__VFP_SUPPORT____
+#warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+#endif
 
 
+#elif defined(__TASKING__)
+#if defined __FPU_VFP__
+#error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
 #endif
 #endif
 
 
-/** __FPU_USED indicates whether an FPU is used or not.
-    This core does not support an FPU at all
-*/
-#define __FPU_USED       0
-
-#if defined ( __CC_ARM )
-  #if defined __TARGET_FPU_VFP
-    #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
-  #endif
-
-#elif defined ( __GNUC__ )
-  #if defined (__VFP_FP__) && !defined(__SOFTFP__)
-    #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
-  #endif
-
-#elif defined ( __ICCARM__ )
-  #if defined __ARMVFP__
-    #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
-  #endif
-
-#elif defined ( __TMS470__ )
-  #if defined __TI__VFP_SUPPORT____
-    #warning "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
-  #endif
-
-#elif defined ( __TASKING__ )
-  #if defined __FPU_VFP__
-    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
-  #endif
-
-#elif defined ( __CSMC__ )		/* Cosmic */
-  #if ( __CSMC__ & 0x400)		// FPU present for parser
-    #error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
-  #endif
+#elif defined(__CSMC__) /* Cosmic */
+#if (__CSMC__ & 0x400)  // FPU present for parser
+#error "Compiler generates FPU instructions for a device without an FPU (check __FPU_PRESENT)"
+#endif
 #endif
 #endif
 
 
-#include <stdint.h>                      /* standard types definitions                      */
-#include <core_cmInstr.h>                /* Core Instruction Access                         */
-#include <core_cmFunc.h>                 /* Core Function Access                            */
+#include <stdint.h>       /* standard types definitions                      */
+#include <core_cmInstr.h> /* Core Instruction Access                         */
+#include <core_cmFunc.h>  /* Core Function Access                            */
 
 
 #ifdef __cplusplus
 #ifdef __cplusplus
 }
 }
@@ -160,25 +158,26 @@
 #define __CORE_CM0_H_DEPENDANT
 #define __CORE_CM0_H_DEPENDANT
 
 
 #ifdef __cplusplus
 #ifdef __cplusplus
- extern "C" {
+extern "C"
+{
 #endif
 #endif
 
 
 /* check device defines and use defaults */
 /* check device defines and use defaults */
 #if defined __CHECK_DEVICE_DEFINES
 #if defined __CHECK_DEVICE_DEFINES
-  #ifndef __CM0_REV
-    #define __CM0_REV               0x0000
-    #warning "__CM0_REV not defined in device header file; using default!"
-  #endif
-
-  #ifndef __NVIC_PRIO_BITS
-    #define __NVIC_PRIO_BITS          2
-    #warning "__NVIC_PRIO_BITS not defined in device header file; using default!"
-  #endif
-
-  #ifndef __Vendor_SysTickConfig
-    #define __Vendor_SysTickConfig    0
-    #warning "__Vendor_SysTickConfig not defined in device header file; using default!"
-  #endif
+#ifndef __CM0_REV
+#define __CM0_REV 0x0000
+#warning "__CM0_REV not defined in device header file; using default!"
+#endif
+
+#ifndef __NVIC_PRIO_BITS
+#define __NVIC_PRIO_BITS 2
+#warning "__NVIC_PRIO_BITS not defined in device header file; using default!"
+#endif
+
+#ifndef __Vendor_SysTickConfig
+#define __Vendor_SysTickConfig 0
+#warning "__Vendor_SysTickConfig not defined in device header file; using default!"
+#endif
 #endif
 #endif
 
 
 /* IO definitions (access restrictions to peripheral registers) */
 /* IO definitions (access restrictions to peripheral registers) */
@@ -190,18 +189,16 @@
     \li for automatic generation of peripheral register debug information.
     \li for automatic generation of peripheral register debug information.
 */
 */
 #ifdef __cplusplus
 #ifdef __cplusplus
-  #define   __I     volatile             /*!< Defines 'read only' permissions                 */
+#define __I volatile /*!< Defines 'read only' permissions                 */
 #else
 #else
-  #define   __I     volatile const       /*!< Defines 'read only' permissions                 */
+#define __I volatile const /*!< Defines 'read only' permissions                 */
 #endif
 #endif
-#define     __O     volatile             /*!< Defines 'write only' permissions                */
-#define     __IO    volatile             /*!< Defines 'read / write' permissions              */
-
-/*@} end of group Cortex_M0 */
-
+#define __O volatile  /*!< Defines 'write only' permissions                */
+#define __IO volatile /*!< Defines 'read / write' permissions              */
 
 
+    /*@} end of group Cortex_M0 */
 
 
-/*******************************************************************************
+    /*******************************************************************************
  *                 Register Abstraction
  *                 Register Abstraction
   Core Register contain:
   Core Register contain:
   - Core Register
   - Core Register
@@ -209,275 +206,268 @@
   - Core SCB Register
   - Core SCB Register
   - Core SysTick Register
   - Core SysTick Register
  ******************************************************************************/
  ******************************************************************************/
-/** \defgroup CMSIS_core_register Defines and Type Definitions
+    /** \defgroup CMSIS_core_register Defines and Type Definitions
     \brief Type definitions and defines for Cortex-M processor based devices.
     \brief Type definitions and defines for Cortex-M processor based devices.
 */
 */
 
 
-/** \ingroup    CMSIS_core_register
+    /** \ingroup    CMSIS_core_register
     \defgroup   CMSIS_CORE  Status and Control Registers
     \defgroup   CMSIS_CORE  Status and Control Registers
     \brief  Core Register type definitions.
     \brief  Core Register type definitions.
   @{
   @{
  */
  */
 
 
-/** \brief  Union type to access the Application Program Status Register (APSR).
+    /** \brief  Union type to access the Application Program Status Register (APSR).
  */
  */
-typedef union
-{
-  struct
-  {
+    typedef union
+    {
+        struct
+        {
 #if (__CORTEX_M != 0x04)
 #if (__CORTEX_M != 0x04)
-    uint32_t _reserved0:27;              /*!< bit:  0..26  Reserved                           */
+            uint32_t _reserved0 : 27; /*!< bit:  0..26  Reserved                           */
 #else
 #else
-    uint32_t _reserved0:16;              /*!< bit:  0..15  Reserved                           */
-    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags        */
-    uint32_t _reserved1:7;               /*!< bit: 20..26  Reserved                           */
+        uint32_t _reserved0 : 16; /*!< bit:  0..15  Reserved                           */
+        uint32_t GE : 4;          /*!< bit: 16..19  Greater than or Equal flags        */
+        uint32_t _reserved1 : 7;  /*!< bit: 20..26  Reserved                           */
 #endif
 #endif
-    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag          */
-    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag       */
-    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag          */
-    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag           */
-    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag       */
-  } b;                                   /*!< Structure used for bit  access                  */
-  uint32_t w;                            /*!< Type      used for word access                  */
-} APSR_Type;
-
-
-/** \brief  Union type to access the Interrupt Program Status Register (IPSR).
+            uint32_t Q : 1; /*!< bit:     27  Saturation condition flag          */
+            uint32_t V : 1; /*!< bit:     28  Overflow condition code flag       */
+            uint32_t C : 1; /*!< bit:     29  Carry condition code flag          */
+            uint32_t Z : 1; /*!< bit:     30  Zero condition code flag           */
+            uint32_t N : 1; /*!< bit:     31  Negative condition code flag       */
+        } b;                /*!< Structure used for bit  access                  */
+        uint32_t w;         /*!< Type      used for word access                  */
+    } APSR_Type;
+
+    /** \brief  Union type to access the Interrupt Program Status Register (IPSR).
  */
  */
-typedef union
-{
-  struct
-  {
-    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number                   */
-    uint32_t _reserved0:23;              /*!< bit:  9..31  Reserved                           */
-  } b;                                   /*!< Structure used for bit  access                  */
-  uint32_t w;                            /*!< Type      used for word access                  */
-} IPSR_Type;
-
-
-/** \brief  Union type to access the Special-Purpose Program Status Registers (xPSR).
+    typedef union
+    {
+        struct
+        {
+            uint32_t ISR : 9;         /*!< bit:  0.. 8  Exception number                   */
+            uint32_t _reserved0 : 23; /*!< bit:  9..31  Reserved                           */
+        } b;                          /*!< Structure used for bit  access                  */
+        uint32_t w;                   /*!< Type      used for word access                  */
+    } IPSR_Type;
+
+    /** \brief  Union type to access the Special-Purpose Program Status Registers (xPSR).
  */
  */
-typedef union
-{
-  struct
-  {
-    uint32_t ISR:9;                      /*!< bit:  0.. 8  Exception number                   */
+    typedef union
+    {
+        struct
+        {
+            uint32_t ISR : 9; /*!< bit:  0.. 8  Exception number                   */
 #if (__CORTEX_M != 0x04)
 #if (__CORTEX_M != 0x04)
-    uint32_t _reserved0:15;              /*!< bit:  9..23  Reserved                           */
+            uint32_t _reserved0 : 15; /*!< bit:  9..23  Reserved                           */
 #else
 #else
-    uint32_t _reserved0:7;               /*!< bit:  9..15  Reserved                           */
-    uint32_t GE:4;                       /*!< bit: 16..19  Greater than or Equal flags        */
-    uint32_t _reserved1:4;               /*!< bit: 20..23  Reserved                           */
+        uint32_t _reserved0 : 7;  /*!< bit:  9..15  Reserved                           */
+        uint32_t GE : 4;          /*!< bit: 16..19  Greater than or Equal flags        */
+        uint32_t _reserved1 : 4;  /*!< bit: 20..23  Reserved                           */
 #endif
 #endif
-    uint32_t T:1;                        /*!< bit:     24  Thumb bit        (read 0)          */
-    uint32_t IT:2;                       /*!< bit: 25..26  saved IT state   (read 0)          */
-    uint32_t Q:1;                        /*!< bit:     27  Saturation condition flag          */
-    uint32_t V:1;                        /*!< bit:     28  Overflow condition code flag       */
-    uint32_t C:1;                        /*!< bit:     29  Carry condition code flag          */
-    uint32_t Z:1;                        /*!< bit:     30  Zero condition code flag           */
-    uint32_t N:1;                        /*!< bit:     31  Negative condition code flag       */
-  } b;                                   /*!< Structure used for bit  access                  */
-  uint32_t w;                            /*!< Type      used for word access                  */
-} xPSR_Type;
-
-
-/** \brief  Union type to access the Control Registers (CONTROL).
+            uint32_t T : 1;  /*!< bit:     24  Thumb bit        (read 0)          */
+            uint32_t IT : 2; /*!< bit: 25..26  saved IT state   (read 0)          */
+            uint32_t Q : 1;  /*!< bit:     27  Saturation condition flag          */
+            uint32_t V : 1;  /*!< bit:     28  Overflow condition code flag       */
+            uint32_t C : 1;  /*!< bit:     29  Carry condition code flag          */
+            uint32_t Z : 1;  /*!< bit:     30  Zero condition code flag           */
+            uint32_t N : 1;  /*!< bit:     31  Negative condition code flag       */
+        } b;                 /*!< Structure used for bit  access                  */
+        uint32_t w;          /*!< Type      used for word access                  */
+    } xPSR_Type;
+
+    /** \brief  Union type to access the Control Registers (CONTROL).
  */
  */
-typedef union
-{
-  struct
-  {
-    uint32_t nPRIV:1;                    /*!< bit:      0  Execution privilege in Thread mode */
-    uint32_t SPSEL:1;                    /*!< bit:      1  Stack to be used                   */
-    uint32_t FPCA:1;                     /*!< bit:      2  FP extension active flag           */
-    uint32_t _reserved0:29;              /*!< bit:  3..31  Reserved                           */
-  } b;                                   /*!< Structure used for bit  access                  */
-  uint32_t w;                            /*!< Type      used for word access                  */
-} CONTROL_Type;
-
-/*@} end of group CMSIS_CORE */
-
-
-/** \ingroup    CMSIS_core_register
+    typedef union
+    {
+        struct
+        {
+            uint32_t nPRIV : 1;       /*!< bit:      0  Execution privilege in Thread mode */
+            uint32_t SPSEL : 1;       /*!< bit:      1  Stack to be used                   */
+            uint32_t FPCA : 1;        /*!< bit:      2  FP extension active flag           */
+            uint32_t _reserved0 : 29; /*!< bit:  3..31  Reserved                           */
+        } b;                          /*!< Structure used for bit  access                  */
+        uint32_t w;                   /*!< Type      used for word access                  */
+    } CONTROL_Type;
+
+    /*@} end of group CMSIS_CORE */
+
+    /** \ingroup    CMSIS_core_register
     \defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)
     \defgroup   CMSIS_NVIC  Nested Vectored Interrupt Controller (NVIC)
     \brief      Type definitions for the NVIC Registers
     \brief      Type definitions for the NVIC Registers
   @{
   @{
  */
  */
 
 
-/** \brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).
+    /** \brief  Structure type to access the Nested Vectored Interrupt Controller (NVIC).
  */
  */
-typedef struct
-{
-  __IO uint32_t ISER[1];                 /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register           */
-       uint32_t RESERVED0[31];
-  __IO uint32_t ICER[1];                 /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register          */
-       uint32_t RSERVED1[31];
-  __IO uint32_t ISPR[1];                 /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register           */
-       uint32_t RESERVED2[31];
-  __IO uint32_t ICPR[1];                 /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register         */
-       uint32_t RESERVED3[31];
-       uint32_t RESERVED4[64];
-  __IO uint32_t IP[8];                   /*!< Offset: 0x300 (R/W)  Interrupt Priority Register              */
-}  NVIC_Type;
-
-/*@} end of group CMSIS_NVIC */
-
-
-/** \ingroup  CMSIS_core_register
+    typedef struct
+    {
+        __IO uint32_t ISER[1]; /*!< Offset: 0x000 (R/W)  Interrupt Set Enable Register           */
+        uint32_t RESERVED0[31];
+        __IO uint32_t ICER[1]; /*!< Offset: 0x080 (R/W)  Interrupt Clear Enable Register          */
+        uint32_t RSERVED1[31];
+        __IO uint32_t ISPR[1]; /*!< Offset: 0x100 (R/W)  Interrupt Set Pending Register           */
+        uint32_t RESERVED2[31];
+        __IO uint32_t ICPR[1]; /*!< Offset: 0x180 (R/W)  Interrupt Clear Pending Register         */
+        uint32_t RESERVED3[31];
+        uint32_t RESERVED4[64];
+        __IO uint32_t IP[8]; /*!< Offset: 0x300 (R/W)  Interrupt Priority Register              */
+    } NVIC_Type;
+
+    /*@} end of group CMSIS_NVIC */
+
+    /** \ingroup  CMSIS_core_register
     \defgroup CMSIS_SCB     System Control Block (SCB)
     \defgroup CMSIS_SCB     System Control Block (SCB)
     \brief      Type definitions for the System Control Block Registers
     \brief      Type definitions for the System Control Block Registers
   @{
   @{
  */
  */
 
 
-/** \brief  Structure type to access the System Control Block (SCB).
+    /** \brief  Structure type to access the System Control Block (SCB).
  */
  */
-typedef struct
-{
-  __I  uint32_t CPUID;                   /*!< Offset: 0x000 (R/ )  CPUID Base Register                                   */
-  __IO uint32_t ICSR;                    /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register                  */
-       uint32_t RESERVED0;
-  __IO uint32_t AIRCR;                   /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register      */
-  __IO uint32_t SCR;                     /*!< Offset: 0x010 (R/W)  System Control Register                               */
-  __IO uint32_t CCR;                     /*!< Offset: 0x014 (R/W)  Configuration Control Register                        */
-       uint32_t RESERVED1;
-  __IO uint32_t SHP[2];                  /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED   */
-  __IO uint32_t SHCSR;                   /*!< Offset: 0x024 (R/W)  System Handler Control and State Register             */
-} SCB_Type;
+    typedef struct
+    {
+        __I uint32_t CPUID; /*!< Offset: 0x000 (R/ )  CPUID Base Register                                   */
+        __IO uint32_t ICSR; /*!< Offset: 0x004 (R/W)  Interrupt Control and State Register                  */
+        uint32_t RESERVED0;
+        __IO uint32_t AIRCR; /*!< Offset: 0x00C (R/W)  Application Interrupt and Reset Control Register      */
+        __IO uint32_t SCR;   /*!< Offset: 0x010 (R/W)  System Control Register                               */
+        __IO uint32_t CCR;   /*!< Offset: 0x014 (R/W)  Configuration Control Register                        */
+        uint32_t RESERVED1;
+        __IO uint32_t SHP[2]; /*!< Offset: 0x01C (R/W)  System Handlers Priority Registers. [0] is RESERVED   */
+        __IO uint32_t SHCSR;  /*!< Offset: 0x024 (R/W)  System Handler Control and State Register             */
+    } SCB_Type;
 
 
 /* SCB CPUID Register Definitions */
 /* SCB CPUID Register Definitions */
-#define SCB_CPUID_IMPLEMENTER_Pos          24                                             /*!< SCB CPUID: IMPLEMENTER Position */
-#define SCB_CPUID_IMPLEMENTER_Msk          (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos)          /*!< SCB CPUID: IMPLEMENTER Mask */
+#define SCB_CPUID_IMPLEMENTER_Pos 24                                    /*!< SCB CPUID: IMPLEMENTER Position */
+#define SCB_CPUID_IMPLEMENTER_Msk (0xFFUL << SCB_CPUID_IMPLEMENTER_Pos) /*!< SCB CPUID: IMPLEMENTER Mask */
 
 
-#define SCB_CPUID_VARIANT_Pos              20                                             /*!< SCB CPUID: VARIANT Position */
-#define SCB_CPUID_VARIANT_Msk              (0xFUL << SCB_CPUID_VARIANT_Pos)               /*!< SCB CPUID: VARIANT Mask */
+#define SCB_CPUID_VARIANT_Pos 20                               /*!< SCB CPUID: VARIANT Position */
+#define SCB_CPUID_VARIANT_Msk (0xFUL << SCB_CPUID_VARIANT_Pos) /*!< SCB CPUID: VARIANT Mask */
 
 
-#define SCB_CPUID_ARCHITECTURE_Pos         16                                             /*!< SCB CPUID: ARCHITECTURE Position */
-#define SCB_CPUID_ARCHITECTURE_Msk         (0xFUL << SCB_CPUID_ARCHITECTURE_Pos)          /*!< SCB CPUID: ARCHITECTURE Mask */
+#define SCB_CPUID_ARCHITECTURE_Pos 16                                    /*!< SCB CPUID: ARCHITECTURE Position */
+#define SCB_CPUID_ARCHITECTURE_Msk (0xFUL << SCB_CPUID_ARCHITECTURE_Pos) /*!< SCB CPUID: ARCHITECTURE Mask */
 
 
-#define SCB_CPUID_PARTNO_Pos                4                                             /*!< SCB CPUID: PARTNO Position */
-#define SCB_CPUID_PARTNO_Msk               (0xFFFUL << SCB_CPUID_PARTNO_Pos)              /*!< SCB CPUID: PARTNO Mask */
+#define SCB_CPUID_PARTNO_Pos 4                                 /*!< SCB CPUID: PARTNO Position */
+#define SCB_CPUID_PARTNO_Msk (0xFFFUL << SCB_CPUID_PARTNO_Pos) /*!< SCB CPUID: PARTNO Mask */
 
 
-#define SCB_CPUID_REVISION_Pos              0                                             /*!< SCB CPUID: REVISION Position */
-#define SCB_CPUID_REVISION_Msk             (0xFUL << SCB_CPUID_REVISION_Pos)              /*!< SCB CPUID: REVISION Mask */
+#define SCB_CPUID_REVISION_Pos 0                                 /*!< SCB CPUID: REVISION Position */
+#define SCB_CPUID_REVISION_Msk (0xFUL << SCB_CPUID_REVISION_Pos) /*!< SCB CPUID: REVISION Mask */
 
 
 /* SCB Interrupt Control State Register Definitions */
 /* SCB Interrupt Control State Register Definitions */
-#define SCB_ICSR_NMIPENDSET_Pos            31                                             /*!< SCB ICSR: NMIPENDSET Position */
-#define SCB_ICSR_NMIPENDSET_Msk            (1UL << SCB_ICSR_NMIPENDSET_Pos)               /*!< SCB ICSR: NMIPENDSET Mask */
+#define SCB_ICSR_NMIPENDSET_Pos 31                               /*!< SCB ICSR: NMIPENDSET Position */
+#define SCB_ICSR_NMIPENDSET_Msk (1UL << SCB_ICSR_NMIPENDSET_Pos) /*!< SCB ICSR: NMIPENDSET Mask */
 
 
-#define SCB_ICSR_PENDSVSET_Pos             28                                             /*!< SCB ICSR: PENDSVSET Position */
-#define SCB_ICSR_PENDSVSET_Msk             (1UL << SCB_ICSR_PENDSVSET_Pos)                /*!< SCB ICSR: PENDSVSET Mask */
+#define SCB_ICSR_PENDSVSET_Pos 28                              /*!< SCB ICSR: PENDSVSET Position */
+#define SCB_ICSR_PENDSVSET_Msk (1UL << SCB_ICSR_PENDSVSET_Pos) /*!< SCB ICSR: PENDSVSET Mask */
 
 
-#define SCB_ICSR_PENDSVCLR_Pos             27                                             /*!< SCB ICSR: PENDSVCLR Position */
-#define SCB_ICSR_PENDSVCLR_Msk             (1UL << SCB_ICSR_PENDSVCLR_Pos)                /*!< SCB ICSR: PENDSVCLR Mask */
+#define SCB_ICSR_PENDSVCLR_Pos 27                              /*!< SCB ICSR: PENDSVCLR Position */
+#define SCB_ICSR_PENDSVCLR_Msk (1UL << SCB_ICSR_PENDSVCLR_Pos) /*!< SCB ICSR: PENDSVCLR Mask */
 
 
-#define SCB_ICSR_PENDSTSET_Pos             26                                             /*!< SCB ICSR: PENDSTSET Position */
-#define SCB_ICSR_PENDSTSET_Msk             (1UL << SCB_ICSR_PENDSTSET_Pos)                /*!< SCB ICSR: PENDSTSET Mask */
+#define SCB_ICSR_PENDSTSET_Pos 26                              /*!< SCB ICSR: PENDSTSET Position */
+#define SCB_ICSR_PENDSTSET_Msk (1UL << SCB_ICSR_PENDSTSET_Pos) /*!< SCB ICSR: PENDSTSET Mask */
 
 
-#define SCB_ICSR_PENDSTCLR_Pos             25                                             /*!< SCB ICSR: PENDSTCLR Position */
-#define SCB_ICSR_PENDSTCLR_Msk             (1UL << SCB_ICSR_PENDSTCLR_Pos)                /*!< SCB ICSR: PENDSTCLR Mask */
+#define SCB_ICSR_PENDSTCLR_Pos 25                              /*!< SCB ICSR: PENDSTCLR Position */
+#define SCB_ICSR_PENDSTCLR_Msk (1UL << SCB_ICSR_PENDSTCLR_Pos) /*!< SCB ICSR: PENDSTCLR Mask */
 
 
-#define SCB_ICSR_ISRPREEMPT_Pos            23                                             /*!< SCB ICSR: ISRPREEMPT Position */
-#define SCB_ICSR_ISRPREEMPT_Msk            (1UL << SCB_ICSR_ISRPREEMPT_Pos)               /*!< SCB ICSR: ISRPREEMPT Mask */
+#define SCB_ICSR_ISRPREEMPT_Pos 23                               /*!< SCB ICSR: ISRPREEMPT Position */
+#define SCB_ICSR_ISRPREEMPT_Msk (1UL << SCB_ICSR_ISRPREEMPT_Pos) /*!< SCB ICSR: ISRPREEMPT Mask */
 
 
-#define SCB_ICSR_ISRPENDING_Pos            22                                             /*!< SCB ICSR: ISRPENDING Position */
-#define SCB_ICSR_ISRPENDING_Msk            (1UL << SCB_ICSR_ISRPENDING_Pos)               /*!< SCB ICSR: ISRPENDING Mask */
+#define SCB_ICSR_ISRPENDING_Pos 22                               /*!< SCB ICSR: ISRPENDING Position */
+#define SCB_ICSR_ISRPENDING_Msk (1UL << SCB_ICSR_ISRPENDING_Pos) /*!< SCB ICSR: ISRPENDING Mask */
 
 
-#define SCB_ICSR_VECTPENDING_Pos           12                                             /*!< SCB ICSR: VECTPENDING Position */
-#define SCB_ICSR_VECTPENDING_Msk           (0x1FFUL << SCB_ICSR_VECTPENDING_Pos)          /*!< SCB ICSR: VECTPENDING Mask */
+#define SCB_ICSR_VECTPENDING_Pos 12                                    /*!< SCB ICSR: VECTPENDING Position */
+#define SCB_ICSR_VECTPENDING_Msk (0x1FFUL << SCB_ICSR_VECTPENDING_Pos) /*!< SCB ICSR: VECTPENDING Mask */
 
 
-#define SCB_ICSR_VECTACTIVE_Pos             0                                             /*!< SCB ICSR: VECTACTIVE Position */
-#define SCB_ICSR_VECTACTIVE_Msk            (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos)           /*!< SCB ICSR: VECTACTIVE Mask */
+#define SCB_ICSR_VECTACTIVE_Pos 0                                    /*!< SCB ICSR: VECTACTIVE Position */
+#define SCB_ICSR_VECTACTIVE_Msk (0x1FFUL << SCB_ICSR_VECTACTIVE_Pos) /*!< SCB ICSR: VECTACTIVE Mask */
 
 
 /* SCB Application Interrupt and Reset Control Register Definitions */
 /* SCB Application Interrupt and Reset Control Register Definitions */
-#define SCB_AIRCR_VECTKEY_Pos              16                                             /*!< SCB AIRCR: VECTKEY Position */
-#define SCB_AIRCR_VECTKEY_Msk              (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos)            /*!< SCB AIRCR: VECTKEY Mask */
+#define SCB_AIRCR_VECTKEY_Pos 16                                  /*!< SCB AIRCR: VECTKEY Position */
+#define SCB_AIRCR_VECTKEY_Msk (0xFFFFUL << SCB_AIRCR_VECTKEY_Pos) /*!< SCB AIRCR: VECTKEY Mask */
 
 
-#define SCB_AIRCR_VECTKEYSTAT_Pos          16                                             /*!< SCB AIRCR: VECTKEYSTAT Position */
-#define SCB_AIRCR_VECTKEYSTAT_Msk          (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos)        /*!< SCB AIRCR: VECTKEYSTAT Mask */
+#define SCB_AIRCR_VECTKEYSTAT_Pos 16                                      /*!< SCB AIRCR: VECTKEYSTAT Position */
+#define SCB_AIRCR_VECTKEYSTAT_Msk (0xFFFFUL << SCB_AIRCR_VECTKEYSTAT_Pos) /*!< SCB AIRCR: VECTKEYSTAT Mask */
 
 
-#define SCB_AIRCR_ENDIANESS_Pos            15                                             /*!< SCB AIRCR: ENDIANESS Position */
-#define SCB_AIRCR_ENDIANESS_Msk            (1UL << SCB_AIRCR_ENDIANESS_Pos)               /*!< SCB AIRCR: ENDIANESS Mask */
+#define SCB_AIRCR_ENDIANESS_Pos 15                               /*!< SCB AIRCR: ENDIANESS Position */
+#define SCB_AIRCR_ENDIANESS_Msk (1UL << SCB_AIRCR_ENDIANESS_Pos) /*!< SCB AIRCR: ENDIANESS Mask */
 
 
-#define SCB_AIRCR_SYSRESETREQ_Pos           2                                             /*!< SCB AIRCR: SYSRESETREQ Position */
-#define SCB_AIRCR_SYSRESETREQ_Msk          (1UL << SCB_AIRCR_SYSRESETREQ_Pos)             /*!< SCB AIRCR: SYSRESETREQ Mask */
+#define SCB_AIRCR_SYSRESETREQ_Pos 2                                  /*!< SCB AIRCR: SYSRESETREQ Position */
+#define SCB_AIRCR_SYSRESETREQ_Msk (1UL << SCB_AIRCR_SYSRESETREQ_Pos) /*!< SCB AIRCR: SYSRESETREQ Mask */
 
 
-#define SCB_AIRCR_VECTCLRACTIVE_Pos         1                                             /*!< SCB AIRCR: VECTCLRACTIVE Position */
-#define SCB_AIRCR_VECTCLRACTIVE_Msk        (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos)           /*!< SCB AIRCR: VECTCLRACTIVE Mask */
+#define SCB_AIRCR_VECTCLRACTIVE_Pos 1                                    /*!< SCB AIRCR: VECTCLRACTIVE Position */
+#define SCB_AIRCR_VECTCLRACTIVE_Msk (1UL << SCB_AIRCR_VECTCLRACTIVE_Pos) /*!< SCB AIRCR: VECTCLRACTIVE Mask */
 
 
 /* SCB System Control Register Definitions */
 /* SCB System Control Register Definitions */
-#define SCB_SCR_SEVONPEND_Pos               4                                             /*!< SCB SCR: SEVONPEND Position */
-#define SCB_SCR_SEVONPEND_Msk              (1UL << SCB_SCR_SEVONPEND_Pos)                 /*!< SCB SCR: SEVONPEND Mask */
+#define SCB_SCR_SEVONPEND_Pos 4                              /*!< SCB SCR: SEVONPEND Position */
+#define SCB_SCR_SEVONPEND_Msk (1UL << SCB_SCR_SEVONPEND_Pos) /*!< SCB SCR: SEVONPEND Mask */
 
 
-#define SCB_SCR_SLEEPDEEP_Pos               2                                             /*!< SCB SCR: SLEEPDEEP Position */
-#define SCB_SCR_SLEEPDEEP_Msk              (1UL << SCB_SCR_SLEEPDEEP_Pos)                 /*!< SCB SCR: SLEEPDEEP Mask */
+#define SCB_SCR_SLEEPDEEP_Pos 2                              /*!< SCB SCR: SLEEPDEEP Position */
+#define SCB_SCR_SLEEPDEEP_Msk (1UL << SCB_SCR_SLEEPDEEP_Pos) /*!< SCB SCR: SLEEPDEEP Mask */
 
 
-#define SCB_SCR_SLEEPONEXIT_Pos             1                                             /*!< SCB SCR: SLEEPONEXIT Position */
-#define SCB_SCR_SLEEPONEXIT_Msk            (1UL << SCB_SCR_SLEEPONEXIT_Pos)               /*!< SCB SCR: SLEEPONEXIT Mask */
+#define SCB_SCR_SLEEPONEXIT_Pos 1                                /*!< SCB SCR: SLEEPONEXIT Position */
+#define SCB_SCR_SLEEPONEXIT_Msk (1UL << SCB_SCR_SLEEPONEXIT_Pos) /*!< SCB SCR: SLEEPONEXIT Mask */
 
 
 /* SCB Configuration Control Register Definitions */
 /* SCB Configuration Control Register Definitions */
-#define SCB_CCR_STKALIGN_Pos                9                                             /*!< SCB CCR: STKALIGN Position */
-#define SCB_CCR_STKALIGN_Msk               (1UL << SCB_CCR_STKALIGN_Pos)                  /*!< SCB CCR: STKALIGN Mask */
+#define SCB_CCR_STKALIGN_Pos 9                             /*!< SCB CCR: STKALIGN Position */
+#define SCB_CCR_STKALIGN_Msk (1UL << SCB_CCR_STKALIGN_Pos) /*!< SCB CCR: STKALIGN Mask */
 
 
-#define SCB_CCR_UNALIGN_TRP_Pos             3                                             /*!< SCB CCR: UNALIGN_TRP Position */
-#define SCB_CCR_UNALIGN_TRP_Msk            (1UL << SCB_CCR_UNALIGN_TRP_Pos)               /*!< SCB CCR: UNALIGN_TRP Mask */
+#define SCB_CCR_UNALIGN_TRP_Pos 3                                /*!< SCB CCR: UNALIGN_TRP Position */
+#define SCB_CCR_UNALIGN_TRP_Msk (1UL << SCB_CCR_UNALIGN_TRP_Pos) /*!< SCB CCR: UNALIGN_TRP Mask */
 
 
 /* SCB System Handler Control and State Register Definitions */
 /* SCB System Handler Control and State Register Definitions */
-#define SCB_SHCSR_SVCALLPENDED_Pos         15                                             /*!< SCB SHCSR: SVCALLPENDED Position */
-#define SCB_SHCSR_SVCALLPENDED_Msk         (1UL << SCB_SHCSR_SVCALLPENDED_Pos)            /*!< SCB SHCSR: SVCALLPENDED Mask */
-
-/*@} end of group CMSIS_SCB */
+#define SCB_SHCSR_SVCALLPENDED_Pos 15                                  /*!< SCB SHCSR: SVCALLPENDED Position */
+#define SCB_SHCSR_SVCALLPENDED_Msk (1UL << SCB_SHCSR_SVCALLPENDED_Pos) /*!< SCB SHCSR: SVCALLPENDED Mask */
 
 
+    /*@} end of group CMSIS_SCB */
 
 
-/** \ingroup  CMSIS_core_register
+    /** \ingroup  CMSIS_core_register
     \defgroup CMSIS_SysTick     System Tick Timer (SysTick)
     \defgroup CMSIS_SysTick     System Tick Timer (SysTick)
     \brief      Type definitions for the System Timer Registers.
     \brief      Type definitions for the System Timer Registers.
   @{
   @{
  */
  */
 
 
-/** \brief  Structure type to access the System Timer (SysTick).
+    /** \brief  Structure type to access the System Timer (SysTick).
  */
  */
-typedef struct
-{
-  __IO uint32_t CTRL;                    /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
-  __IO uint32_t LOAD;                    /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register       */
-  __IO uint32_t VAL;                     /*!< Offset: 0x008 (R/W)  SysTick Current Value Register      */
-  __I  uint32_t CALIB;                   /*!< Offset: 0x00C (R/ )  SysTick Calibration Register        */
-} SysTick_Type;
+    typedef struct
+    {
+        __IO uint32_t CTRL; /*!< Offset: 0x000 (R/W)  SysTick Control and Status Register */
+        __IO uint32_t LOAD; /*!< Offset: 0x004 (R/W)  SysTick Reload Value Register       */
+        __IO uint32_t VAL;  /*!< Offset: 0x008 (R/W)  SysTick Current Value Register      */
+        __I uint32_t CALIB; /*!< Offset: 0x00C (R/ )  SysTick Calibration Register        */
+    } SysTick_Type;
 
 
 /* SysTick Control / Status Register Definitions */
 /* SysTick Control / Status Register Definitions */
-#define SysTick_CTRL_COUNTFLAG_Pos         16                                             /*!< SysTick CTRL: COUNTFLAG Position */
-#define SysTick_CTRL_COUNTFLAG_Msk         (1UL << SysTick_CTRL_COUNTFLAG_Pos)            /*!< SysTick CTRL: COUNTFLAG Mask */
+#define SysTick_CTRL_COUNTFLAG_Pos 16                                  /*!< SysTick CTRL: COUNTFLAG Position */
+#define SysTick_CTRL_COUNTFLAG_Msk (1UL << SysTick_CTRL_COUNTFLAG_Pos) /*!< SysTick CTRL: COUNTFLAG Mask */
 
 
-#define SysTick_CTRL_CLKSOURCE_Pos          2                                             /*!< SysTick CTRL: CLKSOURCE Position */
-#define SysTick_CTRL_CLKSOURCE_Msk         (1UL << SysTick_CTRL_CLKSOURCE_Pos)            /*!< SysTick CTRL: CLKSOURCE Mask */
+#define SysTick_CTRL_CLKSOURCE_Pos 2                                   /*!< SysTick CTRL: CLKSOURCE Position */
+#define SysTick_CTRL_CLKSOURCE_Msk (1UL << SysTick_CTRL_CLKSOURCE_Pos) /*!< SysTick CTRL: CLKSOURCE Mask */
 
 
-#define SysTick_CTRL_TICKINT_Pos            1                                             /*!< SysTick CTRL: TICKINT Position */
-#define SysTick_CTRL_TICKINT_Msk           (1UL << SysTick_CTRL_TICKINT_Pos)              /*!< SysTick CTRL: TICKINT Mask */
+#define SysTick_CTRL_TICKINT_Pos 1                                 /*!< SysTick CTRL: TICKINT Position */
+#define SysTick_CTRL_TICKINT_Msk (1UL << SysTick_CTRL_TICKINT_Pos) /*!< SysTick CTRL: TICKINT Mask */
 
 
-#define SysTick_CTRL_ENABLE_Pos             0                                             /*!< SysTick CTRL: ENABLE Position */
-#define SysTick_CTRL_ENABLE_Msk            (1UL << SysTick_CTRL_ENABLE_Pos)               /*!< SysTick CTRL: ENABLE Mask */
+#define SysTick_CTRL_ENABLE_Pos 0                                /*!< SysTick CTRL: ENABLE Position */
+#define SysTick_CTRL_ENABLE_Msk (1UL << SysTick_CTRL_ENABLE_Pos) /*!< SysTick CTRL: ENABLE Mask */
 
 
 /* SysTick Reload Register Definitions */
 /* SysTick Reload Register Definitions */
-#define SysTick_LOAD_RELOAD_Pos             0                                             /*!< SysTick LOAD: RELOAD Position */
-#define SysTick_LOAD_RELOAD_Msk            (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos)        /*!< SysTick LOAD: RELOAD Mask */
+#define SysTick_LOAD_RELOAD_Pos 0                                       /*!< SysTick LOAD: RELOAD Position */
+#define SysTick_LOAD_RELOAD_Msk (0xFFFFFFUL << SysTick_LOAD_RELOAD_Pos) /*!< SysTick LOAD: RELOAD Mask */
 
 
 /* SysTick Current Register Definitions */
 /* SysTick Current Register Definitions */
-#define SysTick_VAL_CURRENT_Pos             0                                             /*!< SysTick VAL: CURRENT Position */
-#define SysTick_VAL_CURRENT_Msk            (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos)        /*!< SysTick VAL: CURRENT Mask */
+#define SysTick_VAL_CURRENT_Pos 0                                       /*!< SysTick VAL: CURRENT Position */
+#define SysTick_VAL_CURRENT_Msk (0xFFFFFFUL << SysTick_VAL_CURRENT_Pos) /*!< SysTick VAL: CURRENT Mask */
 
 
 /* SysTick Calibration Register Definitions */
 /* SysTick Calibration Register Definitions */
-#define SysTick_CALIB_NOREF_Pos            31                                             /*!< SysTick CALIB: NOREF Position */
-#define SysTick_CALIB_NOREF_Msk            (1UL << SysTick_CALIB_NOREF_Pos)               /*!< SysTick CALIB: NOREF Mask */
+#define SysTick_CALIB_NOREF_Pos 31                               /*!< SysTick CALIB: NOREF Position */
+#define SysTick_CALIB_NOREF_Msk (1UL << SysTick_CALIB_NOREF_Pos) /*!< SysTick CALIB: NOREF Mask */
 
 
-#define SysTick_CALIB_SKEW_Pos             30                                             /*!< SysTick CALIB: SKEW Position */
-#define SysTick_CALIB_SKEW_Msk             (1UL << SysTick_CALIB_SKEW_Pos)                /*!< SysTick CALIB: SKEW Mask */
+#define SysTick_CALIB_SKEW_Pos 30                              /*!< SysTick CALIB: SKEW Position */
+#define SysTick_CALIB_SKEW_Msk (1UL << SysTick_CALIB_SKEW_Pos) /*!< SysTick CALIB: SKEW Mask */
 
 
-#define SysTick_CALIB_TENMS_Pos             0                                             /*!< SysTick CALIB: TENMS Position */
-#define SysTick_CALIB_TENMS_Msk            (0xFFFFFFUL << SysTick_CALIB_TENMS_Pos)        /*!< SysTick CALIB: TENMS Mask */
+#define SysTick_CALIB_TENMS_Pos 0                                       /*!< SysTick CALIB: TENMS Position */
+#define SysTick_CALIB_TENMS_Msk (0xFFFFFFUL << SysTick_CALIB_TENMS_Pos) /*!< SysTick CALIB: TENMS Mask */
 
 
 /*@} end of group CMSIS_SysTick */
 /*@} end of group CMSIS_SysTick */
 
 
-
 /** \ingroup  CMSIS_core_register
 /** \ingroup  CMSIS_core_register
     \defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)
     \defgroup CMSIS_CoreDebug       Core Debug Registers (CoreDebug)
     \brief      Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR)
     \brief      Cortex-M0 Core Debug Registers (DCB registers, SHCSR, and DFSR)
@@ -487,7 +477,6 @@ typedef struct
  */
  */
 /*@} end of group CMSIS_CoreDebug */
 /*@} end of group CMSIS_CoreDebug */
 
 
-
 /** \ingroup    CMSIS_core_register
 /** \ingroup    CMSIS_core_register
     \defgroup   CMSIS_core_base     Core Definitions
     \defgroup   CMSIS_core_base     Core Definitions
     \brief      Definitions for base addresses, unions, and structures.
     \brief      Definitions for base addresses, unions, and structures.
@@ -495,20 +484,17 @@ typedef struct
  */
  */
 
 
 /* Memory mapping of Cortex-M0 Hardware */
 /* Memory mapping of Cortex-M0 Hardware */
-#define SCS_BASE            (0xE000E000UL)                            /*!< System Control Space Base Address */
-#define SysTick_BASE        (SCS_BASE +  0x0010UL)                    /*!< SysTick Base Address              */
-#define NVIC_BASE           (SCS_BASE +  0x0100UL)                    /*!< NVIC Base Address                 */
-#define SCB_BASE            (SCS_BASE +  0x0D00UL)                    /*!< System Control Block Base Address */
-
-#define SCB                 ((SCB_Type       *)     SCB_BASE      )   /*!< SCB configuration struct           */
-#define SysTick             ((SysTick_Type   *)     SysTick_BASE  )   /*!< SysTick configuration struct       */
-#define NVIC                ((NVIC_Type      *)     NVIC_BASE     )   /*!< NVIC configuration struct          */
+#define SCS_BASE (0xE000E000UL)            /*!< System Control Space Base Address */
+#define SysTick_BASE (SCS_BASE + 0x0010UL) /*!< SysTick Base Address              */
+#define NVIC_BASE (SCS_BASE + 0x0100UL)    /*!< NVIC Base Address                 */
+#define SCB_BASE (SCS_BASE + 0x0D00UL)     /*!< System Control Block Base Address */
 
 
+#define SCB ((SCB_Type *)SCB_BASE)             /*!< SCB configuration struct           */
+#define SysTick ((SysTick_Type *)SysTick_BASE) /*!< SysTick configuration struct       */
+#define NVIC ((NVIC_Type *)NVIC_BASE)          /*!< NVIC configuration struct          */
 
 
 /*@} */
 /*@} */
 
 
-
-
 /*******************************************************************************
 /*******************************************************************************
  *                Hardware Abstraction Layer
  *                Hardware Abstraction Layer
   Core Function Interface contains:
   Core Function Interface contains:
@@ -519,8 +505,6 @@ typedef struct
 /** \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference
 /** \defgroup CMSIS_Core_FunctionInterface Functions and Instructions Reference
 */
 */
 
 
-
-
 /* ##########################   NVIC functions  #################################### */
 /* ##########################   NVIC functions  #################################### */
 /** \ingroup  CMSIS_Core_FunctionInterface
 /** \ingroup  CMSIS_Core_FunctionInterface
     \defgroup CMSIS_Core_NVICFunctions NVIC Functions
     \defgroup CMSIS_Core_NVICFunctions NVIC Functions
@@ -530,36 +514,33 @@ typedef struct
 
 
 /* Interrupt Priorities are WORD accessible only under ARMv6M                   */
 /* Interrupt Priorities are WORD accessible only under ARMv6M                   */
 /* The following MACROS handle generation of the register offset and byte masks */
 /* The following MACROS handle generation of the register offset and byte masks */
-#define _BIT_SHIFT(IRQn)         (  (((uint32_t)(IRQn)       )    &  0x03) * 8 )
-#define _SHP_IDX(IRQn)           ( ((((uint32_t)(IRQn) & 0x0F)-8) >>    2)     )
-#define _IP_IDX(IRQn)            (   ((uint32_t)(IRQn)            >>    2)     )
+#define _BIT_SHIFT(IRQn) ((((uint32_t)(IRQn)) & 0x03) * 8)
+#define _SHP_IDX(IRQn) (((((uint32_t)(IRQn)&0x0F) - 8) >> 2))
+#define _IP_IDX(IRQn) (((uint32_t)(IRQn) >> 2))
 
 
-
-/** \brief  Enable External Interrupt
+    /** \brief  Enable External Interrupt
 
 
     The function enables a device-specific interrupt in the NVIC interrupt controller.
     The function enables a device-specific interrupt in the NVIC interrupt controller.
 
 
     \param [in]      IRQn  External interrupt number. Value cannot be negative.
     \param [in]      IRQn  External interrupt number. Value cannot be negative.
  */
  */
-__STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
-{
-  NVIC->ISER[0] = (1 << ((uint32_t)(IRQn) & 0x1F));
-}
+    __STATIC_INLINE void NVIC_EnableIRQ(IRQn_Type IRQn)
+    {
+        NVIC->ISER[0] = (1 << ((uint32_t)(IRQn)&0x1F));
+    }
 
 
-
-/** \brief  Disable External Interrupt
+    /** \brief  Disable External Interrupt
 
 
     The function disables a device-specific interrupt in the NVIC interrupt controller.
     The function disables a device-specific interrupt in the NVIC interrupt controller.
 
 
     \param [in]      IRQn  External interrupt number. Value cannot be negative.
     \param [in]      IRQn  External interrupt number. Value cannot be negative.
  */
  */
-__STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)
-{
-  NVIC->ICER[0] = (1 << ((uint32_t)(IRQn) & 0x1F));
-}
+    __STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)
+    {
+        NVIC->ICER[0] = (1 << ((uint32_t)(IRQn)&0x1F));
+    }
 
 
-
-/** \brief  Get Pending Interrupt
+    /** \brief  Get Pending Interrupt
 
 
     The function reads the pending register in the NVIC and returns the pending bit
     The function reads the pending register in the NVIC and returns the pending bit
     for the specified interrupt.
     for the specified interrupt.
@@ -569,37 +550,34 @@ __STATIC_INLINE void NVIC_DisableIRQ(IRQn_Type IRQn)
     \return             0  Interrupt status is not pending.
     \return             0  Interrupt status is not pending.
     \return             1  Interrupt status is pending.
     \return             1  Interrupt status is pending.
  */
  */
-__STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)
-{
-  return((uint32_t) ((NVIC->ISPR[0] & (1 << ((uint32_t)(IRQn) & 0x1F)))?1:0));
-}
+    __STATIC_INLINE uint32_t NVIC_GetPendingIRQ(IRQn_Type IRQn)
+    {
+        return ((uint32_t)((NVIC->ISPR[0] & (1 << ((uint32_t)(IRQn)&0x1F))) ? 1 : 0));
+    }
 
 
-
-/** \brief  Set Pending Interrupt
+    /** \brief  Set Pending Interrupt
 
 
     The function sets the pending bit of an external interrupt.
     The function sets the pending bit of an external interrupt.
 
 
     \param [in]      IRQn  Interrupt number. Value cannot be negative.
     \param [in]      IRQn  Interrupt number. Value cannot be negative.
  */
  */
-__STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)
-{
-  NVIC->ISPR[0] = (1 << ((uint32_t)(IRQn) & 0x1F));
-}
-
+    __STATIC_INLINE void NVIC_SetPendingIRQ(IRQn_Type IRQn)
+    {
+        NVIC->ISPR[0] = (1 << ((uint32_t)(IRQn)&0x1F));
+    }
 
 
-/** \brief  Clear Pending Interrupt
+    /** \brief  Clear Pending Interrupt
 
 
     The function clears the pending bit of an external interrupt.
     The function clears the pending bit of an external interrupt.
 
 
     \param [in]      IRQn  External interrupt number. Value cannot be negative.
     \param [in]      IRQn  External interrupt number. Value cannot be negative.
  */
  */
-__STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)
-{
-  NVIC->ICPR[0] = (1 << ((uint32_t)(IRQn) & 0x1F)); /* Clear pending interrupt */
-}
-
+    __STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)
+    {
+        NVIC->ICPR[0] = (1 << ((uint32_t)(IRQn)&0x1F)); /* Clear pending interrupt */
+    }
 
 
-/** \brief  Set Interrupt Priority
+    /** \brief  Set Interrupt Priority
 
 
     The function sets the priority of an interrupt.
     The function sets the priority of an interrupt.
 
 
@@ -608,18 +586,21 @@ __STATIC_INLINE void NVIC_ClearPendingIRQ(IRQn_Type IRQn)
     \param [in]      IRQn  Interrupt number.
     \param [in]      IRQn  Interrupt number.
     \param [in]  priority  Priority to set.
     \param [in]  priority  Priority to set.
  */
  */
-__STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
-{
-  if(IRQn < 0) {
-    SCB->SHP[_SHP_IDX(IRQn)] = (SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) |
-        (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); }
-  else {
-    NVIC->IP[_IP_IDX(IRQn)] = (NVIC->IP[_IP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) |
-        (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn)); }
-}
-
-
-/** \brief  Get Interrupt Priority
+    __STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
+    {
+        if (IRQn < 0)
+        {
+            SCB->SHP[_SHP_IDX(IRQn)] = (SCB->SHP[_SHP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) |
+                                       (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn));
+        }
+        else
+        {
+            NVIC->IP[_IP_IDX(IRQn)] = (NVIC->IP[_IP_IDX(IRQn)] & ~(0xFF << _BIT_SHIFT(IRQn))) |
+                                      (((priority << (8 - __NVIC_PRIO_BITS)) & 0xFF) << _BIT_SHIFT(IRQn));
+        }
+    }
+
+    /** \brief  Get Interrupt Priority
 
 
     The function reads the priority of an interrupt. The interrupt
     The function reads the priority of an interrupt. The interrupt
     number can be positive to specify an external (device specific)
     number can be positive to specify an external (device specific)
@@ -630,36 +611,38 @@ __STATIC_INLINE void NVIC_SetPriority(IRQn_Type IRQn, uint32_t priority)
     \return             Interrupt Priority. Value is aligned automatically to the implemented
     \return             Interrupt Priority. Value is aligned automatically to the implemented
                         priority bits of the microcontroller.
                         priority bits of the microcontroller.
  */
  */
-__STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn)
-{
-
-  if(IRQn < 0) {
-    return((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for Cortex-M0 system interrupts */
-  else {
-    return((uint32_t)(((NVIC->IP[ _IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn) ) & 0xFF) >> (8 - __NVIC_PRIO_BITS)));  } /* get priority for device specific interrupts  */
-}
+    __STATIC_INLINE uint32_t NVIC_GetPriority(IRQn_Type IRQn)
+    {
 
 
+        if (IRQn < 0)
+        {
+            return ((uint32_t)(((SCB->SHP[_SHP_IDX(IRQn)] >> _BIT_SHIFT(IRQn)) & 0xFF) >> (8 - __NVIC_PRIO_BITS)));
+        } /* get priority for Cortex-M0 system interrupts */
+        else
+        {
+            return ((uint32_t)(((NVIC->IP[_IP_IDX(IRQn)] >> _BIT_SHIFT(IRQn)) & 0xFF) >> (8 - __NVIC_PRIO_BITS)));
+        } /* get priority for device specific interrupts  */
+    }
 
 
-/** \brief  System Reset
+    /** \brief  System Reset
 
 
     The function initiates a system reset request to reset the MCU.
     The function initiates a system reset request to reset the MCU.
  */
  */
-__STATIC_INLINE void NVIC_SystemReset(void)
-{
-  __DSB();                                                     /* Ensure all outstanding memory accesses included
+    __STATIC_INLINE void NVIC_SystemReset(void)
+    {
+        __DSB(); /* Ensure all outstanding memory accesses included
                                                                   buffered write are completed before reset */
                                                                   buffered write are completed before reset */
-  SCB->AIRCR  = ((0x5FA << SCB_AIRCR_VECTKEY_Pos)      |
-                 SCB_AIRCR_SYSRESETREQ_Msk);
-  __DSB();                                                     /* Ensure completion of memory access */
-  while(1);                                                    /* wait until reset */
-}
+        SCB->AIRCR = ((0x5FA << SCB_AIRCR_VECTKEY_Pos) |
+                      SCB_AIRCR_SYSRESETREQ_Msk);
+        __DSB(); /* Ensure completion of memory access */
+        while (1)
+            ; /* wait until reset */
+    }
 
 
-/*@} end of CMSIS_Core_NVICFunctions */
+    /*@} end of CMSIS_Core_NVICFunctions */
 
 
-
-
-/* ##################################    SysTick function  ############################################ */
-/** \ingroup  CMSIS_Core_FunctionInterface
+    /* ##################################    SysTick function  ############################################ */
+    /** \ingroup  CMSIS_Core_FunctionInterface
     \defgroup CMSIS_Core_SysTickFunctions SysTick Functions
     \defgroup CMSIS_Core_SysTickFunctions SysTick Functions
     \brief      Functions that configure the System.
     \brief      Functions that configure the System.
   @{
   @{
@@ -667,7 +650,7 @@ __STATIC_INLINE void NVIC_SystemReset(void)
 
 
 #if (__Vendor_SysTickConfig == 0)
 #if (__Vendor_SysTickConfig == 0)
 
 
-/** \brief  System Tick Configuration
+    /** \brief  System Tick Configuration
 
 
     The function initializes the System Timer and its interrupt, and starts the System Tick Timer.
     The function initializes the System Timer and its interrupt, and starts the System Tick Timer.
     Counter is in free running mode to generate periodic interrupts.
     Counter is in free running mode to generate periodic interrupts.
@@ -682,25 +665,23 @@ __STATIC_INLINE void NVIC_SystemReset(void)
     must contain a vendor-specific implementation of this function.
     must contain a vendor-specific implementation of this function.
 
 
  */
  */
-__STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
-{
-  if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk)  return (1);      /* Reload value impossible */
-
-  SysTick->LOAD  = ticks - 1;                                  /* set reload register */
-  NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1);  /* set Priority for Systick Interrupt */
-  SysTick->VAL   = 0;                                          /* Load the SysTick Counter Value */
-  SysTick->CTRL  = SysTick_CTRL_CLKSOURCE_Msk |
-                   SysTick_CTRL_TICKINT_Msk   |
-                   SysTick_CTRL_ENABLE_Msk;                    /* Enable SysTick IRQ and SysTick Timer */
-  return (0);                                                  /* Function successful */
-}
+    __STATIC_INLINE uint32_t SysTick_Config(uint32_t ticks)
+    {
+        if ((ticks - 1) > SysTick_LOAD_RELOAD_Msk)
+            return (1); /* Reload value impossible */
+
+        SysTick->LOAD = ticks - 1;                                   /* set reload register */
+        NVIC_SetPriority(SysTick_IRQn, (1 << __NVIC_PRIO_BITS) - 1); /* set Priority for Systick Interrupt */
+        SysTick->VAL = 0;                                            /* Load the SysTick Counter Value */
+        SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk |
+                        SysTick_CTRL_TICKINT_Msk |
+                        SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */
+        return (0);                              /* Function successful */
+    }
 
 
 #endif
 #endif
 
 
-/*@} end of CMSIS_Core_SysTickFunctions */
-
-
-
+    /*@} end of CMSIS_Core_SysTickFunctions */
 
 
 #ifdef __cplusplus
 #ifdef __cplusplus
 }
 }

Fișier diff suprimat deoarece este prea mare
+ 373 - 394
bsp/swm320/libraries/CMSIS/CoreSupport/core_cm0plus.h


Fișier diff suprimat deoarece este prea mare
+ 762 - 778
bsp/swm320/libraries/CMSIS/CoreSupport/core_cm3.h


Fișier diff suprimat deoarece este prea mare
+ 869 - 886
bsp/swm320/libraries/CMSIS/CoreSupport/core_cm4.h


Fișier diff suprimat deoarece este prea mare
+ 1001 - 1018
bsp/swm320/libraries/CMSIS/CoreSupport/core_cm7.h


+ 163 - 165
bsp/swm320/libraries/CMSIS/CoreSupport/core_cmFunc.h

@@ -1,4 +1,4 @@
-/**************************************************************************//**
+/**************************************************************************/ /**
  * @file     core_cmFunc.h
  * @file     core_cmFunc.h
  * @brief    CMSIS Cortex-M Core Function Access Header File
  * @brief    CMSIS Cortex-M Core Function Access Header File
  * @version  V4.00
  * @version  V4.00
@@ -34,22 +34,20 @@
    POSSIBILITY OF SUCH DAMAGE.
    POSSIBILITY OF SUCH DAMAGE.
    ---------------------------------------------------------------------------*/
    ---------------------------------------------------------------------------*/
 
 
-
 #ifndef __CORE_CMFUNC_H
 #ifndef __CORE_CMFUNC_H
 #define __CORE_CMFUNC_H
 #define __CORE_CMFUNC_H
 
 
-
 /* ###########################  Core Function Access  ########################### */
 /* ###########################  Core Function Access  ########################### */
 /** \ingroup  CMSIS_Core_FunctionInterface
 /** \ingroup  CMSIS_Core_FunctionInterface
     \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
     \defgroup CMSIS_Core_RegAccFunctions CMSIS Core Register Access Functions
   @{
   @{
  */
  */
 
 
-#if   defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/
+#if defined(__CC_ARM) /*------------------RealView Compiler -----------------*/
 /* ARM armcc specific functions */
 /* ARM armcc specific functions */
 
 
 #if (__ARMCC_VERSION < 400677)
 #if (__ARMCC_VERSION < 400677)
-  #error "Please use ARM Compiler Toolchain V4.0.677 or later!"
+#error "Please use ARM Compiler Toolchain V4.0.677 or later!"
 #endif
 #endif
 
 
 /* intrinsic void __enable_irq();     */
 /* intrinsic void __enable_irq();     */
@@ -63,11 +61,10 @@
  */
  */
 __STATIC_INLINE uint32_t __get_CONTROL(void)
 __STATIC_INLINE uint32_t __get_CONTROL(void)
 {
 {
-  register uint32_t __regControl         __ASM("control");
-  return(__regControl);
+    register uint32_t __regControl __ASM("control");
+    return (__regControl);
 }
 }
 
 
-
 /** \brief  Set Control Register
 /** \brief  Set Control Register
 
 
     This function writes the given value to the Control Register.
     This function writes the given value to the Control Register.
@@ -76,11 +73,10 @@ __STATIC_INLINE uint32_t __get_CONTROL(void)
  */
  */
 __STATIC_INLINE void __set_CONTROL(uint32_t control)
 __STATIC_INLINE void __set_CONTROL(uint32_t control)
 {
 {
-  register uint32_t __regControl         __ASM("control");
-  __regControl = control;
+    register uint32_t __regControl __ASM("control");
+    __regControl = control;
 }
 }
 
 
-
 /** \brief  Get IPSR Register
 /** \brief  Get IPSR Register
 
 
     This function returns the content of the IPSR Register.
     This function returns the content of the IPSR Register.
@@ -89,11 +85,10 @@ __STATIC_INLINE void __set_CONTROL(uint32_t control)
  */
  */
 __STATIC_INLINE uint32_t __get_IPSR(void)
 __STATIC_INLINE uint32_t __get_IPSR(void)
 {
 {
-  register uint32_t __regIPSR          __ASM("ipsr");
-  return(__regIPSR);
+    register uint32_t __regIPSR __ASM("ipsr");
+    return (__regIPSR);
 }
 }
 
 
-
 /** \brief  Get APSR Register
 /** \brief  Get APSR Register
 
 
     This function returns the content of the APSR Register.
     This function returns the content of the APSR Register.
@@ -102,11 +97,10 @@ __STATIC_INLINE uint32_t __get_IPSR(void)
  */
  */
 __STATIC_INLINE uint32_t __get_APSR(void)
 __STATIC_INLINE uint32_t __get_APSR(void)
 {
 {
-  register uint32_t __regAPSR          __ASM("apsr");
-  return(__regAPSR);
+    register uint32_t __regAPSR __ASM("apsr");
+    return (__regAPSR);
 }
 }
 
 
-
 /** \brief  Get xPSR Register
 /** \brief  Get xPSR Register
 
 
     This function returns the content of the xPSR Register.
     This function returns the content of the xPSR Register.
@@ -115,11 +109,10 @@ __STATIC_INLINE uint32_t __get_APSR(void)
  */
  */
 __STATIC_INLINE uint32_t __get_xPSR(void)
 __STATIC_INLINE uint32_t __get_xPSR(void)
 {
 {
-  register uint32_t __regXPSR          __ASM("xpsr");
-  return(__regXPSR);
+    register uint32_t __regXPSR __ASM("xpsr");
+    return (__regXPSR);
 }
 }
 
 
-
 /** \brief  Get Process Stack Pointer
 /** \brief  Get Process Stack Pointer
 
 
     This function returns the current value of the Process Stack Pointer (PSP).
     This function returns the current value of the Process Stack Pointer (PSP).
@@ -128,11 +121,10 @@ __STATIC_INLINE uint32_t __get_xPSR(void)
  */
  */
 __STATIC_INLINE uint32_t __get_PSP(void)
 __STATIC_INLINE uint32_t __get_PSP(void)
 {
 {
-  register uint32_t __regProcessStackPointer  __ASM("psp");
-  return(__regProcessStackPointer);
+    register uint32_t __regProcessStackPointer __ASM("psp");
+    return (__regProcessStackPointer);
 }
 }
 
 
-
 /** \brief  Set Process Stack Pointer
 /** \brief  Set Process Stack Pointer
 
 
     This function assigns the given value to the Process Stack Pointer (PSP).
     This function assigns the given value to the Process Stack Pointer (PSP).
@@ -141,11 +133,10 @@ __STATIC_INLINE uint32_t __get_PSP(void)
  */
  */
 __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
 __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
 {
 {
-  register uint32_t __regProcessStackPointer  __ASM("psp");
-  __regProcessStackPointer = topOfProcStack;
+    register uint32_t __regProcessStackPointer __ASM("psp");
+    __regProcessStackPointer = topOfProcStack;
 }
 }
 
 
-
 /** \brief  Get Main Stack Pointer
 /** \brief  Get Main Stack Pointer
 
 
     This function returns the current value of the Main Stack Pointer (MSP).
     This function returns the current value of the Main Stack Pointer (MSP).
@@ -154,11 +145,10 @@ __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
  */
  */
 __STATIC_INLINE uint32_t __get_MSP(void)
 __STATIC_INLINE uint32_t __get_MSP(void)
 {
 {
-  register uint32_t __regMainStackPointer     __ASM("msp");
-  return(__regMainStackPointer);
+    register uint32_t __regMainStackPointer __ASM("msp");
+    return (__regMainStackPointer);
 }
 }
 
 
-
 /** \brief  Set Main Stack Pointer
 /** \brief  Set Main Stack Pointer
 
 
     This function assigns the given value to the Main Stack Pointer (MSP).
     This function assigns the given value to the Main Stack Pointer (MSP).
@@ -167,11 +157,10 @@ __STATIC_INLINE uint32_t __get_MSP(void)
  */
  */
 __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
 __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
 {
 {
-  register uint32_t __regMainStackPointer     __ASM("msp");
-  __regMainStackPointer = topOfMainStack;
+    register uint32_t __regMainStackPointer __ASM("msp");
+    __regMainStackPointer = topOfMainStack;
 }
 }
 
 
-
 /** \brief  Get Priority Mask
 /** \brief  Get Priority Mask
 
 
     This function returns the current state of the priority mask bit from the Priority Mask Register.
     This function returns the current state of the priority mask bit from the Priority Mask Register.
@@ -180,11 +169,10 @@ __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
  */
  */
 __STATIC_INLINE uint32_t __get_PRIMASK(void)
 __STATIC_INLINE uint32_t __get_PRIMASK(void)
 {
 {
-  register uint32_t __regPriMask         __ASM("primask");
-  return(__regPriMask);
+    register uint32_t __regPriMask __ASM("primask");
+    return (__regPriMask);
 }
 }
 
 
-
 /** \brief  Set Priority Mask
 /** \brief  Set Priority Mask
 
 
     This function assigns the given value to the Priority Mask Register.
     This function assigns the given value to the Priority Mask Register.
@@ -193,28 +181,25 @@ __STATIC_INLINE uint32_t __get_PRIMASK(void)
  */
  */
 __STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
 __STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
 {
 {
-  register uint32_t __regPriMask         __ASM("primask");
-  __regPriMask = (priMask);
+    register uint32_t __regPriMask __ASM("primask");
+    __regPriMask = (priMask);
 }
 }
 
 
-
-#if       (__CORTEX_M >= 0x03) || (__CORTEX_SC >= 300)
+#if (__CORTEX_M >= 0x03) || (__CORTEX_SC >= 300)
 
 
 /** \brief  Enable FIQ
 /** \brief  Enable FIQ
 
 
     This function enables FIQ interrupts by clearing the F-bit in the CPSR.
     This function enables FIQ interrupts by clearing the F-bit in the CPSR.
     Can only be executed in Privileged modes.
     Can only be executed in Privileged modes.
  */
  */
-#define __enable_fault_irq                __enable_fiq
-
+#define __enable_fault_irq __enable_fiq
 
 
 /** \brief  Disable FIQ
 /** \brief  Disable FIQ
 
 
     This function disables FIQ interrupts by setting the F-bit in the CPSR.
     This function disables FIQ interrupts by setting the F-bit in the CPSR.
     Can only be executed in Privileged modes.
     Can only be executed in Privileged modes.
  */
  */
-#define __disable_fault_irq               __disable_fiq
-
+#define __disable_fault_irq __disable_fiq
 
 
 /** \brief  Get Base Priority
 /** \brief  Get Base Priority
 
 
@@ -222,13 +207,12 @@ __STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
 
 
     \return               Base Priority register value
     \return               Base Priority register value
  */
  */
-__STATIC_INLINE uint32_t  __get_BASEPRI(void)
+__STATIC_INLINE uint32_t __get_BASEPRI(void)
 {
 {
-  register uint32_t __regBasePri         __ASM("basepri");
-  return(__regBasePri);
+    register uint32_t __regBasePri __ASM("basepri");
+    return (__regBasePri);
 }
 }
 
 
-
 /** \brief  Set Base Priority
 /** \brief  Set Base Priority
 
 
     This function assigns the given value to the Base Priority register.
     This function assigns the given value to the Base Priority register.
@@ -237,11 +221,10 @@ __STATIC_INLINE uint32_t  __get_BASEPRI(void)
  */
  */
 __STATIC_INLINE void __set_BASEPRI(uint32_t basePri)
 __STATIC_INLINE void __set_BASEPRI(uint32_t basePri)
 {
 {
-  register uint32_t __regBasePri         __ASM("basepri");
-  __regBasePri = (basePri & 0xff);
+    register uint32_t __regBasePri __ASM("basepri");
+    __regBasePri = (basePri & 0xff);
 }
 }
 
 
-
 /** \brief  Get Fault Mask
 /** \brief  Get Fault Mask
 
 
     This function returns the current value of the Fault Mask register.
     This function returns the current value of the Fault Mask register.
@@ -250,11 +233,10 @@ __STATIC_INLINE void __set_BASEPRI(uint32_t basePri)
  */
  */
 __STATIC_INLINE uint32_t __get_FAULTMASK(void)
 __STATIC_INLINE uint32_t __get_FAULTMASK(void)
 {
 {
-  register uint32_t __regFaultMask       __ASM("faultmask");
-  return(__regFaultMask);
+    register uint32_t __regFaultMask __ASM("faultmask");
+    return (__regFaultMask);
 }
 }
 
 
-
 /** \brief  Set Fault Mask
 /** \brief  Set Fault Mask
 
 
     This function assigns the given value to the Fault Mask register.
     This function assigns the given value to the Fault Mask register.
@@ -263,14 +245,13 @@ __STATIC_INLINE uint32_t __get_FAULTMASK(void)
  */
  */
 __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
 __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
 {
 {
-  register uint32_t __regFaultMask       __ASM("faultmask");
-  __regFaultMask = (faultMask & (uint32_t)1);
+    register uint32_t __regFaultMask __ASM("faultmask");
+    __regFaultMask = (faultMask & (uint32_t)1);
 }
 }
 
 
 #endif /* (__CORTEX_M >= 0x03) || (__CORTEX_SC >= 300) */
 #endif /* (__CORTEX_M >= 0x03) || (__CORTEX_SC >= 300) */
 
 
-
-#if       (__CORTEX_M == 0x04) || (__CORTEX_M == 0x07)
+#if (__CORTEX_M == 0x04) || (__CORTEX_M == 0x07)
 
 
 /** \brief  Get FPSCR
 /** \brief  Get FPSCR
 
 
@@ -281,14 +262,13 @@ __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
 __STATIC_INLINE uint32_t __get_FPSCR(void)
 __STATIC_INLINE uint32_t __get_FPSCR(void)
 {
 {
 #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
 #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
-  register uint32_t __regfpscr         __ASM("fpscr");
-  return(__regfpscr);
+    register uint32_t __regfpscr __ASM("fpscr");
+    return (__regfpscr);
 #else
 #else
-   return(0);
+    return (0);
 #endif
 #endif
 }
 }
 
 
-
 /** \brief  Set FPSCR
 /** \brief  Set FPSCR
 
 
     This function assigns the given value to the Floating Point Status/Control register.
     This function assigns the given value to the Floating Point Status/Control register.
@@ -298,15 +278,14 @@ __STATIC_INLINE uint32_t __get_FPSCR(void)
 __STATIC_INLINE void __set_FPSCR(uint32_t fpscr)
 __STATIC_INLINE void __set_FPSCR(uint32_t fpscr)
 {
 {
 #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
 #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
-  register uint32_t __regfpscr         __ASM("fpscr");
-  __regfpscr = (fpscr);
+    register uint32_t __regfpscr __ASM("fpscr");
+    __regfpscr = (fpscr);
 #endif
 #endif
 }
 }
 
 
 #endif /* (__CORTEX_M == 0x04) || (__CORTEX_M == 0x07) */
 #endif /* (__CORTEX_M == 0x04) || (__CORTEX_M == 0x07) */
 
 
-
-#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/
+#elif defined(__GNUC__) /*------------------ GNU Compiler ---------------------*/
 /* GNU gcc specific functions */
 /* GNU gcc specific functions */
 
 
 /** \brief  Enable IRQ Interrupts
 /** \brief  Enable IRQ Interrupts
@@ -314,257 +293,277 @@ __STATIC_INLINE void __set_FPSCR(uint32_t fpscr)
   This function enables IRQ interrupts by clearing the I-bit in the CPSR.
   This function enables IRQ interrupts by clearing the I-bit in the CPSR.
   Can only be executed in Privileged modes.
   Can only be executed in Privileged modes.
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_irq(void)
+__attribute__((always_inline)) __STATIC_INLINE void __enable_irq(void)
 {
 {
-  __ASM volatile ("cpsie i" : : : "memory");
+    __ASM volatile("cpsie i"
+                   :
+                   :
+                   : "memory");
 }
 }
 
 
-
 /** \brief  Disable IRQ Interrupts
 /** \brief  Disable IRQ Interrupts
 
 
   This function disables IRQ interrupts by setting the I-bit in the CPSR.
   This function disables IRQ interrupts by setting the I-bit in the CPSR.
   Can only be executed in Privileged modes.
   Can only be executed in Privileged modes.
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void)
+__attribute__((always_inline)) __STATIC_INLINE void __disable_irq(void)
 {
 {
-  __ASM volatile ("cpsid i" : : : "memory");
+    __ASM volatile("cpsid i"
+                   :
+                   :
+                   : "memory");
 }
 }
 
 
-
 /** \brief  Get Control Register
 /** \brief  Get Control Register
 
 
     This function returns the content of the Control Register.
     This function returns the content of the Control Register.
 
 
     \return               Control Register value
     \return               Control Register value
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_CONTROL(void)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_CONTROL(void)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("MRS %0, control" : "=r" (result) );
-  return(result);
+    __ASM volatile("MRS %0, control"
+                   : "=r"(result));
+    return (result);
 }
 }
 
 
-
 /** \brief  Set Control Register
 /** \brief  Set Control Register
 
 
     This function writes the given value to the Control Register.
     This function writes the given value to the Control Register.
 
 
     \param [in]    control  Control Register value to set
     \param [in]    control  Control Register value to set
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_CONTROL(uint32_t control)
+__attribute__((always_inline)) __STATIC_INLINE void __set_CONTROL(uint32_t control)
 {
 {
-  __ASM volatile ("MSR control, %0" : : "r" (control) : "memory");
+    __ASM volatile("MSR control, %0"
+                   :
+                   : "r"(control)
+                   : "memory");
 }
 }
 
 
-
 /** \brief  Get IPSR Register
 /** \brief  Get IPSR Register
 
 
     This function returns the content of the IPSR Register.
     This function returns the content of the IPSR Register.
 
 
     \return               IPSR Register value
     \return               IPSR Register value
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_IPSR(void)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_IPSR(void)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("MRS %0, ipsr" : "=r" (result) );
-  return(result);
+    __ASM volatile("MRS %0, ipsr"
+                   : "=r"(result));
+    return (result);
 }
 }
 
 
-
 /** \brief  Get APSR Register
 /** \brief  Get APSR Register
 
 
     This function returns the content of the APSR Register.
     This function returns the content of the APSR Register.
 
 
     \return               APSR Register value
     \return               APSR Register value
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_APSR(void)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_APSR(void)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("MRS %0, apsr" : "=r" (result) );
-  return(result);
+    __ASM volatile("MRS %0, apsr"
+                   : "=r"(result));
+    return (result);
 }
 }
 
 
-
 /** \brief  Get xPSR Register
 /** \brief  Get xPSR Register
 
 
     This function returns the content of the xPSR Register.
     This function returns the content of the xPSR Register.
 
 
     \return               xPSR Register value
     \return               xPSR Register value
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_xPSR(void)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_xPSR(void)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("MRS %0, xpsr" : "=r" (result) );
-  return(result);
+    __ASM volatile("MRS %0, xpsr"
+                   : "=r"(result));
+    return (result);
 }
 }
 
 
-
 /** \brief  Get Process Stack Pointer
 /** \brief  Get Process Stack Pointer
 
 
     This function returns the current value of the Process Stack Pointer (PSP).
     This function returns the current value of the Process Stack Pointer (PSP).
 
 
     \return               PSP Register value
     \return               PSP Register value
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PSP(void)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_PSP(void)
 {
 {
-  register uint32_t result;
+    register uint32_t result;
 
 
-  __ASM volatile ("MRS %0, psp\n"  : "=r" (result) );
-  return(result);
+    __ASM volatile("MRS %0, psp\n"
+                   : "=r"(result));
+    return (result);
 }
 }
 
 
-
 /** \brief  Set Process Stack Pointer
 /** \brief  Set Process Stack Pointer
 
 
     This function assigns the given value to the Process Stack Pointer (PSP).
     This function assigns the given value to the Process Stack Pointer (PSP).
 
 
     \param [in]    topOfProcStack  Process Stack Pointer value to set
     \param [in]    topOfProcStack  Process Stack Pointer value to set
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
+__attribute__((always_inline)) __STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
 {
 {
-  __ASM volatile ("MSR psp, %0\n" : : "r" (topOfProcStack) : "sp");
+    __ASM volatile("MSR psp, %0\n"
+                   :
+                   : "r"(topOfProcStack)
+                   : "sp");
 }
 }
 
 
-
 /** \brief  Get Main Stack Pointer
 /** \brief  Get Main Stack Pointer
 
 
     This function returns the current value of the Main Stack Pointer (MSP).
     This function returns the current value of the Main Stack Pointer (MSP).
 
 
     \return               MSP Register value
     \return               MSP Register value
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_MSP(void)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_MSP(void)
 {
 {
-  register uint32_t result;
+    register uint32_t result;
 
 
-  __ASM volatile ("MRS %0, msp\n" : "=r" (result) );
-  return(result);
+    __ASM volatile("MRS %0, msp\n"
+                   : "=r"(result));
+    return (result);
 }
 }
 
 
-
 /** \brief  Set Main Stack Pointer
 /** \brief  Set Main Stack Pointer
 
 
     This function assigns the given value to the Main Stack Pointer (MSP).
     This function assigns the given value to the Main Stack Pointer (MSP).
 
 
     \param [in]    topOfMainStack  Main Stack Pointer value to set
     \param [in]    topOfMainStack  Main Stack Pointer value to set
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
+__attribute__((always_inline)) __STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
 {
 {
-  __ASM volatile ("MSR msp, %0\n" : : "r" (topOfMainStack) : "sp");
+    __ASM volatile("MSR msp, %0\n"
+                   :
+                   : "r"(topOfMainStack)
+                   : "sp");
 }
 }
 
 
-
 /** \brief  Get Priority Mask
 /** \brief  Get Priority Mask
 
 
     This function returns the current state of the priority mask bit from the Priority Mask Register.
     This function returns the current state of the priority mask bit from the Priority Mask Register.
 
 
     \return               Priority Mask value
     \return               Priority Mask value
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_PRIMASK(void)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_PRIMASK(void)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("MRS %0, primask" : "=r" (result) );
-  return(result);
+    __ASM volatile("MRS %0, primask"
+                   : "=r"(result));
+    return (result);
 }
 }
 
 
-
 /** \brief  Set Priority Mask
 /** \brief  Set Priority Mask
 
 
     This function assigns the given value to the Priority Mask Register.
     This function assigns the given value to the Priority Mask Register.
 
 
     \param [in]    priMask  Priority Mask
     \param [in]    priMask  Priority Mask
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
+__attribute__((always_inline)) __STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
 {
 {
-  __ASM volatile ("MSR primask, %0" : : "r" (priMask) : "memory");
+    __ASM volatile("MSR primask, %0"
+                   :
+                   : "r"(priMask)
+                   : "memory");
 }
 }
 
 
-
-#if       (__CORTEX_M >= 0x03)
+#if (__CORTEX_M >= 0x03)
 
 
 /** \brief  Enable FIQ
 /** \brief  Enable FIQ
 
 
     This function enables FIQ interrupts by clearing the F-bit in the CPSR.
     This function enables FIQ interrupts by clearing the F-bit in the CPSR.
     Can only be executed in Privileged modes.
     Can only be executed in Privileged modes.
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __enable_fault_irq(void)
+__attribute__((always_inline)) __STATIC_INLINE void __enable_fault_irq(void)
 {
 {
-  __ASM volatile ("cpsie f" : : : "memory");
+    __ASM volatile("cpsie f"
+                   :
+                   :
+                   : "memory");
 }
 }
 
 
-
 /** \brief  Disable FIQ
 /** \brief  Disable FIQ
 
 
     This function disables FIQ interrupts by setting the F-bit in the CPSR.
     This function disables FIQ interrupts by setting the F-bit in the CPSR.
     Can only be executed in Privileged modes.
     Can only be executed in Privileged modes.
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_fault_irq(void)
+__attribute__((always_inline)) __STATIC_INLINE void __disable_fault_irq(void)
 {
 {
-  __ASM volatile ("cpsid f" : : : "memory");
+    __ASM volatile("cpsid f"
+                   :
+                   :
+                   : "memory");
 }
 }
 
 
-
 /** \brief  Get Base Priority
 /** \brief  Get Base Priority
 
 
     This function returns the current value of the Base Priority register.
     This function returns the current value of the Base Priority register.
 
 
     \return               Base Priority register value
     \return               Base Priority register value
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_BASEPRI(void)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_BASEPRI(void)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("MRS %0, basepri_max" : "=r" (result) );
-  return(result);
+    __ASM volatile("MRS %0, basepri_max"
+                   : "=r"(result));
+    return (result);
 }
 }
 
 
-
 /** \brief  Set Base Priority
 /** \brief  Set Base Priority
 
 
     This function assigns the given value to the Base Priority register.
     This function assigns the given value to the Base Priority register.
 
 
     \param [in]    basePri  Base Priority value to set
     \param [in]    basePri  Base Priority value to set
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_BASEPRI(uint32_t value)
+__attribute__((always_inline)) __STATIC_INLINE void __set_BASEPRI(uint32_t value)
 {
 {
-  __ASM volatile ("MSR basepri, %0" : : "r" (value) : "memory");
+    __ASM volatile("MSR basepri, %0"
+                   :
+                   : "r"(value)
+                   : "memory");
 }
 }
 
 
-
 /** \brief  Get Fault Mask
 /** \brief  Get Fault Mask
 
 
     This function returns the current value of the Fault Mask register.
     This function returns the current value of the Fault Mask register.
 
 
     \return               Fault Mask register value
     \return               Fault Mask register value
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FAULTMASK(void)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_FAULTMASK(void)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("MRS %0, faultmask" : "=r" (result) );
-  return(result);
+    __ASM volatile("MRS %0, faultmask"
+                   : "=r"(result));
+    return (result);
 }
 }
 
 
-
 /** \brief  Set Fault Mask
 /** \brief  Set Fault Mask
 
 
     This function assigns the given value to the Fault Mask register.
     This function assigns the given value to the Fault Mask register.
 
 
     \param [in]    faultMask  Fault Mask value to set
     \param [in]    faultMask  Fault Mask value to set
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
+__attribute__((always_inline)) __STATIC_INLINE void __set_FAULTMASK(uint32_t faultMask)
 {
 {
-  __ASM volatile ("MSR faultmask, %0" : : "r" (faultMask) : "memory");
+    __ASM volatile("MSR faultmask, %0"
+                   :
+                   : "r"(faultMask)
+                   : "memory");
 }
 }
 
 
 #endif /* (__CORTEX_M >= 0x03) */
 #endif /* (__CORTEX_M >= 0x03) */
 
 
-
-#if       (__CORTEX_M == 0x04) || (__CORTEX_M == 0x07)
+#if (__CORTEX_M == 0x04) || (__CORTEX_M == 0x07)
 
 
 /** \brief  Get FPSCR
 /** \brief  Get FPSCR
 
 
@@ -572,52 +571,52 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FAULTMASK(uint32_t
 
 
     \return               Floating Point Status/Control register value
     \return               Floating Point Status/Control register value
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __get_FPSCR(void)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __get_FPSCR(void)
 {
 {
 #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
 #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
-  uint32_t result;
-
-  /* Empty asm statement works as a scheduling barrier */
-  __ASM volatile ("");
-  __ASM volatile ("VMRS %0, fpscr" : "=r" (result) );
-  __ASM volatile ("");
-  return(result);
+    uint32_t result;
+
+    /* Empty asm statement works as a scheduling barrier */
+    __ASM volatile("");
+    __ASM volatile("VMRS %0, fpscr"
+                   : "=r"(result));
+    __ASM volatile("");
+    return (result);
 #else
 #else
-   return(0);
+    return (0);
 #endif
 #endif
 }
 }
 
 
-
 /** \brief  Set FPSCR
 /** \brief  Set FPSCR
 
 
     This function assigns the given value to the Floating Point Status/Control register.
     This function assigns the given value to the Floating Point Status/Control register.
 
 
     \param [in]    fpscr  Floating Point Status/Control value to set
     \param [in]    fpscr  Floating Point Status/Control value to set
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FPSCR(uint32_t fpscr)
+__attribute__((always_inline)) __STATIC_INLINE void __set_FPSCR(uint32_t fpscr)
 {
 {
 #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
 #if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
-  /* Empty asm statement works as a scheduling barrier */
-  __ASM volatile ("");
-  __ASM volatile ("VMSR fpscr, %0" : : "r" (fpscr) : "vfpcc");
-  __ASM volatile ("");
+    /* Empty asm statement works as a scheduling barrier */
+    __ASM volatile("");
+    __ASM volatile("VMSR fpscr, %0"
+                   :
+                   : "r"(fpscr)
+                   : "vfpcc");
+    __ASM volatile("");
 #endif
 #endif
 }
 }
 
 
 #endif /* (__CORTEX_M == 0x04) || (__CORTEX_M == 0x07) */
 #endif /* (__CORTEX_M == 0x04) || (__CORTEX_M == 0x07) */
 
 
-
-#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/
+#elif defined(__ICCARM__) /*------------------ ICC Compiler -------------------*/
 /* IAR iccarm specific functions */
 /* IAR iccarm specific functions */
 #include <cmsis_iar.h>
 #include <cmsis_iar.h>
 
 
-
-#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/
+#elif defined(__TMS470__) /*---------------- TI CCS Compiler ------------------*/
 /* TI CCS specific functions */
 /* TI CCS specific functions */
 #include <cmsis_ccs.h>
 #include <cmsis_ccs.h>
 
 
-
-#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/
+#elif defined(__TASKING__) /*------------------ TASKING Compiler --------------*/
 /* TASKING carm specific functions */
 /* TASKING carm specific functions */
 /*
 /*
  * The CMSIS functions have been implemented as intrinsics in the compiler.
  * The CMSIS functions have been implemented as intrinsics in the compiler.
@@ -625,8 +624,7 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE void __set_FPSCR(uint32_t fps
  * Including the CMSIS ones.
  * Including the CMSIS ones.
  */
  */
 
 
-
-#elif defined ( __CSMC__ ) /*------------------ COSMIC Compiler -------------------*/
+#elif defined(__CSMC__) /*------------------ COSMIC Compiler -------------------*/
 /* Cosmic specific functions */
 /* Cosmic specific functions */
 #include <cmsis_csm.h>
 #include <cmsis_csm.h>
 
 

+ 200 - 210
bsp/swm320/libraries/CMSIS/CoreSupport/core_cmInstr.h

@@ -1,4 +1,4 @@
-/**************************************************************************//**
+/**************************************************************************/ /**
  * @file     core_cmInstr.h
  * @file     core_cmInstr.h
  * @brief    CMSIS Cortex-M Core Instruction Access Header File
  * @brief    CMSIS Cortex-M Core Instruction Access Header File
  * @version  V4.00
  * @version  V4.00
@@ -34,54 +34,47 @@
    POSSIBILITY OF SUCH DAMAGE.
    POSSIBILITY OF SUCH DAMAGE.
    ---------------------------------------------------------------------------*/
    ---------------------------------------------------------------------------*/
 
 
-
 #ifndef __CORE_CMINSTR_H
 #ifndef __CORE_CMINSTR_H
 #define __CORE_CMINSTR_H
 #define __CORE_CMINSTR_H
 
 
-
 /* ##########################  Core Instruction Access  ######################### */
 /* ##########################  Core Instruction Access  ######################### */
 /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
 /** \defgroup CMSIS_Core_InstructionInterface CMSIS Core Instruction Interface
   Access to dedicated instructions
   Access to dedicated instructions
   @{
   @{
 */
 */
 
 
-#if   defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/
+#if defined(__CC_ARM) /*------------------RealView Compiler -----------------*/
 /* ARM armcc specific functions */
 /* ARM armcc specific functions */
 
 
 #if (__ARMCC_VERSION < 400677)
 #if (__ARMCC_VERSION < 400677)
-  #error "Please use ARM Compiler Toolchain V4.0.677 or later!"
+#error "Please use ARM Compiler Toolchain V4.0.677 or later!"
 #endif
 #endif
 
 
-
 /** \brief  No Operation
 /** \brief  No Operation
 
 
     No Operation does nothing. This instruction can be used for code alignment purposes.
     No Operation does nothing. This instruction can be used for code alignment purposes.
  */
  */
-#define __NOP                             __nop
-
+#define __NOP __nop
 
 
 /** \brief  Wait For Interrupt
 /** \brief  Wait For Interrupt
 
 
     Wait For Interrupt is a hint instruction that suspends execution
     Wait For Interrupt is a hint instruction that suspends execution
     until one of a number of events occurs.
     until one of a number of events occurs.
  */
  */
-#define __WFI                             __wfi
-
+#define __WFI __wfi
 
 
 /** \brief  Wait For Event
 /** \brief  Wait For Event
 
 
     Wait For Event is a hint instruction that permits the processor to enter
     Wait For Event is a hint instruction that permits the processor to enter
     a low-power state until one of a number of events occurs.
     a low-power state until one of a number of events occurs.
  */
  */
-#define __WFE                             __wfe
-
+#define __WFE __wfe
 
 
 /** \brief  Send Event
 /** \brief  Send Event
 
 
     Send Event is a hint instruction. It causes an event to be signaled to the CPU.
     Send Event is a hint instruction. It causes an event to be signaled to the CPU.
  */
  */
-#define __SEV                             __sev
-
+#define __SEV __sev
 
 
 /** \brief  Instruction Synchronization Barrier
 /** \brief  Instruction Synchronization Barrier
 
 
@@ -89,24 +82,21 @@
     so that all instructions following the ISB are fetched from cache or
     so that all instructions following the ISB are fetched from cache or
     memory, after the instruction has been completed.
     memory, after the instruction has been completed.
  */
  */
-#define __ISB()                           __isb(0xF)
-
+#define __ISB() __isb(0xF)
 
 
 /** \brief  Data Synchronization Barrier
 /** \brief  Data Synchronization Barrier
 
 
     This function acts as a special kind of Data Memory Barrier.
     This function acts as a special kind of Data Memory Barrier.
     It completes when all explicit memory accesses before this instruction complete.
     It completes when all explicit memory accesses before this instruction complete.
  */
  */
-#define __DSB()                           __dsb(0xF)
-
+#define __DSB() __dsb(0xF)
 
 
 /** \brief  Data Memory Barrier
 /** \brief  Data Memory Barrier
 
 
     This function ensures the apparent order of the explicit memory operations before
     This function ensures the apparent order of the explicit memory operations before
     and after the instruction, without ensuring their completion.
     and after the instruction, without ensuring their completion.
  */
  */
-#define __DMB()                           __dmb(0xF)
-
+#define __DMB() __dmb(0xF)
 
 
 /** \brief  Reverse byte order (32 bit)
 /** \brief  Reverse byte order (32 bit)
 
 
@@ -115,8 +105,7 @@
     \param [in]    value  Value to reverse
     \param [in]    value  Value to reverse
     \return               Reversed value
     \return               Reversed value
  */
  */
-#define __REV                             __rev
-
+#define __REV __rev
 
 
 /** \brief  Reverse byte order (16 bit)
 /** \brief  Reverse byte order (16 bit)
 
 
@@ -128,8 +117,8 @@
 #ifndef __NO_EMBEDDED_ASM
 #ifndef __NO_EMBEDDED_ASM
 __attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)
 __attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(uint32_t value)
 {
 {
-  rev16 r0, r0
-  bx lr
+    rev16 r0, r0
+                  bx lr
 }
 }
 #endif
 #endif
 
 
@@ -143,12 +132,11 @@ __attribute__((section(".rev16_text"))) __STATIC_INLINE __ASM uint32_t __REV16(u
 #ifndef __NO_EMBEDDED_ASM
 #ifndef __NO_EMBEDDED_ASM
 __attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(int32_t value)
 __attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(int32_t value)
 {
 {
-  revsh r0, r0
-  bx lr
+    revsh r0, r0
+                  bx lr
 }
 }
 #endif
 #endif
 
 
-
 /** \brief  Rotate Right in unsigned value (32 bit)
 /** \brief  Rotate Right in unsigned value (32 bit)
 
 
     This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
     This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
@@ -157,8 +145,7 @@ __attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(in
     \param [in]    value  Number of Bits to rotate
     \param [in]    value  Number of Bits to rotate
     \return               Rotated value
     \return               Rotated value
  */
  */
-#define __ROR                             __ror
-
+#define __ROR __ror
 
 
 /** \brief  Breakpoint
 /** \brief  Breakpoint
 
 
@@ -168,10 +155,9 @@ __attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(in
     \param [in]    value  is ignored by the processor.
     \param [in]    value  is ignored by the processor.
                    If required, a debugger can use it to store additional information about the breakpoint.
                    If required, a debugger can use it to store additional information about the breakpoint.
  */
  */
-#define __BKPT(value)                       __breakpoint(value)
+#define __BKPT(value) __breakpoint(value)
 
 
-
-#if       (__CORTEX_M >= 0x03) || (__CORTEX_SC >= 300)
+#if (__CORTEX_M >= 0x03) || (__CORTEX_SC >= 300)
 
 
 /** \brief  Reverse bit order of value
 /** \brief  Reverse bit order of value
 
 
@@ -180,8 +166,7 @@ __attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(in
     \param [in]    value  Value to reverse
     \param [in]    value  Value to reverse
     \return               Reversed value
     \return               Reversed value
  */
  */
-#define __RBIT                            __rbit
-
+#define __RBIT __rbit
 
 
 /** \brief  LDR Exclusive (8 bit)
 /** \brief  LDR Exclusive (8 bit)
 
 
@@ -190,8 +175,7 @@ __attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(in
     \param [in]    ptr  Pointer to data
     \param [in]    ptr  Pointer to data
     \return             value of type uint8_t at (*ptr)
     \return             value of type uint8_t at (*ptr)
  */
  */
-#define __LDREXB(ptr)                     ((uint8_t ) __ldrex(ptr))
-
+#define __LDREXB(ptr) ((uint8_t)__ldrex(ptr))
 
 
 /** \brief  LDR Exclusive (16 bit)
 /** \brief  LDR Exclusive (16 bit)
 
 
@@ -200,8 +184,7 @@ __attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(in
     \param [in]    ptr  Pointer to data
     \param [in]    ptr  Pointer to data
     \return        value of type uint16_t at (*ptr)
     \return        value of type uint16_t at (*ptr)
  */
  */
-#define __LDREXH(ptr)                     ((uint16_t) __ldrex(ptr))
-
+#define __LDREXH(ptr) ((uint16_t)__ldrex(ptr))
 
 
 /** \brief  LDR Exclusive (32 bit)
 /** \brief  LDR Exclusive (32 bit)
 
 
@@ -210,8 +193,7 @@ __attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(in
     \param [in]    ptr  Pointer to data
     \param [in]    ptr  Pointer to data
     \return        value of type uint32_t at (*ptr)
     \return        value of type uint32_t at (*ptr)
  */
  */
-#define __LDREXW(ptr)                     ((uint32_t ) __ldrex(ptr))
-
+#define __LDREXW(ptr) ((uint32_t)__ldrex(ptr))
 
 
 /** \brief  STR Exclusive (8 bit)
 /** \brief  STR Exclusive (8 bit)
 
 
@@ -222,8 +204,7 @@ __attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(in
     \return          0  Function succeeded
     \return          0  Function succeeded
     \return          1  Function failed
     \return          1  Function failed
  */
  */
-#define __STREXB(value, ptr)              __strex(value, ptr)
-
+#define __STREXB(value, ptr) __strex(value, ptr)
 
 
 /** \brief  STR Exclusive (16 bit)
 /** \brief  STR Exclusive (16 bit)
 
 
@@ -234,8 +215,7 @@ __attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(in
     \return          0  Function succeeded
     \return          0  Function succeeded
     \return          1  Function failed
     \return          1  Function failed
  */
  */
-#define __STREXH(value, ptr)              __strex(value, ptr)
-
+#define __STREXH(value, ptr) __strex(value, ptr)
 
 
 /** \brief  STR Exclusive (32 bit)
 /** \brief  STR Exclusive (32 bit)
 
 
@@ -246,16 +226,14 @@ __attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(in
     \return          0  Function succeeded
     \return          0  Function succeeded
     \return          1  Function failed
     \return          1  Function failed
  */
  */
-#define __STREXW(value, ptr)              __strex(value, ptr)
-
+#define __STREXW(value, ptr) __strex(value, ptr)
 
 
 /** \brief  Remove the exclusive lock
 /** \brief  Remove the exclusive lock
 
 
     This function removes the exclusive lock which is created by LDREX.
     This function removes the exclusive lock which is created by LDREX.
 
 
  */
  */
-#define __CLREX                           __clrex
-
+#define __CLREX __clrex
 
 
 /** \brief  Signed Saturate
 /** \brief  Signed Saturate
 
 
@@ -265,8 +243,7 @@ __attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(in
     \param [in]    sat  Bit position to saturate to (1..32)
     \param [in]    sat  Bit position to saturate to (1..32)
     \return             Saturated value
     \return             Saturated value
  */
  */
-#define __SSAT                            __ssat
-
+#define __SSAT __ssat
 
 
 /** \brief  Unsigned Saturate
 /** \brief  Unsigned Saturate
 
 
@@ -276,8 +253,7 @@ __attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(in
     \param [in]    sat  Bit position to saturate to (0..31)
     \param [in]    sat  Bit position to saturate to (0..31)
     \return             Saturated value
     \return             Saturated value
  */
  */
-#define __USAT                            __usat
-
+#define __USAT __usat
 
 
 /** \brief  Count leading zeros
 /** \brief  Count leading zeros
 
 
@@ -286,8 +262,7 @@ __attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(in
     \param [in]  value  Value to count the leading zeros
     \param [in]  value  Value to count the leading zeros
     \return             number of leading zeros in value
     \return             number of leading zeros in value
  */
  */
-#define __CLZ                             __clz
-
+#define __CLZ __clz
 
 
 /** \brief  Rotate Right with Extend (32 bit)
 /** \brief  Rotate Right with Extend (32 bit)
 
 
@@ -299,12 +274,11 @@ __attribute__((section(".revsh_text"))) __STATIC_INLINE __ASM int32_t __REVSH(in
 #ifndef __NO_EMBEDDED_ASM
 #ifndef __NO_EMBEDDED_ASM
 __attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value)
 __attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint32_t value)
 {
 {
-  rrx r0, r0
-  bx lr
+    rrx r0, r0
+                bx lr
 }
 }
 #endif
 #endif
 
 
-
 /** \brief  LDRT Unprivileged (8 bit)
 /** \brief  LDRT Unprivileged (8 bit)
 
 
     This function executes a Unprivileged LDRT instruction for 8 bit value.
     This function executes a Unprivileged LDRT instruction for 8 bit value.
@@ -312,8 +286,7 @@ __attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint3
     \param [in]    ptr  Pointer to data
     \param [in]    ptr  Pointer to data
     \return             value of type uint8_t at (*ptr)
     \return             value of type uint8_t at (*ptr)
  */
  */
-#define __LDRBT(ptr)                      ((uint8_t )  __ldrt(ptr))
-
+#define __LDRBT(ptr) ((uint8_t)__ldrt(ptr))
 
 
 /** \brief  LDRT Unprivileged (16 bit)
 /** \brief  LDRT Unprivileged (16 bit)
 
 
@@ -322,8 +295,7 @@ __attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint3
     \param [in]    ptr  Pointer to data
     \param [in]    ptr  Pointer to data
     \return        value of type uint16_t at (*ptr)
     \return        value of type uint16_t at (*ptr)
  */
  */
-#define __LDRHT(ptr)                      ((uint16_t)  __ldrt(ptr))
-
+#define __LDRHT(ptr) ((uint16_t)__ldrt(ptr))
 
 
 /** \brief  LDRT Unprivileged (32 bit)
 /** \brief  LDRT Unprivileged (32 bit)
 
 
@@ -332,8 +304,7 @@ __attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint3
     \param [in]    ptr  Pointer to data
     \param [in]    ptr  Pointer to data
     \return        value of type uint32_t at (*ptr)
     \return        value of type uint32_t at (*ptr)
  */
  */
-#define __LDRT(ptr)                       ((uint32_t ) __ldrt(ptr))
-
+#define __LDRT(ptr) ((uint32_t)__ldrt(ptr))
 
 
 /** \brief  STRT Unprivileged (8 bit)
 /** \brief  STRT Unprivileged (8 bit)
 
 
@@ -342,8 +313,7 @@ __attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint3
     \param [in]  value  Value to store
     \param [in]  value  Value to store
     \param [in]    ptr  Pointer to location
     \param [in]    ptr  Pointer to location
  */
  */
-#define __STRBT(value, ptr)               __strt(value, ptr)
-
+#define __STRBT(value, ptr) __strt(value, ptr)
 
 
 /** \brief  STRT Unprivileged (16 bit)
 /** \brief  STRT Unprivileged (16 bit)
 
 
@@ -352,8 +322,7 @@ __attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint3
     \param [in]  value  Value to store
     \param [in]  value  Value to store
     \param [in]    ptr  Pointer to location
     \param [in]    ptr  Pointer to location
  */
  */
-#define __STRHT(value, ptr)               __strt(value, ptr)
-
+#define __STRHT(value, ptr) __strt(value, ptr)
 
 
 /** \brief  STRT Unprivileged (32 bit)
 /** \brief  STRT Unprivileged (32 bit)
 
 
@@ -362,101 +331,93 @@ __attribute__((section(".rrx_text"))) __STATIC_INLINE __ASM uint32_t __RRX(uint3
     \param [in]  value  Value to store
     \param [in]  value  Value to store
     \param [in]    ptr  Pointer to location
     \param [in]    ptr  Pointer to location
  */
  */
-#define __STRT(value, ptr)                __strt(value, ptr)
+#define __STRT(value, ptr) __strt(value, ptr)
 
 
 #endif /* (__CORTEX_M >= 0x03) || (__CORTEX_SC >= 300) */
 #endif /* (__CORTEX_M >= 0x03) || (__CORTEX_SC >= 300) */
 
 
-
-#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/
+#elif defined(__GNUC__) /*------------------ GNU Compiler ---------------------*/
 /* GNU gcc specific functions */
 /* GNU gcc specific functions */
 
 
 /* Define macros for porting to both thumb1 and thumb2.
 /* Define macros for porting to both thumb1 and thumb2.
  * For thumb1, use low register (r0-r7), specified by constrant "l"
  * For thumb1, use low register (r0-r7), specified by constrant "l"
  * Otherwise, use general registers, specified by constrant "r" */
  * Otherwise, use general registers, specified by constrant "r" */
-#if defined (__thumb__) && !defined (__thumb2__)
-#define __CMSIS_GCC_OUT_REG(r) "=l" (r)
-#define __CMSIS_GCC_USE_REG(r) "l" (r)
+#if defined(__thumb__) && !defined(__thumb2__)
+#define __CMSIS_GCC_OUT_REG(r) "=l"(r)
+#define __CMSIS_GCC_USE_REG(r) "l"(r)
 #else
 #else
-#define __CMSIS_GCC_OUT_REG(r) "=r" (r)
-#define __CMSIS_GCC_USE_REG(r) "r" (r)
+#define __CMSIS_GCC_OUT_REG(r) "=r"(r)
+#define __CMSIS_GCC_USE_REG(r) "r"(r)
 #endif
 #endif
 
 
 /** \brief  No Operation
 /** \brief  No Operation
 
 
     No Operation does nothing. This instruction can be used for code alignment purposes.
     No Operation does nothing. This instruction can be used for code alignment purposes.
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __NOP(void)
+__attribute__((always_inline)) __STATIC_INLINE void __NOP(void)
 {
 {
-  __ASM volatile ("nop");
+    __ASM volatile("nop");
 }
 }
 
 
-
 /** \brief  Wait For Interrupt
 /** \brief  Wait For Interrupt
 
 
     Wait For Interrupt is a hint instruction that suspends execution
     Wait For Interrupt is a hint instruction that suspends execution
     until one of a number of events occurs.
     until one of a number of events occurs.
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFI(void)
+__attribute__((always_inline)) __STATIC_INLINE void __WFI(void)
 {
 {
-  __ASM volatile ("wfi");
+    __ASM volatile("wfi");
 }
 }
 
 
-
 /** \brief  Wait For Event
 /** \brief  Wait For Event
 
 
     Wait For Event is a hint instruction that permits the processor to enter
     Wait For Event is a hint instruction that permits the processor to enter
     a low-power state until one of a number of events occurs.
     a low-power state until one of a number of events occurs.
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __WFE(void)
+__attribute__((always_inline)) __STATIC_INLINE void __WFE(void)
 {
 {
-  __ASM volatile ("wfe");
+    __ASM volatile("wfe");
 }
 }
 
 
-
 /** \brief  Send Event
 /** \brief  Send Event
 
 
     Send Event is a hint instruction. It causes an event to be signaled to the CPU.
     Send Event is a hint instruction. It causes an event to be signaled to the CPU.
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __SEV(void)
+__attribute__((always_inline)) __STATIC_INLINE void __SEV(void)
 {
 {
-  __ASM volatile ("sev");
+    __ASM volatile("sev");
 }
 }
 
 
-
 /** \brief  Instruction Synchronization Barrier
 /** \brief  Instruction Synchronization Barrier
 
 
     Instruction Synchronization Barrier flushes the pipeline in the processor,
     Instruction Synchronization Barrier flushes the pipeline in the processor,
     so that all instructions following the ISB are fetched from cache or
     so that all instructions following the ISB are fetched from cache or
     memory, after the instruction has been completed.
     memory, after the instruction has been completed.
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __ISB(void)
+__attribute__((always_inline)) __STATIC_INLINE void __ISB(void)
 {
 {
-  __ASM volatile ("isb");
+    __ASM volatile("isb");
 }
 }
 
 
-
 /** \brief  Data Synchronization Barrier
 /** \brief  Data Synchronization Barrier
 
 
     This function acts as a special kind of Data Memory Barrier.
     This function acts as a special kind of Data Memory Barrier.
     It completes when all explicit memory accesses before this instruction complete.
     It completes when all explicit memory accesses before this instruction complete.
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __DSB(void)
+__attribute__((always_inline)) __STATIC_INLINE void __DSB(void)
 {
 {
-  __ASM volatile ("dsb");
+    __ASM volatile("dsb");
 }
 }
 
 
-
 /** \brief  Data Memory Barrier
 /** \brief  Data Memory Barrier
 
 
     This function ensures the apparent order of the explicit memory operations before
     This function ensures the apparent order of the explicit memory operations before
     and after the instruction, without ensuring their completion.
     and after the instruction, without ensuring their completion.
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __DMB(void)
+__attribute__((always_inline)) __STATIC_INLINE void __DMB(void)
 {
 {
-  __ASM volatile ("dmb");
+    __ASM volatile("dmb");
 }
 }
 
 
-
 /** \brief  Reverse byte order (32 bit)
 /** \brief  Reverse byte order (32 bit)
 
 
     This function reverses the byte order in integer value.
     This function reverses the byte order in integer value.
@@ -464,19 +425,20 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE void __DMB(void)
     \param [in]    value  Value to reverse
     \param [in]    value  Value to reverse
     \return               Reversed value
     \return               Reversed value
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV(uint32_t value)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __REV(uint32_t value)
 {
 {
 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
-  return __builtin_bswap32(value);
+    return __builtin_bswap32(value);
 #else
 #else
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("rev %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
-  return(result);
+    __ASM volatile("rev %0, %1"
+                   : __CMSIS_GCC_OUT_REG(result)
+                   : __CMSIS_GCC_USE_REG(value));
+    return (result);
 #endif
 #endif
 }
 }
 
 
-
 /** \brief  Reverse byte order (16 bit)
 /** \brief  Reverse byte order (16 bit)
 
 
     This function reverses the byte order in two unsigned short values.
     This function reverses the byte order in two unsigned short values.
@@ -484,15 +446,16 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV(uint32_t value
     \param [in]    value  Value to reverse
     \param [in]    value  Value to reverse
     \return               Reversed value
     \return               Reversed value
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV16(uint32_t value)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __REV16(uint32_t value)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("rev16 %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
-  return(result);
+    __ASM volatile("rev16 %0, %1"
+                   : __CMSIS_GCC_OUT_REG(result)
+                   : __CMSIS_GCC_USE_REG(value));
+    return (result);
 }
 }
 
 
-
 /** \brief  Reverse byte order in signed short value
 /** \brief  Reverse byte order in signed short value
 
 
     This function reverses the byte order in a signed short value with sign extension to integer.
     This function reverses the byte order in a signed short value with sign extension to integer.
@@ -500,19 +463,20 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __REV16(uint32_t val
     \param [in]    value  Value to reverse
     \param [in]    value  Value to reverse
     \return               Reversed value
     \return               Reversed value
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE int32_t __REVSH(int32_t value)
+__attribute__((always_inline)) __STATIC_INLINE int32_t __REVSH(int32_t value)
 {
 {
 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
-  return (short)__builtin_bswap16(value);
+    return (short)__builtin_bswap16(value);
 #else
 #else
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("revsh %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
-  return(result);
+    __ASM volatile("revsh %0, %1"
+                   : __CMSIS_GCC_OUT_REG(result)
+                   : __CMSIS_GCC_USE_REG(value));
+    return (result);
 #endif
 #endif
 }
 }
 
 
-
 /** \brief  Rotate Right in unsigned value (32 bit)
 /** \brief  Rotate Right in unsigned value (32 bit)
 
 
     This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
     This function Rotate Right (immediate) provides the value of the contents of a register rotated by a variable number of bits.
@@ -521,12 +485,11 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE int32_t __REVSH(int32_t value
     \param [in]    value  Number of Bits to rotate
     \param [in]    value  Number of Bits to rotate
     \return               Rotated value
     \return               Rotated value
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __ROR(uint32_t op1, uint32_t op2)
 {
 {
-  return (op1 >> op2) | (op1 << (32 - op2)); 
+    return (op1 >> op2) | (op1 << (32 - op2));
 }
 }
 
 
-
 /** \brief  Breakpoint
 /** \brief  Breakpoint
 
 
     This function causes the processor to enter Debug state.
     This function causes the processor to enter Debug state.
@@ -535,10 +498,9 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __ROR(uint32_t op1,
     \param [in]    value  is ignored by the processor.
     \param [in]    value  is ignored by the processor.
                    If required, a debugger can use it to store additional information about the breakpoint.
                    If required, a debugger can use it to store additional information about the breakpoint.
  */
  */
-#define __BKPT(value)                       __ASM volatile ("bkpt "#value)
-
+#define __BKPT(value) __ASM volatile("bkpt " #value)
 
 
-#if       (__CORTEX_M >= 0x03) || (__CORTEX_SC >= 300)
+#if (__CORTEX_M >= 0x03) || (__CORTEX_SC >= 300)
 
 
 /** \brief  Reverse bit order of value
 /** \brief  Reverse bit order of value
 
 
@@ -547,15 +509,16 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __ROR(uint32_t op1,
     \param [in]    value  Value to reverse
     \param [in]    value  Value to reverse
     \return               Reversed value
     \return               Reversed value
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __RBIT(uint32_t value)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __RBIT(uint32_t value)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-   __ASM volatile ("rbit %0, %1" : "=r" (result) : "r" (value) );
-   return(result);
+    __ASM volatile("rbit %0, %1"
+                   : "=r"(result)
+                   : "r"(value));
+    return (result);
 }
 }
 
 
-
 /** \brief  LDR Exclusive (8 bit)
 /** \brief  LDR Exclusive (8 bit)
 
 
     This function executes a exclusive LDR instruction for 8 bit value.
     This function executes a exclusive LDR instruction for 8 bit value.
@@ -563,22 +526,26 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __RBIT(uint32_t valu
     \param [in]    ptr  Pointer to data
     \param [in]    ptr  Pointer to data
     \return             value of type uint8_t at (*ptr)
     \return             value of type uint8_t at (*ptr)
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __LDREXB(volatile uint8_t *addr)
+__attribute__((always_inline)) __STATIC_INLINE uint8_t __LDREXB(volatile uint8_t *addr)
 {
 {
     uint32_t result;
     uint32_t result;
 
 
 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
-   __ASM volatile ("ldrexb %0, %1" : "=r" (result) : "Q" (*addr) );
+    __ASM volatile("ldrexb %0, %1"
+                   : "=r"(result)
+                   : "Q"(*addr));
 #else
 #else
     /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
     /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
        accepted by assembler. So has to use following less efficient pattern.
        accepted by assembler. So has to use following less efficient pattern.
     */
     */
-   __ASM volatile ("ldrexb %0, [%1]" : "=r" (result) : "r" (addr) : "memory" );
+    __ASM volatile("ldrexb %0, [%1]"
+                   : "=r"(result)
+                   : "r"(addr)
+                   : "memory");
 #endif
 #endif
-   return ((uint8_t) result);    /* Add explicit type cast here */
+    return ((uint8_t)result); /* Add explicit type cast here */
 }
 }
 
 
-
 /** \brief  LDR Exclusive (16 bit)
 /** \brief  LDR Exclusive (16 bit)
 
 
     This function executes a exclusive LDR instruction for 16 bit values.
     This function executes a exclusive LDR instruction for 16 bit values.
@@ -586,22 +553,26 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __LDREXB(volatile uin
     \param [in]    ptr  Pointer to data
     \param [in]    ptr  Pointer to data
     \return        value of type uint16_t at (*ptr)
     \return        value of type uint16_t at (*ptr)
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint16_t __LDREXH(volatile uint16_t *addr)
+__attribute__((always_inline)) __STATIC_INLINE uint16_t __LDREXH(volatile uint16_t *addr)
 {
 {
     uint32_t result;
     uint32_t result;
 
 
 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
-   __ASM volatile ("ldrexh %0, %1" : "=r" (result) : "Q" (*addr) );
+    __ASM volatile("ldrexh %0, %1"
+                   : "=r"(result)
+                   : "Q"(*addr));
 #else
 #else
     /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
     /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
        accepted by assembler. So has to use following less efficient pattern.
        accepted by assembler. So has to use following less efficient pattern.
     */
     */
-   __ASM volatile ("ldrexh %0, [%1]" : "=r" (result) : "r" (addr) : "memory" );
+    __ASM volatile("ldrexh %0, [%1]"
+                   : "=r"(result)
+                   : "r"(addr)
+                   : "memory");
 #endif
 #endif
-   return ((uint16_t) result);    /* Add explicit type cast here */
+    return ((uint16_t)result); /* Add explicit type cast here */
 }
 }
 
 
-
 /** \brief  LDR Exclusive (32 bit)
 /** \brief  LDR Exclusive (32 bit)
 
 
     This function executes a exclusive LDR instruction for 32 bit values.
     This function executes a exclusive LDR instruction for 32 bit values.
@@ -609,15 +580,16 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE uint16_t __LDREXH(volatile ui
     \param [in]    ptr  Pointer to data
     \param [in]    ptr  Pointer to data
     \return        value of type uint32_t at (*ptr)
     \return        value of type uint32_t at (*ptr)
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __LDREXW(volatile uint32_t *addr)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __LDREXW(volatile uint32_t *addr)
 {
 {
     uint32_t result;
     uint32_t result;
 
 
-   __ASM volatile ("ldrex %0, %1" : "=r" (result) : "Q" (*addr) );
-   return(result);
+    __ASM volatile("ldrex %0, %1"
+                   : "=r"(result)
+                   : "Q"(*addr));
+    return (result);
 }
 }
 
 
-
 /** \brief  STR Exclusive (8 bit)
 /** \brief  STR Exclusive (8 bit)
 
 
     This function executes a exclusive STR instruction for 8 bit values.
     This function executes a exclusive STR instruction for 8 bit values.
@@ -627,15 +599,16 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __LDREXW(volatile ui
     \return          0  Function succeeded
     \return          0  Function succeeded
     \return          1  Function failed
     \return          1  Function failed
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __STREXB(uint8_t value, volatile uint8_t *addr)
 {
 {
-   uint32_t result;
+    uint32_t result;
 
 
-   __ASM volatile ("strexb %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) );
-   return(result);
+    __ASM volatile("strexb %0, %2, %1"
+                   : "=&r"(result), "=Q"(*addr)
+                   : "r"((uint32_t)value));
+    return (result);
 }
 }
 
 
-
 /** \brief  STR Exclusive (16 bit)
 /** \brief  STR Exclusive (16 bit)
 
 
     This function executes a exclusive STR instruction for 16 bit values.
     This function executes a exclusive STR instruction for 16 bit values.
@@ -645,15 +618,16 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXB(uint8_t val
     \return          0  Function succeeded
     \return          0  Function succeeded
     \return          1  Function failed
     \return          1  Function failed
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __STREXH(uint16_t value, volatile uint16_t *addr)
 {
 {
-   uint32_t result;
+    uint32_t result;
 
 
-   __ASM volatile ("strexh %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" ((uint32_t)value) );
-   return(result);
+    __ASM volatile("strexh %0, %2, %1"
+                   : "=&r"(result), "=Q"(*addr)
+                   : "r"((uint32_t)value));
+    return (result);
 }
 }
 
 
-
 /** \brief  STR Exclusive (32 bit)
 /** \brief  STR Exclusive (32 bit)
 
 
     This function executes a exclusive STR instruction for 32 bit values.
     This function executes a exclusive STR instruction for 32 bit values.
@@ -663,26 +637,27 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXH(uint16_t va
     \return          0  Function succeeded
     \return          0  Function succeeded
     \return          1  Function failed
     \return          1  Function failed
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __STREXW(uint32_t value, volatile uint32_t *addr)
 {
 {
-   uint32_t result;
+    uint32_t result;
 
 
-   __ASM volatile ("strex %0, %2, %1" : "=&r" (result), "=Q" (*addr) : "r" (value) );
-   return(result);
+    __ASM volatile("strex %0, %2, %1"
+                   : "=&r"(result), "=Q"(*addr)
+                   : "r"(value));
+    return (result);
 }
 }
 
 
-
 /** \brief  Remove the exclusive lock
 /** \brief  Remove the exclusive lock
 
 
     This function removes the exclusive lock which is created by LDREX.
     This function removes the exclusive lock which is created by LDREX.
 
 
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __CLREX(void)
+__attribute__((always_inline)) __STATIC_INLINE void __CLREX(void)
 {
 {
-  __ASM volatile ("clrex" ::: "memory");
+    __ASM volatile("clrex" ::
+                       : "memory");
 }
 }
 
 
-
 /** \brief  Signed Saturate
 /** \brief  Signed Saturate
 
 
     This function saturates a signed value.
     This function saturates a signed value.
@@ -691,13 +666,15 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE void __CLREX(void)
     \param [in]    sat  Bit position to saturate to (1..32)
     \param [in]    sat  Bit position to saturate to (1..32)
     \return             Saturated value
     \return             Saturated value
  */
  */
-#define __SSAT(ARG1,ARG2) \
-({                          \
-  uint32_t __RES, __ARG1 = (ARG1); \
-  __ASM ("ssat %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
-  __RES; \
- })
-
+#define __SSAT(ARG1, ARG2)                   \
+    (                                        \
+        {                                    \
+            uint32_t __RES, __ARG1 = (ARG1); \
+            __ASM("ssat %0, %1, %2"          \
+                  : "=r"(__RES)              \
+                  : "I"(ARG2), "r"(__ARG1)); \
+            __RES;                           \
+        })
 
 
 /** \brief  Unsigned Saturate
 /** \brief  Unsigned Saturate
 
 
@@ -707,13 +684,15 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE void __CLREX(void)
     \param [in]    sat  Bit position to saturate to (0..31)
     \param [in]    sat  Bit position to saturate to (0..31)
     \return             Saturated value
     \return             Saturated value
  */
  */
-#define __USAT(ARG1,ARG2) \
-({                          \
-  uint32_t __RES, __ARG1 = (ARG1); \
-  __ASM ("usat %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
-  __RES; \
- })
-
+#define __USAT(ARG1, ARG2)                   \
+    (                                        \
+        {                                    \
+            uint32_t __RES, __ARG1 = (ARG1); \
+            __ASM("usat %0, %1, %2"          \
+                  : "=r"(__RES)              \
+                  : "I"(ARG2), "r"(__ARG1)); \
+            __RES;                           \
+        })
 
 
 /** \brief  Count leading zeros
 /** \brief  Count leading zeros
 
 
@@ -722,15 +701,16 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE void __CLREX(void)
     \param [in]  value  Value to count the leading zeros
     \param [in]  value  Value to count the leading zeros
     \return             number of leading zeros in value
     \return             number of leading zeros in value
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __CLZ(uint32_t value)
+__attribute__((always_inline)) __STATIC_INLINE uint8_t __CLZ(uint32_t value)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("clz %0, %1" : "=r" (result) : "r" (value) );
-   return ((uint8_t) result);    /* Add explicit type cast here */
+    __ASM volatile("clz %0, %1"
+                   : "=r"(result)
+                   : "r"(value));
+    return ((uint8_t)result); /* Add explicit type cast here */
 }
 }
 
 
-
 /** \brief  Rotate Right with Extend (32 bit)
 /** \brief  Rotate Right with Extend (32 bit)
 
 
     This function moves each bit of a bitstring right by one bit. The carry input is shifted in at the left end of the bitstring.
     This function moves each bit of a bitstring right by one bit. The carry input is shifted in at the left end of the bitstring.
@@ -738,15 +718,16 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __CLZ(uint32_t value)
     \param [in]    value  Value to rotate
     \param [in]    value  Value to rotate
     \return               Rotated value
     \return               Rotated value
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __RRX(uint32_t value)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __RRX(uint32_t value)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("rrx %0, %1" : __CMSIS_GCC_OUT_REG (result) : __CMSIS_GCC_USE_REG (value) );
-  return(result);
+    __ASM volatile("rrx %0, %1"
+                   : __CMSIS_GCC_OUT_REG(result)
+                   : __CMSIS_GCC_USE_REG(value));
+    return (result);
 }
 }
 
 
-
 /** \brief  LDRT Unprivileged (8 bit)
 /** \brief  LDRT Unprivileged (8 bit)
 
 
     This function executes a Unprivileged LDRT instruction for 8 bit value.
     This function executes a Unprivileged LDRT instruction for 8 bit value.
@@ -754,22 +735,26 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __RRX(uint32_t value
     \param [in]    ptr  Pointer to data
     \param [in]    ptr  Pointer to data
     \return             value of type uint8_t at (*ptr)
     \return             value of type uint8_t at (*ptr)
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __LDRBT(volatile uint8_t *addr)
+__attribute__((always_inline)) __STATIC_INLINE uint8_t __LDRBT(volatile uint8_t *addr)
 {
 {
     uint32_t result;
     uint32_t result;
 
 
 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
-   __ASM volatile ("ldrbt %0, %1" : "=r" (result) : "Q" (*addr) );
+    __ASM volatile("ldrbt %0, %1"
+                   : "=r"(result)
+                   : "Q"(*addr));
 #else
 #else
     /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
     /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
        accepted by assembler. So has to use following less efficient pattern.
        accepted by assembler. So has to use following less efficient pattern.
     */
     */
-   __ASM volatile ("ldrbt %0, [%1]" : "=r" (result) : "r" (addr) : "memory" );
+    __ASM volatile("ldrbt %0, [%1]"
+                   : "=r"(result)
+                   : "r"(addr)
+                   : "memory");
 #endif
 #endif
-   return ((uint8_t) result);    /* Add explicit type cast here */
+    return ((uint8_t)result); /* Add explicit type cast here */
 }
 }
 
 
-
 /** \brief  LDRT Unprivileged (16 bit)
 /** \brief  LDRT Unprivileged (16 bit)
 
 
     This function executes a Unprivileged LDRT instruction for 16 bit values.
     This function executes a Unprivileged LDRT instruction for 16 bit values.
@@ -777,22 +762,26 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE uint8_t __LDRBT(volatile uint
     \param [in]    ptr  Pointer to data
     \param [in]    ptr  Pointer to data
     \return        value of type uint16_t at (*ptr)
     \return        value of type uint16_t at (*ptr)
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint16_t __LDRHT(volatile uint16_t *addr)
+__attribute__((always_inline)) __STATIC_INLINE uint16_t __LDRHT(volatile uint16_t *addr)
 {
 {
     uint32_t result;
     uint32_t result;
 
 
 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
 #if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
-   __ASM volatile ("ldrht %0, %1" : "=r" (result) : "Q" (*addr) );
+    __ASM volatile("ldrht %0, %1"
+                   : "=r"(result)
+                   : "Q"(*addr));
 #else
 #else
     /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
     /* Prior to GCC 4.8, "Q" will be expanded to [rx, #0] which is not
        accepted by assembler. So has to use following less efficient pattern.
        accepted by assembler. So has to use following less efficient pattern.
     */
     */
-   __ASM volatile ("ldrht %0, [%1]" : "=r" (result) : "r" (addr) : "memory" );
+    __ASM volatile("ldrht %0, [%1]"
+                   : "=r"(result)
+                   : "r"(addr)
+                   : "memory");
 #endif
 #endif
-   return ((uint16_t) result);    /* Add explicit type cast here */
+    return ((uint16_t)result); /* Add explicit type cast here */
 }
 }
 
 
-
 /** \brief  LDRT Unprivileged (32 bit)
 /** \brief  LDRT Unprivileged (32 bit)
 
 
     This function executes a Unprivileged LDRT instruction for 32 bit values.
     This function executes a Unprivileged LDRT instruction for 32 bit values.
@@ -800,15 +789,16 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE uint16_t __LDRHT(volatile uin
     \param [in]    ptr  Pointer to data
     \param [in]    ptr  Pointer to data
     \return        value of type uint32_t at (*ptr)
     \return        value of type uint32_t at (*ptr)
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __LDRT(volatile uint32_t *addr)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __LDRT(volatile uint32_t *addr)
 {
 {
     uint32_t result;
     uint32_t result;
 
 
-   __ASM volatile ("ldrt %0, %1" : "=r" (result) : "Q" (*addr) );
-   return(result);
+    __ASM volatile("ldrt %0, %1"
+                   : "=r"(result)
+                   : "Q"(*addr));
+    return (result);
 }
 }
 
 
-
 /** \brief  STRT Unprivileged (8 bit)
 /** \brief  STRT Unprivileged (8 bit)
 
 
     This function executes a Unprivileged STRT instruction for 8 bit values.
     This function executes a Unprivileged STRT instruction for 8 bit values.
@@ -816,12 +806,13 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __LDRT(volatile uint
     \param [in]  value  Value to store
     \param [in]  value  Value to store
     \param [in]    ptr  Pointer to location
     \param [in]    ptr  Pointer to location
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __STRBT(uint8_t value, volatile uint8_t *addr)
+__attribute__((always_inline)) __STATIC_INLINE void __STRBT(uint8_t value, volatile uint8_t *addr)
 {
 {
-   __ASM volatile ("strbt %1, %0" : "=Q" (*addr) : "r" ((uint32_t)value) );
+    __ASM volatile("strbt %1, %0"
+                   : "=Q"(*addr)
+                   : "r"((uint32_t)value));
 }
 }
 
 
-
 /** \brief  STRT Unprivileged (16 bit)
 /** \brief  STRT Unprivileged (16 bit)
 
 
     This function executes a Unprivileged STRT instruction for 16 bit values.
     This function executes a Unprivileged STRT instruction for 16 bit values.
@@ -829,12 +820,13 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE void __STRBT(uint8_t value, v
     \param [in]  value  Value to store
     \param [in]  value  Value to store
     \param [in]    ptr  Pointer to location
     \param [in]    ptr  Pointer to location
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __STRHT(uint16_t value, volatile uint16_t *addr)
+__attribute__((always_inline)) __STATIC_INLINE void __STRHT(uint16_t value, volatile uint16_t *addr)
 {
 {
-   __ASM volatile ("strht %1, %0" : "=Q" (*addr) : "r" ((uint32_t)value) );
+    __ASM volatile("strht %1, %0"
+                   : "=Q"(*addr)
+                   : "r"((uint32_t)value));
 }
 }
 
 
-
 /** \brief  STRT Unprivileged (32 bit)
 /** \brief  STRT Unprivileged (32 bit)
 
 
     This function executes a Unprivileged STRT instruction for 32 bit values.
     This function executes a Unprivileged STRT instruction for 32 bit values.
@@ -842,25 +834,24 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE void __STRHT(uint16_t value,
     \param [in]  value  Value to store
     \param [in]  value  Value to store
     \param [in]    ptr  Pointer to location
     \param [in]    ptr  Pointer to location
  */
  */
-__attribute__( ( always_inline ) ) __STATIC_INLINE void __STRT(uint32_t value, volatile uint32_t *addr)
+__attribute__((always_inline)) __STATIC_INLINE void __STRT(uint32_t value, volatile uint32_t *addr)
 {
 {
-   __ASM volatile ("strt %1, %0" : "=Q" (*addr) : "r" (value) );
+    __ASM volatile("strt %1, %0"
+                   : "=Q"(*addr)
+                   : "r"(value));
 }
 }
 
 
 #endif /* (__CORTEX_M >= 0x03) || (__CORTEX_SC >= 300) */
 #endif /* (__CORTEX_M >= 0x03) || (__CORTEX_SC >= 300) */
 
 
-
-#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/
+#elif defined(__ICCARM__) /*------------------ ICC Compiler -------------------*/
 /* IAR iccarm specific functions */
 /* IAR iccarm specific functions */
 #include <cmsis_iar.h>
 #include <cmsis_iar.h>
 
 
-
-#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/
+#elif defined(__TMS470__) /*---------------- TI CCS Compiler ------------------*/
 /* TI CCS specific functions */
 /* TI CCS specific functions */
 #include <cmsis_ccs.h>
 #include <cmsis_ccs.h>
 
 
-
-#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/
+#elif defined(__TASKING__) /*------------------ TASKING Compiler --------------*/
 /* TASKING carm specific functions */
 /* TASKING carm specific functions */
 /*
 /*
  * The CMSIS functions have been implemented as intrinsics in the compiler.
  * The CMSIS functions have been implemented as intrinsics in the compiler.
@@ -868,8 +859,7 @@ __attribute__( ( always_inline ) ) __STATIC_INLINE void __STRT(uint32_t value, v
  * Including the CMSIS ones.
  * Including the CMSIS ones.
  */
  */
 
 
-
-#elif defined ( __CSMC__ ) /*------------------ COSMIC Compiler -------------------*/
+#elif defined(__CSMC__) /*------------------ COSMIC Compiler -------------------*/
 /* Cosmic specific functions */
 /* Cosmic specific functions */
 #include <cmsis_csm.h>
 #include <cmsis_csm.h>
 
 

+ 514 - 381
bsp/swm320/libraries/CMSIS/CoreSupport/core_cmSimd.h

@@ -1,4 +1,4 @@
-/**************************************************************************//**
+/**************************************************************************/ /**
  * @file     core_cmSimd.h
  * @file     core_cmSimd.h
  * @brief    CMSIS Cortex-M SIMD Header File
  * @brief    CMSIS Cortex-M SIMD Header File
  * @version  V4.00
  * @version  V4.00
@@ -34,661 +34,794 @@
    POSSIBILITY OF SUCH DAMAGE.
    POSSIBILITY OF SUCH DAMAGE.
    ---------------------------------------------------------------------------*/
    ---------------------------------------------------------------------------*/
 
 
-
-#if defined ( __ICCARM__ )
- #pragma system_include  /* treat file as system include file for MISRA check */
+#if defined(__ICCARM__)
+#pragma system_include /* treat file as system include file for MISRA check */
 #endif
 #endif
 
 
 #ifndef __CORE_CMSIMD_H
 #ifndef __CORE_CMSIMD_H
 #define __CORE_CMSIMD_H
 #define __CORE_CMSIMD_H
 
 
 #ifdef __cplusplus
 #ifdef __cplusplus
- extern "C" {
+extern "C"
+{
 #endif
 #endif
 
 
-
-/*******************************************************************************
+    /*******************************************************************************
  *                Hardware Abstraction Layer
  *                Hardware Abstraction Layer
  ******************************************************************************/
  ******************************************************************************/
 
 
-
-/* ###################  Compiler specific Intrinsics  ########################### */
-/** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics
+    /* ###################  Compiler specific Intrinsics  ########################### */
+    /** \defgroup CMSIS_SIMD_intrinsics CMSIS SIMD Intrinsics
   Access to dedicated SIMD instructions
   Access to dedicated SIMD instructions
   @{
   @{
 */
 */
 
 
-#if   defined ( __CC_ARM ) /*------------------RealView Compiler -----------------*/
+#if defined(__CC_ARM) /*------------------RealView Compiler -----------------*/
 /* ARM armcc specific functions */
 /* ARM armcc specific functions */
-#define __SADD8                           __sadd8
-#define __QADD8                           __qadd8
-#define __SHADD8                          __shadd8
-#define __UADD8                           __uadd8
-#define __UQADD8                          __uqadd8
-#define __UHADD8                          __uhadd8
-#define __SSUB8                           __ssub8
-#define __QSUB8                           __qsub8
-#define __SHSUB8                          __shsub8
-#define __USUB8                           __usub8
-#define __UQSUB8                          __uqsub8
-#define __UHSUB8                          __uhsub8
-#define __SADD16                          __sadd16
-#define __QADD16                          __qadd16
-#define __SHADD16                         __shadd16
-#define __UADD16                          __uadd16
-#define __UQADD16                         __uqadd16
-#define __UHADD16                         __uhadd16
-#define __SSUB16                          __ssub16
-#define __QSUB16                          __qsub16
-#define __SHSUB16                         __shsub16
-#define __USUB16                          __usub16
-#define __UQSUB16                         __uqsub16
-#define __UHSUB16                         __uhsub16
-#define __SASX                            __sasx
-#define __QASX                            __qasx
-#define __SHASX                           __shasx
-#define __UASX                            __uasx
-#define __UQASX                           __uqasx
-#define __UHASX                           __uhasx
-#define __SSAX                            __ssax
-#define __QSAX                            __qsax
-#define __SHSAX                           __shsax
-#define __USAX                            __usax
-#define __UQSAX                           __uqsax
-#define __UHSAX                           __uhsax
-#define __USAD8                           __usad8
-#define __USADA8                          __usada8
-#define __SSAT16                          __ssat16
-#define __USAT16                          __usat16
-#define __UXTB16                          __uxtb16
-#define __UXTAB16                         __uxtab16
-#define __SXTB16                          __sxtb16
-#define __SXTAB16                         __sxtab16
-#define __SMUAD                           __smuad
-#define __SMUADX                          __smuadx
-#define __SMLAD                           __smlad
-#define __SMLADX                          __smladx
-#define __SMLALD                          __smlald
-#define __SMLALDX                         __smlaldx
-#define __SMUSD                           __smusd
-#define __SMUSDX                          __smusdx
-#define __SMLSD                           __smlsd
-#define __SMLSDX                          __smlsdx
-#define __SMLSLD                          __smlsld
-#define __SMLSLDX                         __smlsldx
-#define __SEL                             __sel
-#define __QADD                            __qadd
-#define __QSUB                            __qsub
-
-#define __PKHBT(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0x0000FFFFUL) |  \
-                                           ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL)  )
-
-#define __PKHTB(ARG1,ARG2,ARG3)          ( ((((uint32_t)(ARG1))          ) & 0xFFFF0000UL) |  \
-                                           ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL)  )
-
-#define __SMMLA(ARG1,ARG2,ARG3)          ( (int32_t)((((int64_t)(ARG1) * (ARG2)) + \
-                                                      ((int64_t)(ARG3) << 32)      ) >> 32))
-
-
-#elif defined ( __GNUC__ ) /*------------------ GNU Compiler ---------------------*/
+#define __SADD8 __sadd8
+#define __QADD8 __qadd8
+#define __SHADD8 __shadd8
+#define __UADD8 __uadd8
+#define __UQADD8 __uqadd8
+#define __UHADD8 __uhadd8
+#define __SSUB8 __ssub8
+#define __QSUB8 __qsub8
+#define __SHSUB8 __shsub8
+#define __USUB8 __usub8
+#define __UQSUB8 __uqsub8
+#define __UHSUB8 __uhsub8
+#define __SADD16 __sadd16
+#define __QADD16 __qadd16
+#define __SHADD16 __shadd16
+#define __UADD16 __uadd16
+#define __UQADD16 __uqadd16
+#define __UHADD16 __uhadd16
+#define __SSUB16 __ssub16
+#define __QSUB16 __qsub16
+#define __SHSUB16 __shsub16
+#define __USUB16 __usub16
+#define __UQSUB16 __uqsub16
+#define __UHSUB16 __uhsub16
+#define __SASX __sasx
+#define __QASX __qasx
+#define __SHASX __shasx
+#define __UASX __uasx
+#define __UQASX __uqasx
+#define __UHASX __uhasx
+#define __SSAX __ssax
+#define __QSAX __qsax
+#define __SHSAX __shsax
+#define __USAX __usax
+#define __UQSAX __uqsax
+#define __UHSAX __uhsax
+#define __USAD8 __usad8
+#define __USADA8 __usada8
+#define __SSAT16 __ssat16
+#define __USAT16 __usat16
+#define __UXTB16 __uxtb16
+#define __UXTAB16 __uxtab16
+#define __SXTB16 __sxtb16
+#define __SXTAB16 __sxtab16
+#define __SMUAD __smuad
+#define __SMUADX __smuadx
+#define __SMLAD __smlad
+#define __SMLADX __smladx
+#define __SMLALD __smlald
+#define __SMLALDX __smlaldx
+#define __SMUSD __smusd
+#define __SMUSDX __smusdx
+#define __SMLSD __smlsd
+#define __SMLSDX __smlsdx
+#define __SMLSLD __smlsld
+#define __SMLSLDX __smlsldx
+#define __SEL __sel
+#define __QADD __qadd
+#define __QSUB __qsub
+
+#define __PKHBT(ARG1, ARG2, ARG3) (((((uint32_t)(ARG1))) & 0x0000FFFFUL) | \
+                                   ((((uint32_t)(ARG2)) << (ARG3)) & 0xFFFF0000UL))
+
+#define __PKHTB(ARG1, ARG2, ARG3) (((((uint32_t)(ARG1))) & 0xFFFF0000UL) | \
+                                   ((((uint32_t)(ARG2)) >> (ARG3)) & 0x0000FFFFUL))
+
+#define __SMMLA(ARG1, ARG2, ARG3) ((int32_t)((((int64_t)(ARG1) * (ARG2)) + \
+                                              ((int64_t)(ARG3) << 32)) >>  \
+                                             32))
+
+#elif defined(__GNUC__) /*------------------ GNU Compiler ---------------------*/
 /* GNU gcc specific functions */
 /* GNU gcc specific functions */
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SADD8(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("sadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("sadd8 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __QADD8(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("qadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("qadd8 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SHADD8(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("shadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("shadd8 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UADD8(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("uadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("uadd8 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UQADD8(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("uqadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("uqadd8 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UHADD8(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("uhadd8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("uhadd8 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SSUB8(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("ssub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("ssub8 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __QSUB8(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("qsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("qsub8 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SHSUB8(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("shsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("shsub8 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __USUB8(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("usub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("usub8 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UQSUB8(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("uqsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("uqsub8 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UHSUB8(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("uhsub8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("uhsub8 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SADD16(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("sadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("sadd16 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __QADD16(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("qadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("qadd16 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SHADD16(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("shadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("shadd16 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UADD16(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("uadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("uadd16 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UQADD16(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("uqadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("uqadd16 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UHADD16(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("uhadd16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("uhadd16 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SSUB16(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("ssub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("ssub16 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __QSUB16(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("qsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("qsub16 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SHSUB16(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("shsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("shsub16 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __USUB16(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("usub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("usub16 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UQSUB16(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("uqsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("uqsub16 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UHSUB16(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("uhsub16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("uhsub16 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SASX(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SASX(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("sasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("sasx %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QASX(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __QASX(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("qasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("qasx %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SHASX(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("shasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("shasx %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UASX(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UASX(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("uasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("uasx %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UQASX(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("uqasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("uqasx %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UHASX(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("uhasx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("uhasx %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SSAX(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("ssax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("ssax %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __QSAX(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("qsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("qsax %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SHSAX(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("shsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("shsax %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAX(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAX(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("usax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("usax %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UQSAX(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("uqsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("uqsax %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UHSAX(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("uhsax %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("uhsax %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __USAD8(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("usad8 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("usad8 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __USADA8(uint32_t op1, uint32_t op2, uint32_t op3)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("usada8 %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
-  return(result);
+    __ASM volatile("usada8 %0, %1, %2, %3"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2), "r"(op3));
+    return (result);
 }
 }
 
 
-#define __SSAT16(ARG1,ARG2) \
-({                          \
-  uint32_t __RES, __ARG1 = (ARG1); \
-  __ASM ("ssat16 %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
-  __RES; \
- })
+#define __SSAT16(ARG1, ARG2)                 \
+    (                                        \
+        {                                    \
+            uint32_t __RES, __ARG1 = (ARG1); \
+            __ASM("ssat16 %0, %1, %2"        \
+                  : "=r"(__RES)              \
+                  : "I"(ARG2), "r"(__ARG1)); \
+            __RES;                           \
+        })
 
 
-#define __USAT16(ARG1,ARG2) \
-({                          \
-  uint32_t __RES, __ARG1 = (ARG1); \
-  __ASM ("usat16 %0, %1, %2" : "=r" (__RES) :  "I" (ARG2), "r" (__ARG1) ); \
-  __RES; \
- })
+#define __USAT16(ARG1, ARG2)                 \
+    (                                        \
+        {                                    \
+            uint32_t __RES, __ARG1 = (ARG1); \
+            __ASM("usat16 %0, %1, %2"        \
+                  : "=r"(__RES)              \
+                  : "I"(ARG2), "r"(__ARG1)); \
+            __RES;                           \
+        })
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTB16(uint32_t op1)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UXTB16(uint32_t op1)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("uxtb16 %0, %1" : "=r" (result) : "r" (op1));
-  return(result);
+    __ASM volatile("uxtb16 %0, %1"
+                   : "=r"(result)
+                   : "r"(op1));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __UXTAB16(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("uxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("uxtab16 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTB16(uint32_t op1)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SXTB16(uint32_t op1)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("sxtb16 %0, %1" : "=r" (result) : "r" (op1));
-  return(result);
+    __ASM volatile("sxtb16 %0, %1"
+                   : "=r"(result)
+                   : "r"(op1));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SXTAB16(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("sxtab16 %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("sxtab16 %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUAD  (uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMUAD(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("smuad %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("smuad %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUADX (uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMUADX(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("smuadx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("smuadx %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLAD (uint32_t op1, uint32_t op2, uint32_t op3)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMLAD(uint32_t op1, uint32_t op2, uint32_t op3)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("smlad %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
-  return(result);
+    __ASM volatile("smlad %0, %1, %2, %3"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2), "r"(op3));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLADX (uint32_t op1, uint32_t op2, uint32_t op3)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMLADX(uint32_t op1, uint32_t op2, uint32_t op3)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("smladx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
-  return(result);
+    __ASM volatile("smladx %0, %1, %2, %3"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2), "r"(op3));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint64_t __SMLALD (uint32_t op1, uint32_t op2, uint64_t acc)
+__attribute__((always_inline)) __STATIC_INLINE uint64_t __SMLALD(uint32_t op1, uint32_t op2, uint64_t acc)
 {
 {
-  union llreg_u{
-    uint32_t w32[2];
-    uint64_t w64;
-  } llr;
-  llr.w64 = acc;
+    union llreg_u
+    {
+        uint32_t w32[2];
+        uint64_t w64;
+    } llr;
+    llr.w64 = acc;
 
 
-#ifndef __ARMEB__   // Little endian
-  __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
-#else               // Big endian
-  __ASM volatile ("smlald %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
+#ifndef __ARMEB__ // Little endian
+    __ASM volatile("smlald %0, %1, %2, %3"
+                   : "=r"(llr.w32[0]), "=r"(llr.w32[1])
+                   : "r"(op1), "r"(op2), "0"(llr.w32[0]), "1"(llr.w32[1]));
+#else             // Big endian
+    __ASM volatile("smlald %0, %1, %2, %3"
+                   : "=r"(llr.w32[1]), "=r"(llr.w32[0])
+                   : "r"(op1), "r"(op2), "0"(llr.w32[1]), "1"(llr.w32[0]));
 #endif
 #endif
 
 
-  return(llr.w64);
+    return (llr.w64);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint64_t __SMLALDX (uint32_t op1, uint32_t op2, uint64_t acc)
+__attribute__((always_inline)) __STATIC_INLINE uint64_t __SMLALDX(uint32_t op1, uint32_t op2, uint64_t acc)
 {
 {
-  union llreg_u{
-    uint32_t w32[2];
-    uint64_t w64;
-  } llr;
-  llr.w64 = acc;
+    union llreg_u
+    {
+        uint32_t w32[2];
+        uint64_t w64;
+    } llr;
+    llr.w64 = acc;
 
 
-#ifndef __ARMEB__   // Little endian
-  __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
-#else               // Big endian
-  __ASM volatile ("smlaldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
+#ifndef __ARMEB__ // Little endian
+    __ASM volatile("smlaldx %0, %1, %2, %3"
+                   : "=r"(llr.w32[0]), "=r"(llr.w32[1])
+                   : "r"(op1), "r"(op2), "0"(llr.w32[0]), "1"(llr.w32[1]));
+#else             // Big endian
+    __ASM volatile("smlaldx %0, %1, %2, %3"
+                   : "=r"(llr.w32[1]), "=r"(llr.w32[0])
+                   : "r"(op1), "r"(op2), "0"(llr.w32[1]), "1"(llr.w32[0]));
 #endif
 #endif
 
 
-  return(llr.w64);
+    return (llr.w64);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSD  (uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMUSD(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("smusd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("smusd %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMUSDX (uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMUSDX(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("smusdx %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("smusdx %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSD (uint32_t op1, uint32_t op2, uint32_t op3)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMLSD(uint32_t op1, uint32_t op2, uint32_t op3)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("smlsd %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
-  return(result);
+    __ASM volatile("smlsd %0, %1, %2, %3"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2), "r"(op3));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMLSDX (uint32_t op1, uint32_t op2, uint32_t op3)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMLSDX(uint32_t op1, uint32_t op2, uint32_t op3)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("smlsdx %0, %1, %2, %3" : "=r" (result) : "r" (op1), "r" (op2), "r" (op3) );
-  return(result);
+    __ASM volatile("smlsdx %0, %1, %2, %3"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2), "r"(op3));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint64_t __SMLSLD (uint32_t op1, uint32_t op2, uint64_t acc)
+__attribute__((always_inline)) __STATIC_INLINE uint64_t __SMLSLD(uint32_t op1, uint32_t op2, uint64_t acc)
 {
 {
-  union llreg_u{
-    uint32_t w32[2];
-    uint64_t w64;
-  } llr;
-  llr.w64 = acc;
+    union llreg_u
+    {
+        uint32_t w32[2];
+        uint64_t w64;
+    } llr;
+    llr.w64 = acc;
 
 
-#ifndef __ARMEB__   // Little endian
-  __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
-#else               // Big endian
-  __ASM volatile ("smlsld %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
+#ifndef __ARMEB__ // Little endian
+    __ASM volatile("smlsld %0, %1, %2, %3"
+                   : "=r"(llr.w32[0]), "=r"(llr.w32[1])
+                   : "r"(op1), "r"(op2), "0"(llr.w32[0]), "1"(llr.w32[1]));
+#else             // Big endian
+    __ASM volatile("smlsld %0, %1, %2, %3"
+                   : "=r"(llr.w32[1]), "=r"(llr.w32[0])
+                   : "r"(op1), "r"(op2), "0"(llr.w32[1]), "1"(llr.w32[0]));
 #endif
 #endif
 
 
-  return(llr.w64);
+    return (llr.w64);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint64_t __SMLSLDX (uint32_t op1, uint32_t op2, uint64_t acc)
+__attribute__((always_inline)) __STATIC_INLINE uint64_t __SMLSLDX(uint32_t op1, uint32_t op2, uint64_t acc)
 {
 {
-  union llreg_u{
-    uint32_t w32[2];
-    uint64_t w64;
-  } llr;
-  llr.w64 = acc;
+    union llreg_u
+    {
+        uint32_t w32[2];
+        uint64_t w64;
+    } llr;
+    llr.w64 = acc;
 
 
-#ifndef __ARMEB__   // Little endian
-  __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[0]), "=r" (llr.w32[1]): "r" (op1), "r" (op2) , "0" (llr.w32[0]), "1" (llr.w32[1]) );
-#else               // Big endian
-  __ASM volatile ("smlsldx %0, %1, %2, %3" : "=r" (llr.w32[1]), "=r" (llr.w32[0]): "r" (op1), "r" (op2) , "0" (llr.w32[1]), "1" (llr.w32[0]) );
+#ifndef __ARMEB__ // Little endian
+    __ASM volatile("smlsldx %0, %1, %2, %3"
+                   : "=r"(llr.w32[0]), "=r"(llr.w32[1])
+                   : "r"(op1), "r"(op2), "0"(llr.w32[0]), "1"(llr.w32[1]));
+#else             // Big endian
+    __ASM volatile("smlsldx %0, %1, %2, %3"
+                   : "=r"(llr.w32[1]), "=r"(llr.w32[0])
+                   : "r"(op1), "r"(op2), "0"(llr.w32[1]), "1"(llr.w32[0]));
 #endif
 #endif
 
 
-  return(llr.w64);
+    return (llr.w64);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SEL  (uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SEL(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("sel %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("sel %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QADD(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __QADD(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("qadd %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("qadd %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __QSUB(uint32_t op1, uint32_t op2)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __QSUB(uint32_t op1, uint32_t op2)
 {
 {
-  uint32_t result;
+    uint32_t result;
 
 
-  __ASM volatile ("qsub %0, %1, %2" : "=r" (result) : "r" (op1), "r" (op2) );
-  return(result);
+    __ASM volatile("qsub %0, %1, %2"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2));
+    return (result);
 }
 }
 
 
-#define __PKHBT(ARG1,ARG2,ARG3) \
-({                          \
-  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \
-  __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2), "I" (ARG3)  ); \
-  __RES; \
- })
+#define __PKHBT(ARG1, ARG2, ARG3)                             \
+    (                                                         \
+        {                                                     \
+            uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \
+            __ASM("pkhbt %0, %1, %2, lsl %3"                  \
+                  : "=r"(__RES)                               \
+                  : "r"(__ARG1), "r"(__ARG2), "I"(ARG3));     \
+            __RES;                                            \
+        })
 
 
-#define __PKHTB(ARG1,ARG2,ARG3) \
-({                          \
-  uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \
-  if (ARG3 == 0) \
-    __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2)  ); \
-  else \
-    __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) :  "r" (__ARG1), "r" (__ARG2), "I" (ARG3)  ); \
-  __RES; \
- })
+#define __PKHTB(ARG1, ARG2, ARG3)                             \
+    (                                                         \
+        {                                                     \
+            uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \
+            if (ARG3 == 0)                                    \
+                __ASM("pkhtb %0, %1, %2"                      \
+                      : "=r"(__RES)                           \
+                      : "r"(__ARG1), "r"(__ARG2));            \
+            else                                              \
+                __ASM("pkhtb %0, %1, %2, asr %3"              \
+                      : "=r"(__RES)                           \
+                      : "r"(__ARG1), "r"(__ARG2), "I"(ARG3)); \
+            __RES;                                            \
+        })
 
 
-__attribute__( ( always_inline ) ) __STATIC_INLINE uint32_t __SMMLA (int32_t op1, int32_t op2, int32_t op3)
+__attribute__((always_inline)) __STATIC_INLINE uint32_t __SMMLA(int32_t op1, int32_t op2, int32_t op3)
 {
 {
- int32_t result;
+    int32_t result;
 
 
- __ASM volatile ("smmla %0, %1, %2, %3" : "=r" (result): "r"  (op1), "r" (op2), "r" (op3) );
- return(result);
+    __ASM volatile("smmla %0, %1, %2, %3"
+                   : "=r"(result)
+                   : "r"(op1), "r"(op2), "r"(op3));
+    return (result);
 }
 }
 
 
-
-#elif defined ( __ICCARM__ ) /*------------------ ICC Compiler -------------------*/
+#elif defined(__ICCARM__) /*------------------ ICC Compiler -------------------*/
 /* IAR iccarm specific functions */
 /* IAR iccarm specific functions */
 #include <cmsis_iar.h>
 #include <cmsis_iar.h>
 
 
-
-#elif defined ( __TMS470__ ) /*---------------- TI CCS Compiler ------------------*/
+#elif defined(__TMS470__) /*---------------- TI CCS Compiler ------------------*/
 /* TI CCS specific functions */
 /* TI CCS specific functions */
 #include <cmsis_ccs.h>
 #include <cmsis_ccs.h>
 
 
-
-#elif defined ( __TASKING__ ) /*------------------ TASKING Compiler --------------*/
+#elif defined(__TASKING__) /*------------------ TASKING Compiler --------------*/
 /* TASKING carm specific functions */
 /* TASKING carm specific functions */
 /* not yet supported */
 /* not yet supported */
 
 
-
-#elif defined ( __CSMC__ ) /*------------------ COSMIC Compiler -------------------*/
+#elif defined(__CSMC__) /*------------------ COSMIC Compiler -------------------*/
 /* Cosmic specific functions */
 /* Cosmic specific functions */
 #include <cmsis_csm.h>
 #include <cmsis_csm.h>
 
 
 #endif
 #endif
 
 
-/*@} end of group CMSIS_SIMD_intrinsics */
-
+    /*@} end of group CMSIS_SIMD_intrinsics */
 
 
 #ifdef __cplusplus
 #ifdef __cplusplus
 }
 }

+ 51 - 502
bsp/swm320/libraries/CMSIS/DeviceSupport/SWM320.h

@@ -105,11 +105,11 @@ typedef enum IRQn
 #endif
 #endif
 
 
 #include <stdio.h>
 #include <stdio.h>
-#include "core_cm4.h" /* Cortex-M0 processor and core peripherals		     */
+#include "core_cm4.h" /* Cortex-M0 processor and core peripherals            */
 #include "system_SWM320.h"
 #include "system_SWM320.h"
 
 
 /******************************************************************************/
 /******************************************************************************/
-/*				Device Specific Peripheral registers structures			 */
+/*              Device Specific Peripheral registers structures          */
 /******************************************************************************/
 /******************************************************************************/
 typedef struct
 typedef struct
 {
 {
@@ -181,11 +181,11 @@ typedef struct
     __IO uint32_t ADC1IN7;
     __IO uint32_t ADC1IN7;
 } SYS_TypeDef;
 } SYS_TypeDef;
 
 
-#define SYS_CLKSEL_LFCK_Pos 0 //Low Frequency Clock Source	0 LRC	1 PLL
+#define SYS_CLKSEL_LFCK_Pos 0 //Low Frequency Clock Source  0 LRC   1 PLL
 #define SYS_CLKSEL_LFCK_Msk (0x01 << SYS_CLKSEL_LFCK_Pos)
 #define SYS_CLKSEL_LFCK_Msk (0x01 << SYS_CLKSEL_LFCK_Pos)
-#define SYS_CLKSEL_HFCK_Pos 1 //High Frequency Clock Source	0 HRC	1 XTAL
+#define SYS_CLKSEL_HFCK_Pos 1 //High Frequency Clock Source 0 HRC   1 XTAL
 #define SYS_CLKSEL_HFCK_Msk (0x01 << SYS_CLKSEL_HFCK_Pos)
 #define SYS_CLKSEL_HFCK_Msk (0x01 << SYS_CLKSEL_HFCK_Pos)
-#define SYS_CLKSEL_SYS_Pos 2 //系统时钟选择	0 LFCK	1 HFCK
+#define SYS_CLKSEL_SYS_Pos 2 //系统时钟选择   0 LFCK  1 HFCK
 #define SYS_CLKSEL_SYS_Msk (0x01 << SYS_CLKSEL_SYS_Pos)
 #define SYS_CLKSEL_SYS_Msk (0x01 << SYS_CLKSEL_SYS_Pos)
 
 
 #define SYS_CLKDIV_SYS_Pos 0 //系统时钟分频  0 1分频    1 2分频
 #define SYS_CLKDIV_SYS_Pos 0 //系统时钟分频  0 1分频    1 2分频
@@ -312,7 +312,7 @@ typedef struct
 #define SYS_LRCTRIM1_U_Pos 0 //LRC U调控制位
 #define SYS_LRCTRIM1_U_Pos 0 //LRC U调控制位
 #define SYS_LRCTRIM1_U_Msk (0x7FFF << SYS_LRCTRIM1_U_Pos)
 #define SYS_LRCTRIM1_U_Msk (0x7FFF << SYS_LRCTRIM1_U_Pos)
 
 
-#define SYS_HRCCR_DBL_Pos 0 //Double Frequency	0 20MHz	1 40MHz
+#define SYS_HRCCR_DBL_Pos 0 //Double Frequency  0 20MHz 1 40MHz
 #define SYS_HRCCR_DBL_Msk (0x01 << SYS_HRCCR_DBL_Pos)
 #define SYS_HRCCR_DBL_Msk (0x01 << SYS_HRCCR_DBL_Pos)
 #define SYS_HRCCR_OFF_Pos 1 //High speed RC Off
 #define SYS_HRCCR_OFF_Pos 1 //High speed RC Off
 #define SYS_HRCCR_OFF_Msk (0x01 << SYS_HRCCR_OFF_Pos)
 #define SYS_HRCCR_OFF_Msk (0x01 << SYS_HRCCR_OFF_Pos)
@@ -327,9 +327,9 @@ typedef struct
 #define SYS_PLLCR_OFF_Pos 2
 #define SYS_PLLCR_OFF_Pos 2
 #define SYS_PLLCR_OFF_Msk (0x01 << SYS_PLLCR_OFF_Pos)
 #define SYS_PLLCR_OFF_Msk (0x01 << SYS_PLLCR_OFF_Pos)
 
 
-#define SYS_PLLDIV_FBDIV_Pos 0 //PLL FeedBack分频寄存器                           \
-                               //VCO输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV \
-                               //PLL输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV / OUTDIV = VCO输出频率 / OUTDIV
+#define SYS_PLLDIV_FBDIV_Pos 0 /*   PLL FeedBack分频寄存器                           \
+                                    VCO输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV \
+                                    PLL输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV / OUTDIV = VCO输出频率 / OUTDIV   */
 #define SYS_PLLDIV_FBDIV_Msk (0x1FF << SYS_PLLDIV_FBDIV_Pos)
 #define SYS_PLLDIV_FBDIV_Msk (0x1FF << SYS_PLLDIV_FBDIV_Pos)
 #define SYS_PLLDIV_ADDIV_Pos 9 //ADC时钟基(即VCO输出分频后的时钟)经ADDIV分频后作为ADC的转换时钟
 #define SYS_PLLDIV_ADDIV_Pos 9 //ADC时钟基(即VCO输出分频后的时钟)经ADDIV分频后作为ADC的转换时钟
 #define SYS_PLLDIV_ADDIV_Msk (0x1F << SYS_PLLDIV_ADDIV_Pos)
 #define SYS_PLLDIV_ADDIV_Msk (0x1F << SYS_PLLDIV_ADDIV_Pos)
@@ -364,8 +364,8 @@ typedef struct
 
 
 typedef struct
 typedef struct
 {
 {
-    __IO uint32_t PORTA_SEL; //给PORTA_SEL[2n+2:2n]赋相应的值,将PORTA.PINn引脚配置成GPIO、模拟、数字等功能
-                             //当赋值为PORTA_PINn_FUNMUX时,PORTA.PINn引脚可通过PORTA_MUX寄存器连接到各种数字外设
+    __IO uint32_t PORTA_SEL; /*给PORTA_SEL[2n+2:2n]赋相应的值,将PORTA.PINn引脚配置成GPIO、模拟、数字等功能
+                             当赋值为PORTA_PINn_FUNMUX时,PORTA.PINn引脚可通过PORTA_MUX寄存器连接到各种数字外设 */
     __IO uint32_t PORTB_SEL;
     __IO uint32_t PORTB_SEL;
 
 
     __IO uint32_t PORTC_SEL;
     __IO uint32_t PORTC_SEL;
@@ -1165,464 +1165,23 @@ typedef struct
 #define PIN23 23
 #define PIN23 23
 #define PIN24 24
 #define PIN24 24
 
 
-    __IO uint32_t DIR; //0 输入	1 输出
+    __IO uint32_t DIR; //0 输入   1 输出
 
 
-    __IO uint32_t INTLVLTRG; //Interrupt Level Trigger  1 电平触发中断	0 边沿触发中断
+    __IO uint32_t INTLVLTRG; //Interrupt Level Trigger  1 电平触发中断    0 边沿触发中断
 
 
     __IO uint32_t INTBE; //Both Edge,当INTLVLTRG设为边沿触发中断时,此位置1表示上升沿和下降沿都触发中断,置0时触发边沿由INTRISEEN选择
     __IO uint32_t INTBE; //Both Edge,当INTLVLTRG设为边沿触发中断时,此位置1表示上升沿和下降沿都触发中断,置0时触发边沿由INTRISEEN选择
 
 
-    __IO uint32_t INTRISEEN; //Interrupt Rise Edge Enable   1 上升沿/高电平触发中断	0 下降沿/低电平触发中断
+    __IO uint32_t INTRISEEN; //Interrupt Rise Edge Enable   1 上升沿/高电平触发中断   0 下降沿/低电平触发中断
 
 
-    __IO uint32_t INTEN; //1 中断使能	0 中断禁止
+    __IO uint32_t INTEN; //1 中断使能   0 中断禁止
 
 
-    __IO uint32_t INTRAWSTAT; //中断检测单元是否检测到了触发中断的条件 1 检测到了中断触发条件	0 没有检测到中断触发条件
+    __IO uint32_t INTRAWSTAT; //中断检测单元是否检测到了触发中断的条件 1 检测到了中断触发条件    0 没有检测到中断触发条件
 
 
     __IO uint32_t INTSTAT; //INTSTAT.PIN0 = INTRAWSTAT.PIN0 & INTEN.PIN0
     __IO uint32_t INTSTAT; //INTSTAT.PIN0 = INTRAWSTAT.PIN0 & INTEN.PIN0
 
 
     __IO uint32_t INTCLR; //写1清除中断标志,只对边沿触发中断有用
     __IO uint32_t INTCLR; //写1清除中断标志,只对边沿触发中断有用
 } GPIO_TypeDef;
 } GPIO_TypeDef;
 
 
-#define GPIO_DATA_PIN0_Pos 0
-#define GPIO_DATA_PIN0_Msk (0x01 << GPIO_DATA_PIN0_Pos)
-#define GPIO_DATA_PIN1_Pos 1
-#define GPIO_DATA_PIN1_Msk (0x01 << GPIO_DATA_PIN1_Pos)
-#define GPIO_DATA_PIN2_Pos 2
-#define GPIO_DATA_PIN2_Msk (0x01 << GPIO_DATA_PIN2_Pos)
-#define GPIO_DATA_PIN3_Pos 3
-#define GPIO_DATA_PIN3_Msk (0x01 << GPIO_DATA_PIN3_Pos)
-#define GPIO_DATA_PIN4_Pos 4
-#define GPIO_DATA_PIN4_Msk (0x01 << GPIO_DATA_PIN4_Pos)
-#define GPIO_DATA_PIN5_Pos 5
-#define GPIO_DATA_PIN5_Msk (0x01 << GPIO_DATA_PIN5_Pos)
-#define GPIO_DATA_PIN6_Pos 6
-#define GPIO_DATA_PIN6_Msk (0x01 << GPIO_DATA_PIN6_Pos)
-#define GPIO_DATA_PIN7_Pos 7
-#define GPIO_DATA_PIN7_Msk (0x01 << GPIO_DATA_PIN7_Pos)
-#define GPIO_DATA_PIN8_Pos 8
-#define GPIO_DATA_PIN8_Msk (0x01 << GPIO_DATA_PIN8_Pos)
-#define GPIO_DATA_PIN9_Pos 9
-#define GPIO_DATA_PIN9_Msk (0x01 << GPIO_DATA_PIN9_Pos)
-#define GPIO_DATA_PIN10_Pos 10
-#define GPIO_DATA_PIN10_Msk (0x01 << GPIO_DATA_PIN10_Pos)
-#define GPIO_DATA_PIN11_Pos 11
-#define GPIO_DATA_PIN11_Msk (0x01 << GPIO_DATA_PIN11_Pos)
-#define GPIO_DATA_PIN12_Pos 12
-#define GPIO_DATA_PIN12_Msk (0x01 << GPIO_DATA_PIN12_Pos)
-#define GPIO_DATA_PIN13_Pos 13
-#define GPIO_DATA_PIN13_Msk (0x01 << GPIO_DATA_PIN13_Pos)
-#define GPIO_DATA_PIN14_Pos 14
-#define GPIO_DATA_PIN14_Msk (0x01 << GPIO_DATA_PIN14_Pos)
-#define GPIO_DATA_PIN15_Pos 15
-#define GPIO_DATA_PIN15_Msk (0x01 << GPIO_DATA_PIN15_Pos)
-#define GPIO_DATA_PIN16_Pos 16
-#define GPIO_DATA_PIN16_Msk (0x01 << GPIO_DATA_PIN16_Pos)
-#define GPIO_DATA_PIN17_Pos 17
-#define GPIO_DATA_PIN17_Msk (0x01 << GPIO_DATA_PIN17_Pos)
-#define GPIO_DATA_PIN18_Pos 18
-#define GPIO_DATA_PIN18_Msk (0x01 << GPIO_DATA_PIN18_Pos)
-#define GPIO_DATA_PIN19_Pos 19
-#define GPIO_DATA_PIN19_Msk (0x01 << GPIO_DATA_PIN19_Pos)
-#define GPIO_DATA_PIN20_Pos 20
-#define GPIO_DATA_PIN20_Msk (0x01 << GPIO_DATA_PIN20_Pos)
-#define GPIO_DATA_PIN21_Pos 21
-#define GPIO_DATA_PIN21_Msk (0x01 << GPIO_DATA_PIN21_Pos)
-#define GPIO_DATA_PIN22_Pos 22
-#define GPIO_DATA_PIN22_Msk (0x01 << GPIO_DATA_PIN22_Pos)
-#define GPIO_DATA_PIN23_Pos 23
-#define GPIO_DATA_PIN23_Msk (0x01 << GPIO_DATA_PIN23_Pos)
-
-#define GPIO_DIR_PIN0_Pos 0
-#define GPIO_DIR_PIN0_Msk (0x01 << GPIO_DIR_PIN0_Pos)
-#define GPIO_DIR_PIN1_Pos 1
-#define GPIO_DIR_PIN1_Msk (0x01 << GPIO_DIR_PIN1_Pos)
-#define GPIO_DIR_PIN2_Pos 2
-#define GPIO_DIR_PIN2_Msk (0x01 << GPIO_DIR_PIN2_Pos)
-#define GPIO_DIR_PIN3_Pos 3
-#define GPIO_DIR_PIN3_Msk (0x01 << GPIO_DIR_PIN3_Pos)
-#define GPIO_DIR_PIN4_Pos 4
-#define GPIO_DIR_PIN4_Msk (0x01 << GPIO_DIR_PIN4_Pos)
-#define GPIO_DIR_PIN5_Pos 5
-#define GPIO_DIR_PIN5_Msk (0x01 << GPIO_DIR_PIN5_Pos)
-#define GPIO_DIR_PIN6_Pos 6
-#define GPIO_DIR_PIN6_Msk (0x01 << GPIO_DIR_PIN6_Pos)
-#define GPIO_DIR_PIN7_Pos 7
-#define GPIO_DIR_PIN7_Msk (0x01 << GPIO_DIR_PIN7_Pos)
-#define GPIO_DIR_PIN8_Pos 8
-#define GPIO_DIR_PIN8_Msk (0x01 << GPIO_DIR_PIN8_Pos)
-#define GPIO_DIR_PIN9_Pos 9
-#define GPIO_DIR_PIN9_Msk (0x01 << GPIO_DIR_PIN9_Pos)
-#define GPIO_DIR_PIN10_Pos 10
-#define GPIO_DIR_PIN10_Msk (0x01 << GPIO_DIR_PIN10_Pos)
-#define GPIO_DIR_PIN11_Pos 11
-#define GPIO_DIR_PIN11_Msk (0x01 << GPIO_DIR_PIN11_Pos)
-#define GPIO_DIR_PIN12_Pos 12
-#define GPIO_DIR_PIN12_Msk (0x01 << GPIO_DIR_PIN12_Pos)
-#define GPIO_DIR_PIN13_Pos 13
-#define GPIO_DIR_PIN13_Msk (0x01 << GPIO_DIR_PIN13_Pos)
-#define GPIO_DIR_PIN14_Pos 14
-#define GPIO_DIR_PIN14_Msk (0x01 << GPIO_DIR_PIN14_Pos)
-#define GPIO_DIR_PIN15_Pos 15
-#define GPIO_DIR_PIN15_Msk (0x01 << GPIO_DIR_PIN15_Pos)
-#define GPIO_DIR_PIN16_Pos 16
-#define GPIO_DIR_PIN16_Msk (0x01 << GPIO_DIR_PIN16_Pos)
-#define GPIO_DIR_PIN17_Pos 17
-#define GPIO_DIR_PIN17_Msk (0x01 << GPIO_DIR_PIN17_Pos)
-#define GPIO_DIR_PIN18_Pos 18
-#define GPIO_DIR_PIN18_Msk (0x01 << GPIO_DIR_PIN18_Pos)
-#define GPIO_DIR_PIN19_Pos 19
-#define GPIO_DIR_PIN19_Msk (0x01 << GPIO_DIR_PIN19_Pos)
-#define GPIO_DIR_PIN20_Pos 20
-#define GPIO_DIR_PIN20_Msk (0x01 << GPIO_DIR_PIN20_Pos)
-#define GPIO_DIR_PIN21_Pos 21
-#define GPIO_DIR_PIN21_Msk (0x01 << GPIO_DIR_PIN21_Pos)
-#define GPIO_DIR_PIN22_Pos 22
-#define GPIO_DIR_PIN22_Msk (0x01 << GPIO_DIR_PIN22_Pos)
-#define GPIO_DIR_PIN23_Pos 23
-#define GPIO_DIR_PIN23_Msk (0x01 << GPIO_DIR_PIN23_Pos)
-
-#define GPIO_INTLVLTRG_PIN0_Pos 0
-#define GPIO_INTLVLTRG_PIN0_Msk (0x01 << GPIO_INTLVLTRG_PIN0_Pos)
-#define GPIO_INTLVLTRG_PIN1_Pos 1
-#define GPIO_INTLVLTRG_PIN1_Msk (0x01 << GPIO_INTLVLTRG_PIN1_Pos)
-#define GPIO_INTLVLTRG_PIN2_Pos 2
-#define GPIO_INTLVLTRG_PIN2_Msk (0x01 << GPIO_INTLVLTRG_PIN2_Pos)
-#define GPIO_INTLVLTRG_PIN3_Pos 3
-#define GPIO_INTLVLTRG_PIN3_Msk (0x01 << GPIO_INTLVLTRG_PIN3_Pos)
-#define GPIO_INTLVLTRG_PIN4_Pos 4
-#define GPIO_INTLVLTRG_PIN4_Msk (0x01 << GPIO_INTLVLTRG_PIN4_Pos)
-#define GPIO_INTLVLTRG_PIN5_Pos 5
-#define GPIO_INTLVLTRG_PIN5_Msk (0x01 << GPIO_INTLVLTRG_PIN5_Pos)
-#define GPIO_INTLVLTRG_PIN6_Pos 6
-#define GPIO_INTLVLTRG_PIN6_Msk (0x01 << GPIO_INTLVLTRG_PIN6_Pos)
-#define GPIO_INTLVLTRG_PIN7_Pos 7
-#define GPIO_INTLVLTRG_PIN7_Msk (0x01 << GPIO_INTLVLTRG_PIN7_Pos)
-#define GPIO_INTLVLTRG_PIN8_Pos 8
-#define GPIO_INTLVLTRG_PIN8_Msk (0x01 << GPIO_INTLVLTRG_PIN8_Pos)
-#define GPIO_INTLVLTRG_PIN9_Pos 9
-#define GPIO_INTLVLTRG_PIN9_Msk (0x01 << GPIO_INTLVLTRG_PIN9_Pos)
-#define GPIO_INTLVLTRG_PIN10_Pos 10
-#define GPIO_INTLVLTRG_PIN10_Msk (0x01 << GPIO_INTLVLTRG_PIN10_Pos)
-#define GPIO_INTLVLTRG_PIN11_Pos 11
-#define GPIO_INTLVLTRG_PIN11_Msk (0x01 << GPIO_INTLVLTRG_PIN11_Pos)
-#define GPIO_INTLVLTRG_PIN12_Pos 12
-#define GPIO_INTLVLTRG_PIN12_Msk (0x01 << GPIO_INTLVLTRG_PIN12_Pos)
-#define GPIO_INTLVLTRG_PIN13_Pos 13
-#define GPIO_INTLVLTRG_PIN13_Msk (0x01 << GPIO_INTLVLTRG_PIN13_Pos)
-#define GPIO_INTLVLTRG_PIN14_Pos 14
-#define GPIO_INTLVLTRG_PIN14_Msk (0x01 << GPIO_INTLVLTRG_PIN14_Pos)
-#define GPIO_INTLVLTRG_PIN15_Pos 15
-#define GPIO_INTLVLTRG_PIN15_Msk (0x01 << GPIO_INTLVLTRG_PIN15_Pos)
-#define GPIO_INTLVLTRG_PIN16_Pos 16
-#define GPIO_INTLVLTRG_PIN16_Msk (0x01 << GPIO_INTLVLTRG_PIN16_Pos)
-#define GPIO_INTLVLTRG_PIN17_Pos 17
-#define GPIO_INTLVLTRG_PIN17_Msk (0x01 << GPIO_INTLVLTRG_PIN17_Pos)
-#define GPIO_INTLVLTRG_PIN18_Pos 18
-#define GPIO_INTLVLTRG_PIN18_Msk (0x01 << GPIO_INTLVLTRG_PIN18_Pos)
-#define GPIO_INTLVLTRG_PIN19_Pos 19
-#define GPIO_INTLVLTRG_PIN19_Msk (0x01 << GPIO_INTLVLTRG_PIN19_Pos)
-#define GPIO_INTLVLTRG_PIN20_Pos 20
-#define GPIO_INTLVLTRG_PIN20_Msk (0x01 << GPIO_INTLVLTRG_PIN20_Pos)
-#define GPIO_INTLVLTRG_PIN21_Pos 21
-#define GPIO_INTLVLTRG_PIN21_Msk (0x01 << GPIO_INTLVLTRG_PIN21_Pos)
-#define GPIO_INTLVLTRG_PIN22_Pos 22
-#define GPIO_INTLVLTRG_PIN22_Msk (0x01 << GPIO_INTLVLTRG_PIN22_Pos)
-#define GPIO_INTLVLTRG_PIN23_Pos 23
-#define GPIO_INTLVLTRG_PIN23_Msk (0x01 << GPIO_INTLVLTRG_PIN23_Pos)
-
-#define GPIO_INTBE_PIN0_Pos 0
-#define GPIO_INTBE_PIN0_Msk (0x01 << GPIO_INTBE_PIN0_Pos)
-#define GPIO_INTBE_PIN1_Pos 1
-#define GPIO_INTBE_PIN1_Msk (0x01 << GPIO_INTBE_PIN1_Pos)
-#define GPIO_INTBE_PIN2_Pos 2
-#define GPIO_INTBE_PIN2_Msk (0x01 << GPIO_INTBE_PIN2_Pos)
-#define GPIO_INTBE_PIN3_Pos 3
-#define GPIO_INTBE_PIN3_Msk (0x01 << GPIO_INTBE_PIN3_Pos)
-#define GPIO_INTBE_PIN4_Pos 4
-#define GPIO_INTBE_PIN4_Msk (0x01 << GPIO_INTBE_PIN4_Pos)
-#define GPIO_INTBE_PIN5_Pos 5
-#define GPIO_INTBE_PIN5_Msk (0x01 << GPIO_INTBE_PIN5_Pos)
-#define GPIO_INTBE_PIN6_Pos 6
-#define GPIO_INTBE_PIN6_Msk (0x01 << GPIO_INTBE_PIN6_Pos)
-#define GPIO_INTBE_PIN7_Pos 7
-#define GPIO_INTBE_PIN7_Msk (0x01 << GPIO_INTBE_PIN7_Pos)
-#define GPIO_INTBE_PIN8_Pos 8
-#define GPIO_INTBE_PIN8_Msk (0x01 << GPIO_INTBE_PIN8_Pos)
-#define GPIO_INTBE_PIN9_Pos 9
-#define GPIO_INTBE_PIN9_Msk (0x01 << GPIO_INTBE_PIN9_Pos)
-#define GPIO_INTBE_PIN10_Pos 10
-#define GPIO_INTBE_PIN10_Msk (0x01 << GPIO_INTBE_PIN10_Pos)
-#define GPIO_INTBE_PIN11_Pos 11
-#define GPIO_INTBE_PIN11_Msk (0x01 << GPIO_INTBE_PIN11_Pos)
-#define GPIO_INTBE_PIN12_Pos 12
-#define GPIO_INTBE_PIN12_Msk (0x01 << GPIO_INTBE_PIN12_Pos)
-#define GPIO_INTBE_PIN13_Pos 13
-#define GPIO_INTBE_PIN13_Msk (0x01 << GPIO_INTBE_PIN13_Pos)
-#define GPIO_INTBE_PIN14_Pos 14
-#define GPIO_INTBE_PIN14_Msk (0x01 << GPIO_INTBE_PIN14_Pos)
-#define GPIO_INTBE_PIN15_Pos 15
-#define GPIO_INTBE_PIN15_Msk (0x01 << GPIO_INTBE_PIN15_Pos)
-#define GPIO_INTBE_PIN16_Pos 16
-#define GPIO_INTBE_PIN16_Msk (0x01 << GPIO_INTBE_PIN16_Pos)
-#define GPIO_INTBE_PIN17_Pos 17
-#define GPIO_INTBE_PIN17_Msk (0x01 << GPIO_INTBE_PIN17_Pos)
-#define GPIO_INTBE_PIN18_Pos 18
-#define GPIO_INTBE_PIN18_Msk (0x01 << GPIO_INTBE_PIN18_Pos)
-#define GPIO_INTBE_PIN19_Pos 19
-#define GPIO_INTBE_PIN19_Msk (0x01 << GPIO_INTBE_PIN19_Pos)
-#define GPIO_INTBE_PIN20_Pos 20
-#define GPIO_INTBE_PIN20_Msk (0x01 << GPIO_INTBE_PIN20_Pos)
-#define GPIO_INTBE_PIN21_Pos 21
-#define GPIO_INTBE_PIN21_Msk (0x01 << GPIO_INTBE_PIN21_Pos)
-#define GPIO_INTBE_PIN22_Pos 22
-#define GPIO_INTBE_PIN22_Msk (0x01 << GPIO_INTBE_PIN22_Pos)
-#define GPIO_INTBE_PIN23_Pos 23
-#define GPIO_INTBE_PIN23_Msk (0x01 << GPIO_INTBE_PIN23_Pos)
-
-#define GPIO_INTRISEEN_PIN0_Pos 0
-#define GPIO_INTRISEEN_PIN0_Msk (0x01 << GPIO_INTRISEEN_PIN0_Pos)
-#define GPIO_INTRISEEN_PIN1_Pos 1
-#define GPIO_INTRISEEN_PIN1_Msk (0x01 << GPIO_INTRISEEN_PIN1_Pos)
-#define GPIO_INTRISEEN_PIN2_Pos 2
-#define GPIO_INTRISEEN_PIN2_Msk (0x01 << GPIO_INTRISEEN_PIN2_Pos)
-#define GPIO_INTRISEEN_PIN3_Pos 3
-#define GPIO_INTRISEEN_PIN3_Msk (0x01 << GPIO_INTRISEEN_PIN3_Pos)
-#define GPIO_INTRISEEN_PIN4_Pos 4
-#define GPIO_INTRISEEN_PIN4_Msk (0x01 << GPIO_INTRISEEN_PIN4_Pos)
-#define GPIO_INTRISEEN_PIN5_Pos 5
-#define GPIO_INTRISEEN_PIN5_Msk (0x01 << GPIO_INTRISEEN_PIN5_Pos)
-#define GPIO_INTRISEEN_PIN6_Pos 6
-#define GPIO_INTRISEEN_PIN6_Msk (0x01 << GPIO_INTRISEEN_PIN6_Pos)
-#define GPIO_INTRISEEN_PIN7_Pos 7
-#define GPIO_INTRISEEN_PIN7_Msk (0x01 << GPIO_INTRISEEN_PIN7_Pos)
-#define GPIO_INTRISEEN_PIN8_Pos 8
-#define GPIO_INTRISEEN_PIN8_Msk (0x01 << GPIO_INTRISEEN_PIN8_Pos)
-#define GPIO_INTRISEEN_PIN9_Pos 9
-#define GPIO_INTRISEEN_PIN9_Msk (0x01 << GPIO_INTRISEEN_PIN9_Pos)
-#define GPIO_INTRISEEN_PIN10_Pos 10
-#define GPIO_INTRISEEN_PIN10_Msk (0x01 << GPIO_INTRISEEN_PIN10_Pos)
-#define GPIO_INTRISEEN_PIN11_Pos 11
-#define GPIO_INTRISEEN_PIN11_Msk (0x01 << GPIO_INTRISEEN_PIN11_Pos)
-#define GPIO_INTRISEEN_PIN12_Pos 12
-#define GPIO_INTRISEEN_PIN12_Msk (0x01 << GPIO_INTRISEEN_PIN12_Pos)
-#define GPIO_INTRISEEN_PIN13_Pos 13
-#define GPIO_INTRISEEN_PIN13_Msk (0x01 << GPIO_INTRISEEN_PIN13_Pos)
-#define GPIO_INTRISEEN_PIN14_Pos 14
-#define GPIO_INTRISEEN_PIN14_Msk (0x01 << GPIO_INTRISEEN_PIN14_Pos)
-#define GPIO_INTRISEEN_PIN15_Pos 15
-#define GPIO_INTRISEEN_PIN15_Msk (0x01 << GPIO_INTRISEEN_PIN15_Pos)
-#define GPIO_INTRISEEN_PIN16_Pos 16
-#define GPIO_INTRISEEN_PIN16_Msk (0x01 << GPIO_INTRISEEN_PIN16_Pos)
-#define GPIO_INTRISEEN_PIN17_Pos 17
-#define GPIO_INTRISEEN_PIN17_Msk (0x01 << GPIO_INTRISEEN_PIN17_Pos)
-#define GPIO_INTRISEEN_PIN18_Pos 18
-#define GPIO_INTRISEEN_PIN18_Msk (0x01 << GPIO_INTRISEEN_PIN18_Pos)
-#define GPIO_INTRISEEN_PIN19_Pos 19
-#define GPIO_INTRISEEN_PIN19_Msk (0x01 << GPIO_INTRISEEN_PIN19_Pos)
-#define GPIO_INTRISEEN_PIN20_Pos 20
-#define GPIO_INTRISEEN_PIN20_Msk (0x01 << GPIO_INTRISEEN_PIN20_Pos)
-#define GPIO_INTRISEEN_PIN21_Pos 21
-#define GPIO_INTRISEEN_PIN21_Msk (0x01 << GPIO_INTRISEEN_PIN21_Pos)
-#define GPIO_INTRISEEN_PIN22_Pos 22
-#define GPIO_INTRISEEN_PIN22_Msk (0x01 << GPIO_INTRISEEN_PIN22_Pos)
-#define GPIO_INTRISEEN_PIN23_Pos 23
-#define GPIO_INTRISEEN_PIN23_Msk (0x01 << GPIO_INTRISEEN_PIN23_Pos)
-
-#define GPIO_INTEN_PIN0_Pos 0
-#define GPIO_INTEN_PIN0_Msk (0x01 << GPIO_INTEN_PIN0_Pos)
-#define GPIO_INTEN_PIN1_Pos 1
-#define GPIO_INTEN_PIN1_Msk (0x01 << GPIO_INTEN_PIN1_Pos)
-#define GPIO_INTEN_PIN2_Pos 2
-#define GPIO_INTEN_PIN2_Msk (0x01 << GPIO_INTEN_PIN2_Pos)
-#define GPIO_INTEN_PIN3_Pos 3
-#define GPIO_INTEN_PIN3_Msk (0x01 << GPIO_INTEN_PIN3_Pos)
-#define GPIO_INTEN_PIN4_Pos 4
-#define GPIO_INTEN_PIN4_Msk (0x01 << GPIO_INTEN_PIN4_Pos)
-#define GPIO_INTEN_PIN5_Pos 5
-#define GPIO_INTEN_PIN5_Msk (0x01 << GPIO_INTEN_PIN5_Pos)
-#define GPIO_INTEN_PIN6_Pos 6
-#define GPIO_INTEN_PIN6_Msk (0x01 << GPIO_INTEN_PIN6_Pos)
-#define GPIO_INTEN_PIN7_Pos 7
-#define GPIO_INTEN_PIN7_Msk (0x01 << GPIO_INTEN_PIN7_Pos)
-#define GPIO_INTEN_PIN8_Pos 8
-#define GPIO_INTEN_PIN8_Msk (0x01 << GPIO_INTEN_PIN8_Pos)
-#define GPIO_INTEN_PIN9_Pos 9
-#define GPIO_INTEN_PIN9_Msk (0x01 << GPIO_INTEN_PIN9_Pos)
-#define GPIO_INTEN_PIN10_Pos 10
-#define GPIO_INTEN_PIN10_Msk (0x01 << GPIO_INTEN_PIN10_Pos)
-#define GPIO_INTEN_PIN11_Pos 11
-#define GPIO_INTEN_PIN11_Msk (0x01 << GPIO_INTEN_PIN11_Pos)
-#define GPIO_INTEN_PIN12_Pos 12
-#define GPIO_INTEN_PIN12_Msk (0x01 << GPIO_INTEN_PIN12_Pos)
-#define GPIO_INTEN_PIN13_Pos 13
-#define GPIO_INTEN_PIN13_Msk (0x01 << GPIO_INTEN_PIN13_Pos)
-#define GPIO_INTEN_PIN14_Pos 14
-#define GPIO_INTEN_PIN14_Msk (0x01 << GPIO_INTEN_PIN14_Pos)
-#define GPIO_INTEN_PIN15_Pos 15
-#define GPIO_INTEN_PIN15_Msk (0x01 << GPIO_INTEN_PIN15_Pos)
-#define GPIO_INTEN_PIN16_Pos 16
-#define GPIO_INTEN_PIN16_Msk (0x01 << GPIO_INTEN_PIN16_Pos)
-#define GPIO_INTEN_PIN17_Pos 17
-#define GPIO_INTEN_PIN17_Msk (0x01 << GPIO_INTEN_PIN17_Pos)
-#define GPIO_INTEN_PIN18_Pos 18
-#define GPIO_INTEN_PIN18_Msk (0x01 << GPIO_INTEN_PIN18_Pos)
-#define GPIO_INTEN_PIN19_Pos 19
-#define GPIO_INTEN_PIN19_Msk (0x01 << GPIO_INTEN_PIN19_Pos)
-#define GPIO_INTEN_PIN20_Pos 20
-#define GPIO_INTEN_PIN20_Msk (0x01 << GPIO_INTEN_PIN20_Pos)
-#define GPIO_INTEN_PIN21_Pos 21
-#define GPIO_INTEN_PIN21_Msk (0x01 << GPIO_INTEN_PIN21_Pos)
-#define GPIO_INTEN_PIN22_Pos 22
-#define GPIO_INTEN_PIN22_Msk (0x01 << GPIO_INTEN_PIN22_Pos)
-#define GPIO_INTEN_PIN23_Pos 23
-#define GPIO_INTEN_PIN23_Msk (0x01 << GPIO_INTEN_PIN23_Pos)
-
-#define GPIO_INTRAWSTAT_PIN0_Pos 0
-#define GPIO_INTRAWSTAT_PIN0_Msk (0x01 << GPIO_INTRAWSTAT_PIN0_Pos)
-#define GPIO_INTRAWSTAT_PIN1_Pos 1
-#define GPIO_INTRAWSTAT_PIN1_Msk (0x01 << GPIO_INTRAWSTAT_PIN1_Pos)
-#define GPIO_INTRAWSTAT_PIN2_Pos 2
-#define GPIO_INTRAWSTAT_PIN2_Msk (0x01 << GPIO_INTRAWSTAT_PIN2_Pos)
-#define GPIO_INTRAWSTAT_PIN3_Pos 3
-#define GPIO_INTRAWSTAT_PIN3_Msk (0x01 << GPIO_INTRAWSTAT_PIN3_Pos)
-#define GPIO_INTRAWSTAT_PIN4_Pos 4
-#define GPIO_INTRAWSTAT_PIN4_Msk (0x01 << GPIO_INTRAWSTAT_PIN4_Pos)
-#define GPIO_INTRAWSTAT_PIN5_Pos 5
-#define GPIO_INTRAWSTAT_PIN5_Msk (0x01 << GPIO_INTRAWSTAT_PIN5_Pos)
-#define GPIO_INTRAWSTAT_PIN6_Pos 6
-#define GPIO_INTRAWSTAT_PIN6_Msk (0x01 << GPIO_INTRAWSTAT_PIN6_Pos)
-#define GPIO_INTRAWSTAT_PIN7_Pos 7
-#define GPIO_INTRAWSTAT_PIN7_Msk (0x01 << GPIO_INTRAWSTAT_PIN7_Pos)
-#define GPIO_INTRAWSTAT_PIN8_Pos 8
-#define GPIO_INTRAWSTAT_PIN8_Msk (0x01 << GPIO_INTRAWSTAT_PIN8_Pos)
-#define GPIO_INTRAWSTAT_PIN9_Pos 9
-#define GPIO_INTRAWSTAT_PIN9_Msk (0x01 << GPIO_INTRAWSTAT_PIN9_Pos)
-#define GPIO_INTRAWSTAT_PIN10_Pos 10
-#define GPIO_INTRAWSTAT_PIN10_Msk (0x01 << GPIO_INTRAWSTAT_PIN10_Pos)
-#define GPIO_INTRAWSTAT_PIN11_Pos 11
-#define GPIO_INTRAWSTAT_PIN11_Msk (0x01 << GPIO_INTRAWSTAT_PIN11_Pos)
-#define GPIO_INTRAWSTAT_PIN12_Pos 12
-#define GPIO_INTRAWSTAT_PIN12_Msk (0x01 << GPIO_INTRAWSTAT_PIN12_Pos)
-#define GPIO_INTRAWSTAT_PIN13_Pos 13
-#define GPIO_INTRAWSTAT_PIN13_Msk (0x01 << GPIO_INTRAWSTAT_PIN13_Pos)
-#define GPIO_INTRAWSTAT_PIN14_Pos 14
-#define GPIO_INTRAWSTAT_PIN14_Msk (0x01 << GPIO_INTRAWSTAT_PIN14_Pos)
-#define GPIO_INTRAWSTAT_PIN15_Pos 15
-#define GPIO_INTRAWSTAT_PIN15_Msk (0x01 << GPIO_INTRAWSTAT_PIN15_Pos)
-#define GPIO_INTRAWSTAT_PIN16_Pos 16
-#define GPIO_INTRAWSTAT_PIN16_Msk (0x01 << GPIO_INTRAWSTAT_PIN16_Pos)
-#define GPIO_INTRAWSTAT_PIN17_Pos 17
-#define GPIO_INTRAWSTAT_PIN17_Msk (0x01 << GPIO_INTRAWSTAT_PIN17_Pos)
-#define GPIO_INTRAWSTAT_PIN18_Pos 18
-#define GPIO_INTRAWSTAT_PIN18_Msk (0x01 << GPIO_INTRAWSTAT_PIN18_Pos)
-#define GPIO_INTRAWSTAT_PIN19_Pos 19
-#define GPIO_INTRAWSTAT_PIN19_Msk (0x01 << GPIO_INTRAWSTAT_PIN19_Pos)
-#define GPIO_INTRAWSTAT_PIN20_Pos 20
-#define GPIO_INTRAWSTAT_PIN20_Msk (0x01 << GPIO_INTRAWSTAT_PIN20_Pos)
-#define GPIO_INTRAWSTAT_PIN21_Pos 21
-#define GPIO_INTRAWSTAT_PIN21_Msk (0x01 << GPIO_INTRAWSTAT_PIN21_Pos)
-#define GPIO_INTRAWSTAT_PIN22_Pos 22
-#define GPIO_INTRAWSTAT_PIN22_Msk (0x01 << GPIO_INTRAWSTAT_PIN22_Pos)
-#define GPIO_INTRAWSTAT_PIN23_Pos 23
-#define GPIO_INTRAWSTAT_PIN23_Msk (0x01 << GPIO_INTRAWSTAT_PIN23_Pos)
-
-#define GPIO_INTSTAT_PIN0_Pos 0
-#define GPIO_INTSTAT_PIN0_Msk (0x01 << GPIO_INTSTAT_PIN0_Pos)
-#define GPIO_INTSTAT_PIN1_Pos 1
-#define GPIO_INTSTAT_PIN1_Msk (0x01 << GPIO_INTSTAT_PIN1_Pos)
-#define GPIO_INTSTAT_PIN2_Pos 2
-#define GPIO_INTSTAT_PIN2_Msk (0x01 << GPIO_INTSTAT_PIN2_Pos)
-#define GPIO_INTSTAT_PIN3_Pos 3
-#define GPIO_INTSTAT_PIN3_Msk (0x01 << GPIO_INTSTAT_PIN3_Pos)
-#define GPIO_INTSTAT_PIN4_Pos 4
-#define GPIO_INTSTAT_PIN4_Msk (0x01 << GPIO_INTSTAT_PIN4_Pos)
-#define GPIO_INTSTAT_PIN5_Pos 5
-#define GPIO_INTSTAT_PIN5_Msk (0x01 << GPIO_INTSTAT_PIN5_Pos)
-#define GPIO_INTSTAT_PIN6_Pos 6
-#define GPIO_INTSTAT_PIN6_Msk (0x01 << GPIO_INTSTAT_PIN6_Pos)
-#define GPIO_INTSTAT_PIN7_Pos 7
-#define GPIO_INTSTAT_PIN7_Msk (0x01 << GPIO_INTSTAT_PIN7_Pos)
-#define GPIO_INTSTAT_PIN8_Pos 8
-#define GPIO_INTSTAT_PIN8_Msk (0x01 << GPIO_INTSTAT_PIN8_Pos)
-#define GPIO_INTSTAT_PIN9_Pos 9
-#define GPIO_INTSTAT_PIN9_Msk (0x01 << GPIO_INTSTAT_PIN9_Pos)
-#define GPIO_INTSTAT_PIN10_Pos 10
-#define GPIO_INTSTAT_PIN10_Msk (0x01 << GPIO_INTSTAT_PIN10_Pos)
-#define GPIO_INTSTAT_PIN11_Pos 11
-#define GPIO_INTSTAT_PIN11_Msk (0x01 << GPIO_INTSTAT_PIN11_Pos)
-#define GPIO_INTSTAT_PIN12_Pos 12
-#define GPIO_INTSTAT_PIN12_Msk (0x01 << GPIO_INTSTAT_PIN12_Pos)
-#define GPIO_INTSTAT_PIN13_Pos 13
-#define GPIO_INTSTAT_PIN13_Msk (0x01 << GPIO_INTSTAT_PIN13_Pos)
-#define GPIO_INTSTAT_PIN14_Pos 14
-#define GPIO_INTSTAT_PIN14_Msk (0x01 << GPIO_INTSTAT_PIN14_Pos)
-#define GPIO_INTSTAT_PIN15_Pos 15
-#define GPIO_INTSTAT_PIN15_Msk (0x01 << GPIO_INTSTAT_PIN15_Pos)
-#define GPIO_INTSTAT_PIN16_Pos 16
-#define GPIO_INTSTAT_PIN16_Msk (0x01 << GPIO_INTSTAT_PIN16_Pos)
-#define GPIO_INTSTAT_PIN17_Pos 17
-#define GPIO_INTSTAT_PIN17_Msk (0x01 << GPIO_INTSTAT_PIN17_Pos)
-#define GPIO_INTSTAT_PIN18_Pos 18
-#define GPIO_INTSTAT_PIN18_Msk (0x01 << GPIO_INTSTAT_PIN18_Pos)
-#define GPIO_INTSTAT_PIN19_Pos 19
-#define GPIO_INTSTAT_PIN19_Msk (0x01 << GPIO_INTSTAT_PIN19_Pos)
-#define GPIO_INTSTAT_PIN20_Pos 20
-#define GPIO_INTSTAT_PIN20_Msk (0x01 << GPIO_INTSTAT_PIN20_Pos)
-#define GPIO_INTSTAT_PIN21_Pos 21
-#define GPIO_INTSTAT_PIN21_Msk (0x01 << GPIO_INTSTAT_PIN21_Pos)
-#define GPIO_INTSTAT_PIN22_Pos 22
-#define GPIO_INTSTAT_PIN22_Msk (0x01 << GPIO_INTSTAT_PIN22_Pos)
-#define GPIO_INTSTAT_PIN23_Pos 23
-#define GPIO_INTSTAT_PIN23_Msk (0x01 << GPIO_INTSTAT_PIN23_Pos)
-
-#define GPIO_INTCLR_PIN0_Pos 0
-#define GPIO_INTCLR_PIN0_Msk (0x01 << GPIO_INTCLR_PIN0_Pos)
-#define GPIO_INTCLR_PIN1_Pos 1
-#define GPIO_INTCLR_PIN1_Msk (0x01 << GPIO_INTCLR_PIN1_Pos)
-#define GPIO_INTCLR_PIN2_Pos 2
-#define GPIO_INTCLR_PIN2_Msk (0x01 << GPIO_INTCLR_PIN2_Pos)
-#define GPIO_INTCLR_PIN3_Pos 3
-#define GPIO_INTCLR_PIN3_Msk (0x01 << GPIO_INTCLR_PIN3_Pos)
-#define GPIO_INTCLR_PIN4_Pos 4
-#define GPIO_INTCLR_PIN4_Msk (0x01 << GPIO_INTCLR_PIN4_Pos)
-#define GPIO_INTCLR_PIN5_Pos 5
-#define GPIO_INTCLR_PIN5_Msk (0x01 << GPIO_INTCLR_PIN5_Pos)
-#define GPIO_INTCLR_PIN6_Pos 6
-#define GPIO_INTCLR_PIN6_Msk (0x01 << GPIO_INTCLR_PIN6_Pos)
-#define GPIO_INTCLR_PIN7_Pos 7
-#define GPIO_INTCLR_PIN7_Msk (0x01 << GPIO_INTCLR_PIN7_Pos)
-#define GPIO_INTCLR_PIN8_Pos 8
-#define GPIO_INTCLR_PIN8_Msk (0x01 << GPIO_INTCLR_PIN8_Pos)
-#define GPIO_INTCLR_PIN9_Pos 9
-#define GPIO_INTCLR_PIN9_Msk (0x01 << GPIO_INTCLR_PIN9_Pos)
-#define GPIO_INTCLR_PIN10_Pos 10
-#define GPIO_INTCLR_PIN10_Msk (0x01 << GPIO_INTCLR_PIN10_Pos)
-#define GPIO_INTCLR_PIN11_Pos 11
-#define GPIO_INTCLR_PIN11_Msk (0x01 << GPIO_INTCLR_PIN11_Pos)
-#define GPIO_INTCLR_PIN12_Pos 12
-#define GPIO_INTCLR_PIN12_Msk (0x01 << GPIO_INTCLR_PIN12_Pos)
-#define GPIO_INTCLR_PIN13_Pos 13
-#define GPIO_INTCLR_PIN13_Msk (0x01 << GPIO_INTCLR_PIN13_Pos)
-#define GPIO_INTCLR_PIN14_Pos 14
-#define GPIO_INTCLR_PIN14_Msk (0x01 << GPIO_INTCLR_PIN14_Pos)
-#define GPIO_INTCLR_PIN15_Pos 15
-#define GPIO_INTCLR_PIN15_Msk (0x01 << GPIO_INTCLR_PIN15_Pos)
-#define GPIO_INTCLR_PIN16_Pos 16
-#define GPIO_INTCLR_PIN16_Msk (0x01 << GPIO_INTCLR_PIN16_Pos)
-#define GPIO_INTCLR_PIN17_Pos 17
-#define GPIO_INTCLR_PIN17_Msk (0x01 << GPIO_INTCLR_PIN17_Pos)
-#define GPIO_INTCLR_PIN18_Pos 18
-#define GPIO_INTCLR_PIN18_Msk (0x01 << GPIO_INTCLR_PIN18_Pos)
-#define GPIO_INTCLR_PIN19_Pos 19
-#define GPIO_INTCLR_PIN19_Msk (0x01 << GPIO_INTCLR_PIN19_Pos)
-#define GPIO_INTCLR_PIN20_Pos 20
-#define GPIO_INTCLR_PIN20_Msk (0x01 << GPIO_INTCLR_PIN20_Pos)
-#define GPIO_INTCLR_PIN21_Pos 21
-#define GPIO_INTCLR_PIN21_Msk (0x01 << GPIO_INTCLR_PIN21_Pos)
-#define GPIO_INTCLR_PIN22_Pos 22
-#define GPIO_INTCLR_PIN22_Msk (0x01 << GPIO_INTCLR_PIN22_Pos)
-#define GPIO_INTCLR_PIN23_Pos 23
-#define GPIO_INTCLR_PIN23_Msk (0x01 << GPIO_INTCLR_PIN23_Pos)
-
 typedef struct
 typedef struct
 {
 {
     __IO uint32_t LDVAL; //定时器加载值,使能后定时器从此数值开始向下递减计数
     __IO uint32_t LDVAL; //定时器加载值,使能后定时器从此数值开始向下递减计数
@@ -1634,7 +1193,7 @@ typedef struct
 
 
 #define TIMR_CTRL_EN_Pos 0 //此位赋1导致TIMR从LDVAL开始向下递减计数
 #define TIMR_CTRL_EN_Pos 0 //此位赋1导致TIMR从LDVAL开始向下递减计数
 #define TIMR_CTRL_EN_Msk (0x01 << TIMR_CTRL_EN_Pos)
 #define TIMR_CTRL_EN_Msk (0x01 << TIMR_CTRL_EN_Pos)
-#define TIMR_CTRL_CLKSRC_Pos 1 //时钟源:0 内部系统时钟	1 外部引脚脉冲计数
+#define TIMR_CTRL_CLKSRC_Pos 1 //时钟源:0 内部系统时钟   1 外部引脚脉冲计数
 #define TIMR_CTRL_CLKSRC_Msk (0x01 << TIMR_CTRL_CLKSRC_Pos)
 #define TIMR_CTRL_CLKSRC_Msk (0x01 << TIMR_CTRL_CLKSRC_Pos)
 #define TIMR_CTRL_CASCADE_Pos 2 //1 TIMRx的计数时钟为TIMRx-1的溢出信号
 #define TIMR_CTRL_CASCADE_Pos 2 //1 TIMRx的计数时钟为TIMRx-1的溢出信号
 #define TIMR_CTRL_CASCADE_Msk (0x01 << TIMR_CTRL_CASCADE_Pos)
 #define TIMR_CTRL_CASCADE_Msk (0x01 << TIMR_CTRL_CASCADE_Pos)
@@ -1656,9 +1215,9 @@ typedef struct
 
 
 #define TIMRG_PCTRL_EN_Pos 0 //开始测量脉宽,脉宽内32位计数器从0开始向上计数
 #define TIMRG_PCTRL_EN_Pos 0 //开始测量脉宽,脉宽内32位计数器从0开始向上计数
 #define TIMRG_PCTRL_EN_Msk (0x01 << TIMRG_PCTRL_EN_Pos)
 #define TIMRG_PCTRL_EN_Msk (0x01 << TIMRG_PCTRL_EN_Pos)
-#define TIMRG_PCTRL_HIGH_Pos 1 //0 测量低电平长度	1 测量高电平长度
+#define TIMRG_PCTRL_HIGH_Pos 1 //0 测量低电平长度  1 测量高电平长度
 #define TIMRG_PCTRL_HIGH_Msk (0x01 << TIMRG_PCTRL_HIGH_Pos)
 #define TIMRG_PCTRL_HIGH_Msk (0x01 << TIMRG_PCTRL_HIGH_Pos)
-#define TIMRG_PCTRL_CLKSRC_Pos 2 //时钟源:0 内部系统时钟	1 脉宽测量模块变成一个计数器,不再具有脉宽测量功能
+#define TIMRG_PCTRL_CLKSRC_Pos 2 //时钟源:0 内部系统时钟 1 脉宽测量模块变成一个计数器,不再具有脉宽测量功能
 #define TIMRG_PCTRL_CLKSRC_Msk (0x01 << TIMRG_PCTRL_CLKSRC_Pos)
 #define TIMRG_PCTRL_CLKSRC_Msk (0x01 << TIMRG_PCTRL_CLKSRC_Pos)
 
 
 #define TIMRG_IE_TIMR0_Pos 0
 #define TIMRG_IE_TIMR0_Pos 0
@@ -1731,7 +1290,7 @@ typedef struct
 #define UART_DATA_PAERR_Pos 10 //Parity Error
 #define UART_DATA_PAERR_Pos 10 //Parity Error
 #define UART_DATA_PAERR_Msk (0x01 << UART_DATA_PAERR_Pos)
 #define UART_DATA_PAERR_Msk (0x01 << UART_DATA_PAERR_Pos)
 
 
-#define UART_CTRL_TXIDLE_Pos 0 //TX IDLE: 0 正在发送数据	1 空闲状态,没有数据发送
+#define UART_CTRL_TXIDLE_Pos 0 //TX IDLE: 0 正在发送数据  1 空闲状态,没有数据发送
 #define UART_CTRL_TXIDLE_Msk (0x01 << UART_CTRL_TXIDLE_Pos)
 #define UART_CTRL_TXIDLE_Msk (0x01 << UART_CTRL_TXIDLE_Pos)
 #define UART_CTRL_TXFF_Pos 1 //TX FIFO Full
 #define UART_CTRL_TXFF_Pos 1 //TX FIFO Full
 #define UART_CTRL_TXFF_Msk (0x01 << UART_CTRL_TXFF_Pos)
 #define UART_CTRL_TXFF_Msk (0x01 << UART_CTRL_TXFF_Pos)
@@ -1790,10 +1349,10 @@ typedef struct
 #define UART_BAUD_RXIF_Msk (0x01 << UART_BAUD_RXIF_Pos)
 #define UART_BAUD_RXIF_Msk (0x01 << UART_BAUD_RXIF_Pos)
 #define UART_BAUD_ABREN_Pos 23 //Auto Baudrate Enable,写1启动自动波特率校准,完成后自动清零
 #define UART_BAUD_ABREN_Pos 23 //Auto Baudrate Enable,写1启动自动波特率校准,完成后自动清零
 #define UART_BAUD_ABREN_Msk (0x01 << UART_BAUD_ABREN_Pos)
 #define UART_BAUD_ABREN_Msk (0x01 << UART_BAUD_ABREN_Pos)
-#define UART_BAUD_ABRBIT_Pos 24 //Auto Baudrate Bit,用于计算波特率的检测位长,0 1位,通过测起始位           脉宽计算波特率,要求发送端发送0xFF \
+#define UART_BAUD_ABRBIT_Pos 24 /*Auto Baudrate Bit,用于计算波特率的检测位长,0 1位,通过测起始位           脉宽计算波特率,要求发送端发送0xFF \
                                 //                                             1 2位,通过测起始位加1位数据位脉宽计算波特率,要求发送端发送0xFE          \
                                 //                                             1 2位,通过测起始位加1位数据位脉宽计算波特率,要求发送端发送0xFE          \
                                 //                                             1 4位,通过测起始位加3位数据位脉宽计算波特率,要求发送端发送0xF8          \
                                 //                                             1 4位,通过测起始位加3位数据位脉宽计算波特率,要求发送端发送0xF8          \
-                                //                                             1 8位,通过测起始位加7位数据位脉宽计算波特率,要求发送端发送0x80
+                                //                                             1 8位,通过测起始位加7位数据位脉宽计算波特率,要求发送端发送0x80 */
 #define UART_BAUD_ABRBIT_Msk (0x03 << UART_BAUD_ABRBIT_Pos)
 #define UART_BAUD_ABRBIT_Msk (0x03 << UART_BAUD_ABRBIT_Pos)
 #define UART_BAUD_ABRERR_Pos 26 //Auto Baudrate Error,0 自动波特率校准成功     1 自动波特率校准失败
 #define UART_BAUD_ABRERR_Pos 26 //Auto Baudrate Error,0 自动波特率校准成功     1 自动波特率校准失败
 #define UART_BAUD_ABRERR_Msk (0x01 << UART_BAUD_ABRERR_Pos)
 #define UART_BAUD_ABRERR_Msk (0x01 << UART_BAUD_ABRERR_Pos)
@@ -1855,19 +1414,19 @@ typedef struct
 #define SPI_CTRL_EN_Msk (0x01 << SPI_CTRL_EN_Pos)
 #define SPI_CTRL_EN_Msk (0x01 << SPI_CTRL_EN_Pos)
 #define SPI_CTRL_SIZE_Pos 4 //Data Size Select, 取值3--15,表示4--16位
 #define SPI_CTRL_SIZE_Pos 4 //Data Size Select, 取值3--15,表示4--16位
 #define SPI_CTRL_SIZE_Msk (0x0F << SPI_CTRL_SIZE_Pos)
 #define SPI_CTRL_SIZE_Msk (0x0F << SPI_CTRL_SIZE_Pos)
-#define SPI_CTRL_CPHA_Pos 8 //0 在SCLK的第一个跳变沿采样数据	1 在SCLK的第二个跳变沿采样数据
+#define SPI_CTRL_CPHA_Pos 8 //0 在SCLK的第一个跳变沿采样数据    1 在SCLK的第二个跳变沿采样数据
 #define SPI_CTRL_CPHA_Msk (0x01 << SPI_CTRL_CPHA_Pos)
 #define SPI_CTRL_CPHA_Msk (0x01 << SPI_CTRL_CPHA_Pos)
-#define SPI_CTRL_CPOL_Pos 9 //0 空闲状态下SCLK为低电平		  1 空闲状态下SCLK为高电平
+#define SPI_CTRL_CPOL_Pos 9 //0 空闲状态下SCLK为低电平         1 空闲状态下SCLK为高电平
 #define SPI_CTRL_CPOL_Msk (0x01 << SPI_CTRL_CPOL_Pos)
 #define SPI_CTRL_CPOL_Msk (0x01 << SPI_CTRL_CPOL_Pos)
-#define SPI_CTRL_FFS_Pos 10 //Frame Format Select, 0 SPI	1 TI SSI	2 SPI	3 SPI
+#define SPI_CTRL_FFS_Pos 10 //Frame Format Select, 0 SPI    1 TI SSI    2 SPI   3 SPI
 #define SPI_CTRL_FFS_Msk (0x03 << SPI_CTRL_FFS_Pos)
 #define SPI_CTRL_FFS_Msk (0x03 << SPI_CTRL_FFS_Pos)
-#define SPI_CTRL_MSTR_Pos 12 //Master, 1 主模式	0 从模式
+#define SPI_CTRL_MSTR_Pos 12 //Master, 1 主模式    0 从模式
 #define SPI_CTRL_MSTR_Msk (0x01 << SPI_CTRL_MSTR_Pos)
 #define SPI_CTRL_MSTR_Msk (0x01 << SPI_CTRL_MSTR_Pos)
 #define SPI_CTRL_FAST_Pos 13 //1 SPI工作时钟 = SYS_Freq/2    0 SPI工作时钟由SPI->CTRL.CLKDIV设置
 #define SPI_CTRL_FAST_Pos 13 //1 SPI工作时钟 = SYS_Freq/2    0 SPI工作时钟由SPI->CTRL.CLKDIV设置
 #define SPI_CTRL_FAST_Msk (0x01 << SPI_CTRL_FAST_Pos)
 #define SPI_CTRL_FAST_Msk (0x01 << SPI_CTRL_FAST_Pos)
 #define SPI_CTRL_FILTE_Pos 16 //1 对SPI输入信号进行去抖操作    0 对SPI输入信号不进行去抖操作
 #define SPI_CTRL_FILTE_Pos 16 //1 对SPI输入信号进行去抖操作    0 对SPI输入信号不进行去抖操作
 #define SPI_CTRL_FILTE_Msk (0x01 << SPI_CTRL_FILTE_Pos)
 #define SPI_CTRL_FILTE_Msk (0x01 << SPI_CTRL_FILTE_Pos)
-#define SPI_CTRL_SSN_H_Pos 17 //0 传输过程中SSN始终为0    	 1 传输过程中每字符之间会将SSN拉高半个SCLK周期
+#define SPI_CTRL_SSN_H_Pos 17 //0 传输过程中SSN始终为0       1 传输过程中每字符之间会将SSN拉高半个SCLK周期
 #define SPI_CTRL_SSN_H_Msk (0x01 << SPI_CTRL_SSN_H_Pos)
 #define SPI_CTRL_SSN_H_Msk (0x01 << SPI_CTRL_SSN_H_Pos)
 #define SPI_CTRL_TFCLR_Pos 24 //TX FIFO Clear
 #define SPI_CTRL_TFCLR_Pos 24 //TX FIFO Clear
 #define SPI_CTRL_TFCLR_Msk (0x01 << SPI_CTRL_TFCLR_Pos)
 #define SPI_CTRL_TFCLR_Msk (0x01 << SPI_CTRL_TFCLR_Pos)
@@ -1886,9 +1445,9 @@ typedef struct
 #define SPI_STAT_RFF_Msk (0x01 << SPI_STAT_RFF_Pos)
 #define SPI_STAT_RFF_Msk (0x01 << SPI_STAT_RFF_Pos)
 #define SPI_STAT_RFOVF_Pos 5 //接收FIFO Overflow
 #define SPI_STAT_RFOVF_Pos 5 //接收FIFO Overflow
 #define SPI_STAT_RFOVF_Msk (0x01 << SPI_STAT_RFOVF_Pos)
 #define SPI_STAT_RFOVF_Msk (0x01 << SPI_STAT_RFOVF_Pos)
-#define SPI_STAT_TFLVL_Pos 6 //发送FIFO中数据个数, 0 TFNF=0时表示FIFO内有8个数据,TFNF=1时表示FIFO内有0个数据	1--7 FIFO内有1--7个数据
+#define SPI_STAT_TFLVL_Pos 6 //发送FIFO中数据个数, 0 TFNF=0时表示FIFO内有8个数据,TFNF=1时表示FIFO内有0个数据   1--7 FIFO内有1--7个数据
 #define SPI_STAT_TFLVL_Msk (0x07 << SPI_STAT_TFLVL_Pos)
 #define SPI_STAT_TFLVL_Msk (0x07 << SPI_STAT_TFLVL_Pos)
-#define SPI_STAT_RFLVL_Pos 9 //接收FIFO中数据个数, 0 RFF=1时表示FIFO内有8个数据, RFF=0时表示FIFO内有0个数据	1--7 FIFO内有1--7个数据
+#define SPI_STAT_RFLVL_Pos 9 //接收FIFO中数据个数, 0 RFF=1时表示FIFO内有8个数据, RFF=0时表示FIFO内有0个数据    1--7 FIFO内有1--7个数据
 #define SPI_STAT_RFLVL_Msk (0x07 << SPI_STAT_RFLVL_Pos)
 #define SPI_STAT_RFLVL_Msk (0x07 << SPI_STAT_RFLVL_Pos)
 #define SPI_STAT_BUSY_Pos 15
 #define SPI_STAT_BUSY_Pos 15
 #define SPI_STAT_BUSY_Msk (0x01 << SPI_STAT_BUSY_Pos)
 #define SPI_STAT_BUSY_Msk (0x01 << SPI_STAT_BUSY_Pos)
@@ -1947,21 +1506,21 @@ typedef struct
 #define I2C_CTRL_EN_Pos 7
 #define I2C_CTRL_EN_Pos 7
 #define I2C_CTRL_EN_Msk (0x01 << I2C_CTRL_EN_Pos)
 #define I2C_CTRL_EN_Msk (0x01 << I2C_CTRL_EN_Pos)
 
 
-#define I2C_MSTCMD_IF_Pos 0 //1 有等待处理的中断,写1清零	有两种情况下此位硬件置位:1、一个字节传输完成  2、总线访问权丢失
+#define I2C_MSTCMD_IF_Pos 0 //1 有等待处理的中断,写1清零   有两种情况下此位硬件置位:1、一个字节传输完成  2、总线访问权丢失
 #define I2C_MSTCMD_IF_Msk (0x01 << I2C_MSTCMD_IF_Pos)
 #define I2C_MSTCMD_IF_Msk (0x01 << I2C_MSTCMD_IF_Pos)
 #define I2C_MSTCMD_TIP_Pos 1 //Transmission In Process
 #define I2C_MSTCMD_TIP_Pos 1 //Transmission In Process
 #define I2C_MSTCMD_TIP_Msk (0x01 << I2C_MSTCMD_TIP_Pos)
 #define I2C_MSTCMD_TIP_Msk (0x01 << I2C_MSTCMD_TIP_Pos)
-#define I2C_MSTCMD_ACK_Pos 3 //接收模式下,0 向发送端反馈ACK	1 向发送端反馈NACK
+#define I2C_MSTCMD_ACK_Pos 3 //接收模式下,0 向发送端反馈ACK    1 向发送端反馈NACK
 #define I2C_MSTCMD_ACK_Msk (0x01 << I2C_MSTCMD_ACK_Pos)
 #define I2C_MSTCMD_ACK_Msk (0x01 << I2C_MSTCMD_ACK_Pos)
-#define I2C_MSTCMD_WR_Pos 4 //	  向Slave写数据时,把这一位写1,自动清零
+#define I2C_MSTCMD_WR_Pos 4 //    向Slave写数据时,把这一位写1,自动清零
 #define I2C_MSTCMD_WR_Msk (0x01 << I2C_MSTCMD_WR_Pos)
 #define I2C_MSTCMD_WR_Msk (0x01 << I2C_MSTCMD_WR_Pos)
-#define I2C_MSTCMD_RD_Pos 5 //写:从Slave读数据时,把这一位写1,自动清零	读:当I2C模块失去总线的访问权时硬件置1
+#define I2C_MSTCMD_RD_Pos 5 //写:从Slave读数据时,把这一位写1,自动清零  读:当I2C模块失去总线的访问权时硬件置1
 #define I2C_MSTCMD_RD_Msk (0x01 << I2C_MSTCMD_RD_Pos)
 #define I2C_MSTCMD_RD_Msk (0x01 << I2C_MSTCMD_RD_Pos)
 #define I2C_MSTCMD_BUSY_Pos 6 //读:当检测到START之后,这一位变1;当检测到STOP之后,这一位变0
 #define I2C_MSTCMD_BUSY_Pos 6 //读:当检测到START之后,这一位变1;当检测到STOP之后,这一位变0
 #define I2C_MSTCMD_BUSY_Msk (0x01 << I2C_MSTCMD_BUSY_Pos)
 #define I2C_MSTCMD_BUSY_Msk (0x01 << I2C_MSTCMD_BUSY_Pos)
 #define I2C_MSTCMD_STO_Pos 6 //写:产生STOP,自动清零
 #define I2C_MSTCMD_STO_Pos 6 //写:产生STOP,自动清零
 #define I2C_MSTCMD_STO_Msk (0x01 << I2C_MSTCMD_STO_Pos)
 #define I2C_MSTCMD_STO_Msk (0x01 << I2C_MSTCMD_STO_Pos)
-#define I2C_MSTCMD_RXACK_Pos 7 //读:接收到的Slave的ACK位,0 收到ACK	1 收到NACK
+#define I2C_MSTCMD_RXACK_Pos 7 //读:接收到的Slave的ACK位,0 收到ACK   1 收到NACK
 #define I2C_MSTCMD_RXACK_Msk (0x01 << I2C_MSTCMD_RXACK_Pos)
 #define I2C_MSTCMD_RXACK_Msk (0x01 << I2C_MSTCMD_RXACK_Pos)
 #define I2C_MSTCMD_STA_Pos 7 //写:产生START,自动清零
 #define I2C_MSTCMD_STA_Pos 7 //写:产生START,自动清零
 #define I2C_MSTCMD_STA_Msk (0x01 << I2C_MSTCMD_STA_Pos)
 #define I2C_MSTCMD_STA_Msk (0x01 << I2C_MSTCMD_STA_Pos)
@@ -2050,13 +1609,13 @@ typedef struct
 #define ADC_CTRL_CH6_Msk (0x01 << ADC_CTRL_CH6_Pos)
 #define ADC_CTRL_CH6_Msk (0x01 << ADC_CTRL_CH6_Pos)
 #define ADC_CTRL_CH7_Pos 7
 #define ADC_CTRL_CH7_Pos 7
 #define ADC_CTRL_CH7_Msk (0x01 << ADC_CTRL_CH7_Pos)
 #define ADC_CTRL_CH7_Msk (0x01 << ADC_CTRL_CH7_Pos)
-#define ADC_CTRL_AVG_Pos 8 //0 1次采样	  1 2次采样取平均值	  3 4次采样取平均值	  7 8次采样取平均值	  15 16次采样取平均值
+#define ADC_CTRL_AVG_Pos 8 //0 1次采样   1 2次采样取平均值      3 4次采样取平均值      7 8次采样取平均值      15 16次采样取平均值
 #define ADC_CTRL_AVG_Msk (0x0F << ADC_CTRL_AVG_Pos)
 #define ADC_CTRL_AVG_Msk (0x0F << ADC_CTRL_AVG_Pos)
 #define ADC_CTRL_EN_Pos 12
 #define ADC_CTRL_EN_Pos 12
 #define ADC_CTRL_EN_Msk (0x01 << ADC_CTRL_EN_Pos)
 #define ADC_CTRL_EN_Msk (0x01 << ADC_CTRL_EN_Pos)
 #define ADC_CTRL_CONT_Pos 13                          //Continuous conversion,只在软件启动模式下有效,0 单次转换,转换完成后START位自动清除停止转换
 #define ADC_CTRL_CONT_Pos 13                          //Continuous conversion,只在软件启动模式下有效,0 单次转换,转换完成后START位自动清除停止转换
 #define ADC_CTRL_CONT_Msk (0x01 << ADC_CTRL_CONT_Pos) //   1 连续转换,启动后一直采样、转换,直到软件清除START位
 #define ADC_CTRL_CONT_Msk (0x01 << ADC_CTRL_CONT_Pos) //   1 连续转换,启动后一直采样、转换,直到软件清除START位
-#define ADC_CTRL_TRIG_Pos 14                          //转换触发方式:0 软件启动转换	  1 PWM触发
+#define ADC_CTRL_TRIG_Pos 14                          //转换触发方式:0 软件启动转换   1 PWM触发
 #define ADC_CTRL_TRIG_Msk (0x01 << ADC_CTRL_TRIG_Pos)
 #define ADC_CTRL_TRIG_Msk (0x01 << ADC_CTRL_TRIG_Pos)
 #define ADC_CTRL_CLKSRC_Pos 15 //0 VCO    1 HRC
 #define ADC_CTRL_CLKSRC_Pos 15 //0 VCO    1 HRC
 #define ADC_CTRL_CLKSRC_Msk (0x01 << ADC_CTRL_CLKSRC_Pos)
 #define ADC_CTRL_CLKSRC_Msk (0x01 << ADC_CTRL_CLKSRC_Pos)
@@ -2221,7 +1780,7 @@ typedef struct
 #define ADC_CTRL2_PGAGAIN_Pos 3 //0 25.1dB    1 21.6dB    2 11.1dB    3 3.5dB    4 0dB(1.8V)    5 -2.9dB    6 -5.3dB
 #define ADC_CTRL2_PGAGAIN_Pos 3 //0 25.1dB    1 21.6dB    2 11.1dB    3 3.5dB    4 0dB(1.8V)    5 -2.9dB    6 -5.3dB
 #define ADC_CTRL2_PGAGAIN_Msk (0x07 << ADC_CTRL2_PGAGAIN_Pos)
 #define ADC_CTRL2_PGAGAIN_Msk (0x07 << ADC_CTRL2_PGAGAIN_Pos)
 #define ADC_CTRL2_REFPOUT_Pos 23 //1 ADC 内部 1.2V REFP电压输出到外部REFP引脚,用于测量,或在需要1.2V外部REFP时节省成本
 #define ADC_CTRL2_REFPOUT_Pos 23 //1 ADC 内部 1.2V REFP电压输出到外部REFP引脚,用于测量,或在需要1.2V外部REFP时节省成本
-#define ADC_CTRL2_REFPOUT_Msk		(0x01 << ADC_CTRL2_REFPOUT_Pos
+#define ADC_CTRL2_REFPOUT_Msk       (0x01 << ADC_CTRL2_REFPOUT_Pos
 #define ADC_CTRL2_CLKDIV_Pos 24 //时钟分频,只在时钟源为HRC时有效
 #define ADC_CTRL2_CLKDIV_Pos 24 //时钟分频,只在时钟源为HRC时有效
 #define ADC_CTRL2_CLKDIV_Msk (0x1F << ADC_CTRL2_CLKDIV_Pos)
 #define ADC_CTRL2_CLKDIV_Msk (0x1F << ADC_CTRL2_CLKDIV_Pos)
 #define ADC_CTRL2_PGAVCM_Pos 29
 #define ADC_CTRL2_PGAVCM_Pos 29
@@ -2676,7 +2235,7 @@ typedef struct
 #define DMA_CR_AUTORE_Pos 18 //Auto Restart, 通道在传输完成后,是否自动重新启动
 #define DMA_CR_AUTORE_Pos 18 //Auto Restart, 通道在传输完成后,是否自动重新启动
 #define DMA_CR_AUTORE_Msk (0x01 << DMA_CR_AUTORE_Pos)
 #define DMA_CR_AUTORE_Msk (0x01 << DMA_CR_AUTORE_Pos)
 
 
-#define DMA_AM_SRCAM_Pos 0 //Address Mode	0 地址固定    1 地址递增    2 scatter gather模式
+#define DMA_AM_SRCAM_Pos 0 //Address Mode   0 地址固定    1 地址递增    2 scatter gather模式
 #define DMA_AM_SRCAM_Msk (0x03 << DMA_AM_SRCAM_Pos)
 #define DMA_AM_SRCAM_Msk (0x03 << DMA_AM_SRCAM_Pos)
 #define DMA_AM_DSTAM_Pos 8
 #define DMA_AM_DSTAM_Pos 8
 #define DMA_AM_DSTAM_Msk (0x03 << DMA_AM_DSTAM_Pos)
 #define DMA_AM_DSTAM_Msk (0x03 << DMA_AM_DSTAM_Pos)
@@ -2724,22 +2283,12 @@ typedef struct
             uint32_t RESERVED[5];
             uint32_t RESERVED[5];
         } FILTER;
         } FILTER;
 
 
-        union
+        struct
         { //在正常工作模式下可读写,复位时不可访问
         { //在正常工作模式下可读写,复位时不可访问
-            struct
-            {
-                __O uint32_t INFO;
-
-                __O uint32_t DATA[12];
-            } TXFRAME;
-
-            struct
-            {
-                __I uint32_t INFO;
+            __IO uint32_t INFO;
 
 
-                __I uint32_t DATA[12];
-            } RXFRAME;
-        };
+            __IO uint32_t DATA[12];
+        } FRAME;
     };
     };
 
 
     __I uint32_t RMCNT; //Receive Message Count
     __I uint32_t RMCNT; //Receive Message Count
@@ -2877,11 +2426,11 @@ typedef struct
 #define LCD_START_BURST_Pos 2
 #define LCD_START_BURST_Pos 2
 #define LCD_START_BURST_Msk (0x01 << LCD_START_BURST_Pos)
 #define LCD_START_BURST_Msk (0x01 << LCD_START_BURST_Pos)
 
 
-#define LCD_CR0_VPIX_Pos 0 //当portrait为0时,表示垂直方向的像素个数,0表示1个,最大为767 \
-                           //当portrait为1时,表示水平方向的像素个数,0表示1个,最大为767
+#define LCD_CR0_VPIX_Pos 0 /*当portrait为0时,表示垂直方向的像素个数,0表示1个,最大为767 \
+                           //当portrait为1时,表示水平方向的像素个数,0表示1个,最大为767 */
 #define LCD_CR0_VPIX_Msk (0x3FF << LCD_CR0_VPIX_Pos)
 #define LCD_CR0_VPIX_Msk (0x3FF << LCD_CR0_VPIX_Pos)
-#define LCD_CR0_HPIX_Pos 10 //当portrait为0时,表示水平方向的像素个数,0表示1个,最大为1023 \
-                            //当portrait为1时,表示垂直方向的像素个数,0表示1个,最大为1023
+#define LCD_CR0_HPIX_Pos 10 /*当portrait为0时,表示水平方向的像素个数,0表示1个,最大为1023 \
+                            //当portrait为1时,表示垂直方向的像素个数,0表示1个,最大为1023 */
 #define LCD_CR0_HPIX_Msk (0x3FF << LCD_CR0_HPIX_Pos)
 #define LCD_CR0_HPIX_Msk (0x3FF << LCD_CR0_HPIX_Pos)
 #define LCD_CR0_DCLK_Pos 20 //0 DOTCLK一直翻转    1 DOTCLK在空闲时停在1
 #define LCD_CR0_DCLK_Pos 20 //0 DOTCLK一直翻转    1 DOTCLK在空闲时停在1
 #define LCD_CR0_DCLK_Msk (0x01 << LCD_CR0_DCLK_Pos)
 #define LCD_CR0_DCLK_Msk (0x01 << LCD_CR0_DCLK_Pos)
@@ -3121,7 +2670,7 @@ typedef struct
 {
 {
     __IO uint32_t DATA;
     __IO uint32_t DATA;
     __IO uint32_t ADDR;
     __IO uint32_t ADDR;
-    __IO uint32_t ERASE;
+    __IO uint32_t SWM_ERASE;
     __IO uint32_t CACHE;
     __IO uint32_t CACHE;
     __IO uint32_t CFG0;
     __IO uint32_t CFG0;
     __IO uint32_t CFG1;
     __IO uint32_t CFG1;
@@ -3376,8 +2925,8 @@ typedef struct
 #define RTC_TRIM_DEC_Pos 8
 #define RTC_TRIM_DEC_Pos 8
 #define RTC_TRIM_DEC_Msk (0x01 << RTC_TRIM_DEC_Pos)
 #define RTC_TRIM_DEC_Msk (0x01 << RTC_TRIM_DEC_Pos)
 
 
-#define RTC_TRIMM_CYCLE_Pos 0 //用于计数周期微调,如果INC为1,则第n个计数周期调整为(32768±ADJ)+1,否则调整为(32768±ADJ)-1 \
-                              //cycles=0时,不进行微调整;cycles=1,则n为2;cycles=7,则n为8;以此类推
+#define RTC_TRIMM_CYCLE_Pos 0 /* 用于计数周期微调,如果INC为1,则第n个计数周期调整为(32768±ADJ)+1,否则调整为(32768±ADJ)-1 \
+                              //cycles=0时,不进行微调整;cycles=1,则n为2;cycles=7,则n为8;以此类推 */
 #define RTC_TRIMM_CYCLE_Msk (0x07 << RTC_TRIMM_CYCLE_Pos)
 #define RTC_TRIMM_CYCLE_Msk (0x07 << RTC_TRIMM_CYCLE_Pos)
 #define RTC_TRIMM_INC_Pos 3
 #define RTC_TRIMM_INC_Pos 3
 #define RTC_TRIMM_INC_Msk (0x01 << RTC_TRIMM_INC_Pos)
 #define RTC_TRIMM_INC_Msk (0x01 << RTC_TRIMM_INC_Pos)
@@ -3401,7 +2950,7 @@ typedef struct
 #define WDT_CR_RSTEN_Msk (0x01 << WDT_CR_RSTEN_Pos)
 #define WDT_CR_RSTEN_Msk (0x01 << WDT_CR_RSTEN_Pos)
 
 
 /******************************************************************************/
 /******************************************************************************/
-/*						 Peripheral memory map							  */
+/*                       Peripheral memory map                            */
 /******************************************************************************/
 /******************************************************************************/
 #define RAM_BASE 0x20000000
 #define RAM_BASE 0x20000000
 #define AHB_BASE 0x40000000
 #define AHB_BASE 0x40000000
@@ -3477,7 +3026,7 @@ typedef struct
 #define CAN_BASE (APB_BASE + 0x20000)
 #define CAN_BASE (APB_BASE + 0x20000)
 
 
 /******************************************************************************/
 /******************************************************************************/
-/*						 Peripheral declaration							 */
+/*                       Peripheral declaration                          */
 /******************************************************************************/
 /******************************************************************************/
 #define SYS ((SYS_TypeDef *)SYS_BASE)
 #define SYS ((SYS_TypeDef *)SYS_BASE)
 
 

+ 62 - 62
bsp/swm320/libraries/CMSIS/DeviceSupport/startup/arm/startup_SWM320.s

@@ -79,7 +79,7 @@ __Vectors       DCD     __initial_sp               ; Top of Stack
                 DCD     GPIOA5_Handler
                 DCD     GPIOA5_Handler
                 DCD     GPIOA6_Handler
                 DCD     GPIOA6_Handler
                 DCD     GPIOA7_Handler
                 DCD     GPIOA7_Handler
-                DCD     GPIOB0_Handler
+				DCD     GPIOB0_Handler
                 DCD     GPIOB1_Handler
                 DCD     GPIOB1_Handler
                 DCD     GPIOB2_Handler
                 DCD     GPIOB2_Handler
                 DCD     GPIOB3_Handler
                 DCD     GPIOB3_Handler
@@ -157,262 +157,262 @@ Reset_Handler    PROC
 ; Dummy Exception Handlers (infinite loops which can be modified)
 ; Dummy Exception Handlers (infinite loops which can be modified)
 
 
 NMI_Handler     PROC
 NMI_Handler     PROC
-                EXPORT  NMI_Handler                [WEAK]
+                EXPORT  NMI_Handler             [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 HardFault_Handler PROC
 HardFault_Handler PROC
-                EXPORT  HardFault_Handler          [WEAK]
+                EXPORT  HardFault_Handler       [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 MemManage_Handler PROC
 MemManage_Handler PROC
-                EXPORT  MemManage_Handler          [WEAK]
+                EXPORT  MemManage_Handler       [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 BusFault_Handler PROC
 BusFault_Handler PROC
-                EXPORT  BusFault_Handler           [WEAK]
+                EXPORT  BusFault_Handler        [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 UsageFault_Handler PROC
 UsageFault_Handler PROC
-                EXPORT  UsageFault_Handler         [WEAK]
+                EXPORT  UsageFault_Handler      [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 SVC_Handler     PROC
 SVC_Handler     PROC
-                EXPORT  SVC_Handler                [WEAK]
+                EXPORT  SVC_Handler             [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 DebugMon_Handler PROC
 DebugMon_Handler PROC
-                EXPORT  DebugMon_Handler           [WEAK]
+                EXPORT  DebugMon_Handler        [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 PendSV_Handler  PROC
 PendSV_Handler  PROC
-                EXPORT  PendSV_Handler             [WEAK]
+                EXPORT  PendSV_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 SysTick_Handler PROC
 SysTick_Handler PROC
-                EXPORT  SysTick_Handler            [WEAK]
+                EXPORT  SysTick_Handler         [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOA0_Handler PROC
 GPIOA0_Handler PROC
-                EXPORT  GPIOA0_Handler            [WEAK]
+                EXPORT  GPIOA0_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOA1_Handler PROC
 GPIOA1_Handler PROC
-                EXPORT  GPIOA1_Handler            [WEAK]
+                EXPORT  GPIOA1_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOA2_Handler PROC
 GPIOA2_Handler PROC
-                EXPORT  GPIOA2_Handler            [WEAK]
+                EXPORT  GPIOA2_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOA3_Handler PROC
 GPIOA3_Handler PROC
-                EXPORT  GPIOA3_Handler            [WEAK]
+                EXPORT  GPIOA3_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOA4_Handler PROC
 GPIOA4_Handler PROC
-                EXPORT  GPIOA4_Handler            [WEAK]
+                EXPORT  GPIOA4_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOA5_Handler PROC
 GPIOA5_Handler PROC
-                EXPORT  GPIOA5_Handler            [WEAK]
+                EXPORT  GPIOA5_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOA6_Handler PROC
 GPIOA6_Handler PROC
-                EXPORT  GPIOA6_Handler            [WEAK]
+                EXPORT  GPIOA6_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOA7_Handler PROC
 GPIOA7_Handler PROC
-                EXPORT  GPIOA7_Handler            [WEAK]
+                EXPORT  GPIOA7_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOB0_Handler PROC
 GPIOB0_Handler PROC
-                EXPORT  GPIOB0_Handler            [WEAK]
+                EXPORT  GPIOB0_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOB1_Handler PROC
 GPIOB1_Handler PROC
-                EXPORT  GPIOB1_Handler            [WEAK]
+                EXPORT  GPIOB1_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOB2_Handler PROC
 GPIOB2_Handler PROC
-                EXPORT  GPIOB2_Handler            [WEAK]
+                EXPORT  GPIOB2_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOB3_Handler PROC
 GPIOB3_Handler PROC
-                EXPORT  GPIOB3_Handler            [WEAK]
+                EXPORT  GPIOB3_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOB4_Handler PROC
 GPIOB4_Handler PROC
-                EXPORT  GPIOB4_Handler            [WEAK]
+                EXPORT  GPIOB4_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOB5_Handler PROC
 GPIOB5_Handler PROC
-                EXPORT  GPIOB5_Handler            [WEAK]
+                EXPORT  GPIOB5_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOB6_Handler PROC
 GPIOB6_Handler PROC
-                EXPORT  GPIOB6_Handler            [WEAK]
+                EXPORT  GPIOB6_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOB7_Handler PROC
 GPIOB7_Handler PROC
-                EXPORT  GPIOB7_Handler            [WEAK]
+                EXPORT  GPIOB7_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOC0_Handler PROC
 GPIOC0_Handler PROC
-                EXPORT  GPIOC0_Handler            [WEAK]
+                EXPORT  GPIOC0_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOC1_Handler PROC
 GPIOC1_Handler PROC
-                EXPORT  GPIOC1_Handler            [WEAK]
+                EXPORT  GPIOC1_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOC2_Handler PROC
 GPIOC2_Handler PROC
-                EXPORT  GPIOC2_Handler            [WEAK]
+                EXPORT  GPIOC2_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOC3_Handler PROC
 GPIOC3_Handler PROC
-                EXPORT  GPIOC3_Handler            [WEAK]
+                EXPORT  GPIOC3_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOC4_Handler PROC
 GPIOC4_Handler PROC
-                EXPORT  GPIOC4_Handler            [WEAK]
+                EXPORT  GPIOC4_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOC5_Handler PROC
 GPIOC5_Handler PROC
-                EXPORT  GPIOC5_Handler            [WEAK]
+                EXPORT  GPIOC5_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOC6_Handler PROC
 GPIOC6_Handler PROC
-                EXPORT  GPIOC6_Handler            [WEAK]
+                EXPORT  GPIOC6_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOC7_Handler PROC
 GPIOC7_Handler PROC
-                EXPORT  GPIOC7_Handler            [WEAK]
+                EXPORT  GPIOC7_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOM0_Handler PROC
 GPIOM0_Handler PROC
-                EXPORT  GPIOM0_Handler            [WEAK]
+                EXPORT  GPIOM0_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOM1_Handler PROC
 GPIOM1_Handler PROC
-                EXPORT  GPIOM1_Handler            [WEAK]
+                EXPORT  GPIOM1_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOM2_Handler PROC
 GPIOM2_Handler PROC
-                EXPORT  GPIOM2_Handler            [WEAK]
+                EXPORT  GPIOM2_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOM3_Handler PROC
 GPIOM3_Handler PROC
-                EXPORT  GPIOM3_Handler            [WEAK]
+                EXPORT  GPIOM3_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOM4_Handler PROC
 GPIOM4_Handler PROC
-                EXPORT  GPIOM4_Handler            [WEAK]
+                EXPORT  GPIOM4_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOM5_Handler PROC
 GPIOM5_Handler PROC
-                EXPORT  GPIOM5_Handler            [WEAK]
+                EXPORT  GPIOM5_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOM6_Handler PROC
 GPIOM6_Handler PROC
-                EXPORT  GPIOM6_Handler            [WEAK]
+                EXPORT  GPIOM6_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOM7_Handler PROC
 GPIOM7_Handler PROC
-                EXPORT  GPIOM7_Handler            [WEAK]
+                EXPORT  GPIOM7_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 DMA_Handler PROC
 DMA_Handler PROC
-                EXPORT  DMA_Handler            [WEAK]
+                EXPORT  DMA_Handler             [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 LCD_Handler PROC
 LCD_Handler PROC
-                EXPORT  LCD_Handler            [WEAK]
+                EXPORT  LCD_Handler             [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 NORFLC_Handler PROC
 NORFLC_Handler PROC
-                EXPORT  NORFLC_Handler            [WEAK]
+                EXPORT  NORFLC_Handler          [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 CAN_Handler PROC
 CAN_Handler PROC
-                EXPORT  CAN_Handler            [WEAK]
+                EXPORT  CAN_Handler             [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 PULSE_Handler PROC
 PULSE_Handler PROC
-                EXPORT  PULSE_Handler          [WEAK]
+                EXPORT  PULSE_Handler           [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 WDT_Handler PROC
 WDT_Handler PROC
-                EXPORT  WDT_Handler            [WEAK]
+                EXPORT  WDT_Handler             [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 PWM_Handler PROC
 PWM_Handler PROC
-                EXPORT  PWM_Handler            [WEAK]
+                EXPORT  PWM_Handler             [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 UART0_Handler PROC
 UART0_Handler PROC
-                EXPORT  UART0_Handler            [WEAK]
+                EXPORT  UART0_Handler           [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 UART1_Handler PROC
 UART1_Handler PROC
-                EXPORT  UART1_Handler            [WEAK]
+                EXPORT  UART1_Handler           [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 UART2_Handler PROC
 UART2_Handler PROC
-                EXPORT  UART2_Handler            [WEAK]
+                EXPORT  UART2_Handler           [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 UART3_Handler PROC
 UART3_Handler PROC
-                EXPORT  UART3_Handler            [WEAK]
+                EXPORT  UART3_Handler           [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
@@ -437,12 +437,12 @@ ADC0_Handler PROC
                 ENDP
                 ENDP
 
 
 RTC_Handler PROC
 RTC_Handler PROC
-                EXPORT  RTC_Handler            [WEAK]
+                EXPORT  RTC_Handler             [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 BOD_Handler PROC
 BOD_Handler PROC
-                EXPORT  BOD_Handler            [WEAK]
+                EXPORT  BOD_Handler             [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
@@ -452,32 +452,32 @@ SDIO_Handler PROC
                 ENDP
                 ENDP
 
 
 GPIOA_Handler PROC
 GPIOA_Handler PROC
-                EXPORT  GPIOA_Handler            [WEAK]
+                EXPORT  GPIOA_Handler           [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOB_Handler PROC
 GPIOB_Handler PROC
-                EXPORT  GPIOB_Handler            [WEAK]
+                EXPORT  GPIOB_Handler           [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOC_Handler PROC
 GPIOC_Handler PROC
-                EXPORT  GPIOC_Handler            [WEAK]
+                EXPORT  GPIOC_Handler           [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOM_Handler PROC
 GPIOM_Handler PROC
-                EXPORT  GPIOM_Handler            [WEAK]
+                EXPORT  GPIOM_Handler           [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPION_Handler PROC
 GPION_Handler PROC
-                EXPORT  GPION_Handler            [WEAK]
+                EXPORT  GPION_Handler           [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
 GPIOP_Handler PROC
 GPIOP_Handler PROC
-                EXPORT  GPIOP_Handler            [WEAK]
+                EXPORT  GPIOP_Handler           [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 
@@ -487,7 +487,7 @@ ADC1_Handler PROC
                 ENDP
                 ENDP
 
 
 FPU_Handler PROC
 FPU_Handler PROC
-                EXPORT  FPU_Handler            [WEAK]
+                EXPORT  FPU_Handler             [WEAK]
                 B       .
                 B       .
                 ENDP
                 ENDP
 
 

+ 406 - 242
bsp/swm320/libraries/CMSIS/DeviceSupport/startup/gcc/startup_SWM320.s

@@ -1,242 +1,406 @@
-    .syntax unified
-    .arch armv7-m
-	.thumb
-
-/* Memory Model
-   The HEAP starts at the end of the DATA section and grows upward.
-   
-   The STACK starts at the end of the RAM and grows downward     */
-    .section .stack
-    .align 3
-    .globl    __StackTop
-    .globl    __StackLimit
-__StackLimit:
-    .space    0x4000
-__StackTop:
-
-
-    .section .heap
-    .align 3
-    .globl    __HeapBase
-    .globl    __HeapLimit
-__HeapBase:
-    .space    0x4000
-__HeapLimit:
-
-
-    .section .isr_vector
-    .align 2
-    .globl __isr_vector
-__isr_vector:
-    .long    __StackTop            
-    .long    Reset_Handler         
-    .long    NMI_Handler          
-    .long    HardFault_Handler     
-    .long    MemManage_Handler     
-    .long    BusFault_Handler      
-    .long    UsageFault_Handler   
-    .long    0                    
-    .long    0                    
-    .long    0                    
-    .long    0                     
-    .long    SVC_Handler          
-    .long    DebugMon_Handler     
-    .long    0                     
-    .long    PendSV_Handler           
-    .long    SysTick_Handler         
-
-    /* External interrupts */
-    .long     GPIOA0_Handler
-    .long     GPIOA1_Handler
-    .long     GPIOA2_Handler
-    .long     GPIOA3_Handler
-    .long     GPIOA4_Handler
-    .long     GPIOA5_Handler
-    .long     GPIOA6_Handler
-    .long     GPIOA7_Handler
-    .long     GPIOB0_Handler
-    .long     GPIOB1_Handler
-    .long     GPIOB2_Handler
-    .long     GPIOB3_Handler
-    .long     GPIOB4_Handler
-    .long     GPIOB5_Handler
-    .long     GPIOB6_Handler
-    .long     GPIOB7_Handler
-    .long     GPIOC0_Handler
-    .long     GPIOC1_Handler
-    .long     GPIOC2_Handler
-    .long     GPIOC3_Handler
-    .long     GPIOC4_Handler
-    .long     GPIOC5_Handler
-    .long     GPIOC6_Handler
-    .long     GPIOC7_Handler                                 
-    .long     GPIOM0_Handler
-    .long     GPIOM1_Handler
-    .long     GPIOM2_Handler
-    .long     GPIOM3_Handler
-    .long     GPIOM4_Handler
-    .long     GPIOM5_Handler
-    .long     GPIOM6_Handler
-    .long     GPIOM7_Handler                                            
-    .long     DMA_Handler
-    .long     LCD_Handler
-    .long     NORFLC_Handler
-    .long     CAN_Handler
-    .long     PULSE_Handler
-    .long     WDT_Handler
-    .long     PWM_Handler
-    .long     UART0_Handler
-    .long     UART1_Handler
-    .long     UART2_Handler
-    .long     UART3_Handler
-    .long     Default_Handler
-    .long     I2C0_Handler
-    .long     I2C1_Handler
-    .long     SPI0_Handler
-    .long     ADC0_Handler
-    .long     RTC_Handler
-    .long     BOD_Handler
-    .long     SDIO_Handler
-    .long     GPIOA_Handler
-    .long     GPIOB_Handler
-    .long     GPIOC_Handler
-    .long     GPIOM_Handler
-    .long     GPION_Handler
-    .long     GPIOP_Handler
-    .long     ADC1_Handler
-    .long     FPU_Handler
-    .long     SPI1_Handler
-    .long     TIMR0_Handler
-    .long     TIMR1_Handler
-    .long     TIMR2_Handler
-    .long     TIMR3_Handler
-    .long     TIMR4_Handler
-    .long     TIMR5_Handler
-
-    .section .text.Reset_Handler
-    .align 2
-    .globl    Reset_Handler
-    .type     Reset_Handler, %function
-Reset_Handler:
-/* Loop to copy data from read only memory to RAM. The ranges
- * of copy from/to are specified by symbols evaluated in linker script.  */
-    ldr    sp, =__StackTop    		 /* set stack pointer */
-
-    ldr    r1, =__data_load__
-    ldr    r2, =__data_start__
-    ldr    r3, =__data_end__
-
-.Lflash_to_ram_loop:
-    cmp     r2, r3
-    ittt    lo
-    ldrlo   r0, [r1], #4
-    strlo   r0, [r2], #4
-    blo    .Lflash_to_ram_loop
-
-
-    ldr    r2, =__bss_start__
-    ldr    r3, =__bss_end__
-
-.Lbss_to_ram_loop:
-    cmp     r2, r3
-    ittt    lo
-    movlo   r0, #0
-    strlo   r0, [r2], #4
-    blo    .Lbss_to_ram_loop
-
-    ldr    r0, =main
-    bx     r0
-    .pool    
-
-
-    .text
-/* Macro to define default handlers. 
-   Default handler will be weak symbol and just dead loops. */
-    .macro    def_default_handler    handler_name
-    .align 1
-    .thumb_func
-    .weak    \handler_name
-    .type    \handler_name, %function
-\handler_name :
-    b    .
-    .endm
-
-    def_default_handler    NMI_Handler
-    def_default_handler    HardFault_Handler
-    def_default_handler    MemManage_Handler
-    def_default_handler    BusFault_Handler
-    def_default_handler    UsageFault_Handler
-    def_default_handler    SVC_Handler
-    def_default_handler    DebugMon_Handler
-    def_default_handler    PendSV_Handler
-    def_default_handler    SysTick_Handler
-
-    def_default_handler    GPIOA0_Handler
-    def_default_handler    GPIOA1_Handler
-    def_default_handler    GPIOA2_Handler
-    def_default_handler    GPIOA3_Handler
-    def_default_handler    GPIOA4_Handler
-    def_default_handler    GPIOA5_Handler
-    def_default_handler    GPIOA6_Handler
-    def_default_handler    GPIOA7_Handler
-    def_default_handler    GPIOB0_Handler
-    def_default_handler    GPIOB1_Handler
-    def_default_handler    GPIOB2_Handler
-    def_default_handler    GPIOB3_Handler
-    def_default_handler    GPIOB4_Handler
-    def_default_handler    GPIOB5_Handler
-    def_default_handler    GPIOB6_Handler
-    def_default_handler    GPIOB7_Handler
-    def_default_handler    GPIOC0_Handler
-    def_default_handler    GPIOC1_Handler
-    def_default_handler    GPIOC2_Handler
-    def_default_handler    GPIOC3_Handler
-    def_default_handler    GPIOC4_Handler
-    def_default_handler    GPIOC5_Handler
-    def_default_handler    GPIOC6_Handler
-    def_default_handler    GPIOC7_Handler                                 
-    def_default_handler    GPIOM0_Handler
-    def_default_handler    GPIOM1_Handler
-    def_default_handler    GPIOM2_Handler
-    def_default_handler    GPIOM3_Handler
-    def_default_handler    GPIOM4_Handler
-    def_default_handler    GPIOM5_Handler
-    def_default_handler    GPIOM6_Handler
-    def_default_handler    GPIOM7_Handler                                            
-    def_default_handler    DMA_Handler
-    def_default_handler    LCD_Handler
-    def_default_handler    NORFLC_Handler
-    def_default_handler    CAN_Handler
-    def_default_handler    PULSE_Handler
-    def_default_handler    WDT_Handler
-    def_default_handler    PWM_Handler
-    def_default_handler    UART0_Handler
-    def_default_handler    UART1_Handler
-    def_default_handler    UART2_Handler
-    def_default_handler    UART3_Handler
-    def_default_handler    I2C0_Handler
-    def_default_handler    I2C1_Handler
-    def_default_handler    SPI0_Handler
-    def_default_handler    ADC0_Handler
-    def_default_handler    RTC_Handler
-    def_default_handler    BOD_Handler
-    def_default_handler    SDIO_Handler
-    def_default_handler    GPIOA_Handler
-    def_default_handler    GPIOB_Handler
-    def_default_handler    GPIOC_Handler
-    def_default_handler    GPIOM_Handler
-    def_default_handler    GPION_Handler
-    def_default_handler    GPIOP_Handler
-    def_default_handler    ADC1_Handler
-    def_default_handler    FPU_Handler
-    def_default_handler    SPI1_Handler
-    def_default_handler    TIMR0_Handler
-    def_default_handler    TIMR1_Handler
-    def_default_handler    TIMR2_Handler
-    def_default_handler    TIMR3_Handler
-    def_default_handler    TIMR4_Handler
-    def_default_handler    TIMR5_Handler
-
-    def_default_handler    Default_Handler
-
-    .end
+
+  .syntax unified
+  .cpu cortex-m4
+  .fpu softvfp
+  .thumb
+
+.global  g_pfnVectors
+.global  Default_Handler
+
+/* start address for the initialization values of the .data section. 
+defined in linker script */
+.word  _sidata
+/* start address for the .data section. defined in linker script */  
+.word  _sdata
+/* end address for the .data section. defined in linker script */
+.word  _edata
+/* start address for the .bss section. defined in linker script */
+.word  _sbss
+/* end address for the .bss section. defined in linker script */
+.word  _ebss
+/* stack used for SystemInit_ExtMemCtl; always internal RAM used */
+
+/**
+ * @brief  This is the code that gets called when the processor first
+ *          starts execution following a reset event. Only the absolutely
+ *          necessary set is performed, after which the application
+ *          supplied main() routine is called. 
+ * @param  None
+ * @retval : None
+*/
+
+    .section  .text.Reset_Handler
+  .weak  Reset_Handler
+  .type  Reset_Handler, %function
+Reset_Handler:  
+  ldr   sp, =_estack    		 /* set stack pointer */
+
+/* Copy the data segment initializers from flash to SRAM */  
+  movs  r1, #0
+  b  LoopCopyDataInit
+
+CopyDataInit:
+  ldr  r3, =_sidata
+  ldr  r3, [r3, r1]
+  str  r3, [r0, r1]
+  adds  r1, r1, #4
+    
+LoopCopyDataInit:
+  ldr  r0, =_sdata
+  ldr  r3, =_edata
+  adds  r2, r0, r1
+  cmp  r2, r3
+  bcc  CopyDataInit
+  ldr  r2, =_sbss
+  b  LoopFillZerobss
+/* Zero fill the bss segment. */  
+FillZerobss:
+  movs  r3, #0
+  str  r3, [r2], #4
+    
+LoopFillZerobss:
+  ldr  r3, = _ebss
+  cmp  r2, r3
+  bcc  FillZerobss
+/* Call the application's entry point.*/
+  bl  entry
+  bx  lr    
+.size  Reset_Handler, .-Reset_Handler
+
+/**
+ * @brief  This is the code that gets called when the processor receives an 
+ *         unexpected interrupt.  This simply enters an infinite loop, preserving
+ *         the system state for examination by a debugger.
+ * @param  None     
+ * @retval None       
+*/
+    .section  .text.Default_Handler,"ax",%progbits
+Default_Handler:
+Infinite_Loop:
+    b  Infinite_Loop
+    .size  Default_Handler, .-Default_Handler
+/******************************************************************************
+*
+* The minimal vector table for a Cortex M3. Note that the proper constructs
+* must be placed on this to ensure that it ends up at physical address
+* 0x0000.0000.
+* 
+*******************************************************************************/
+    .section  .isr_vector,"a",%progbits
+    .type  g_pfnVectors, %object
+    .size  g_pfnVectors, .-g_pfnVectors
+    
+g_pfnVectors:
+    .word  _estack
+    .word  Reset_Handler
+    .word  NMI_Handler
+    .word  HardFault_Handler
+    .word  MemManage_Handler
+    .word  BusFault_Handler
+    .word  UsageFault_Handler
+    .word  0
+    .word  0
+    .word  0
+    .word  0
+    .word  SVC_Handler
+    .word  DebugMon_Handler
+    .word  0
+    .word  PendSV_Handler
+    .word  SysTick_Handler
+  
+    /* External Interrupts */
+    .word     GPIOA0_Handler
+    .word     GPIOA1_Handler
+    .word     GPIOA2_Handler
+    .word     GPIOA3_Handler
+    .word     GPIOA4_Handler
+    .word     GPIOA5_Handler
+    .word     GPIOA6_Handler
+    .word     GPIOA7_Handler
+    .word     GPIOB0_Handler
+    .word     GPIOB1_Handler
+    .word     GPIOB2_Handler
+    .word     GPIOB3_Handler
+    .word     GPIOB4_Handler
+    .word     GPIOB5_Handler
+    .word     GPIOB6_Handler
+    .word     GPIOB7_Handler
+    .word     GPIOC0_Handler
+    .word     GPIOC1_Handler
+    .word     GPIOC2_Handler
+    .word     GPIOC3_Handler
+    .word     GPIOC4_Handler
+    .word     GPIOC5_Handler
+    .word     GPIOC6_Handler
+    .word     GPIOC7_Handler                                 
+    .word     GPIOM0_Handler
+    .word     GPIOM1_Handler
+    .word     GPIOM2_Handler
+    .word     GPIOM3_Handler
+    .word     GPIOM4_Handler
+    .word     GPIOM5_Handler
+    .word     GPIOM6_Handler
+    .word     GPIOM7_Handler                                            
+    .word     DMA_Handler
+    .word     LCD_Handler
+    .word     NORFLC_Handler
+    .word     CAN_Handler
+    .word     PULSE_Handler
+    .word     WDT_Handler
+    .word     PWM_Handler
+    .word     UART0_Handler
+    .word     UART1_Handler
+    .word     UART2_Handler
+    .word     UART3_Handler
+    .word     0
+    .word     I2C0_Handler
+    .word     I2C1_Handler
+    .word     SPI0_Handler
+    .word     ADC0_Handler
+    .word     RTC_Handler
+    .word     ANAC_Handler
+    .word     SDIO_Handler
+    .word     GPIOA_Handler
+    .word     GPIOB_Handler
+    .word     GPIOC_Handler
+    .word     GPIOM_Handler
+    .word     GPION_Handler
+    .word     GPIOP_Handler
+    .word     ADC1_Handler
+    .word     FPU_Handler
+    .word     SPI1_Handler
+    .word     TIMR0_Handler
+    .word     TIMR1_Handler
+    .word     TIMR2_Handler
+    .word     TIMR3_Handler
+    .word     TIMR4_Handler
+    .word     TIMR5_Handler  
+/*******************************************************************************
+*
+* Provide weak aliases for each Exception handler to the Default_Handler. 
+* As they are weak aliases, any function with the same name will override 
+* this definition.
+* 
+*******************************************************************************/
+    .weak      NMI_Handler
+    .thumb_set NMI_Handler,Default_Handler
+
+    .weak      HardFault_Handler
+    .thumb_set HardFault_Handler,Default_Handler
+
+    .weak      MemManage_Handler
+    .thumb_set MemManage_Handler,Default_Handler
+
+    .weak      BusFault_Handler
+    .thumb_set BusFault_Handler,Default_Handler
+
+    .weak      UsageFault_Handler
+    .thumb_set UsageFault_Handler,Default_Handler
+
+    .weak      SVC_Handler
+    .thumb_set SVC_Handler,Default_Handler
+
+    .weak      DebugMon_Handler
+    .thumb_set DebugMon_Handler,Default_Handler
+
+    .weak      PendSV_Handler
+    .thumb_set PendSV_Handler,Default_Handler
+
+    .weak      SysTick_Handler
+    .thumb_set SysTick_Handler,Default_Handler              
+
+    .weak      GPIOA0_Handler                   
+    .thumb_set GPIOA0_Handler,Default_Handler      
+
+    .weak      GPIOA1_Handler      
+    .thumb_set GPIOA1_Handler,Default_Handler
+
+    .weak      GPIOA2_Handler            
+    .thumb_set GPIOA2_Handler,Default_Handler
+
+    .weak      GPIOA3_Handler                  
+    .thumb_set GPIOA3_Handler,Default_Handler
+
+    .weak      GPIOA4_Handler         
+    .thumb_set GPIOA4_Handler,Default_Handler
+
+    .weak      GPIOA5_Handler      
+    .thumb_set GPIOA5_Handler,Default_Handler
+
+    .weak      GPIOA6_Handler         
+    .thumb_set GPIOA6_Handler,Default_Handler
+
+    .weak      GPIOA7_Handler         
+    .thumb_set GPIOA7_Handler,Default_Handler
+
+    .weak      GPIOB0_Handler         
+    .thumb_set GPIOB0_Handler,Default_Handler 
+
+    .weak      GPIOB1_Handler         
+    .thumb_set GPIOB1_Handler,Default_Handler
+
+    .weak      GPIOB2_Handler         
+    .thumb_set GPIOB2_Handler,Default_Handler
+
+    .weak      GPIOB3_Handler               
+    .thumb_set GPIOB3_Handler,Default_Handler
+
+    .weak      GPIOB4_Handler               
+    .thumb_set GPIOB4_Handler,Default_Handler
+
+    .weak      GPIOB5_Handler               
+    .thumb_set GPIOB5_Handler,Default_Handler
+
+    .weak      GPIOB6_Handler               
+    .thumb_set GPIOB6_Handler,Default_Handler 
+
+    .weak      GPIOB7_Handler              
+    .thumb_set GPIOB7_Handler,Default_Handler
+
+    .weak      GPIOC0_Handler               
+    .thumb_set GPIOC0_Handler,Default_Handler
+
+    .weak      GPIOC1_Handler               
+    .thumb_set GPIOC1_Handler,Default_Handler
+
+    .weak      GPIOC2_Handler      
+    .thumb_set GPIOC2_Handler,Default_Handler
+
+    .weak      GPIOC3_Handler   
+    .thumb_set GPIOC3_Handler,Default_Handler
+
+    .weak      GPIOC4_Handler            
+    .thumb_set GPIOC4_Handler,Default_Handler
+
+    .weak      GPIOC5_Handler            
+    .thumb_set GPIOC5_Handler,Default_Handler
+
+    .weak      GPIOC6_Handler      
+    .thumb_set GPIOC6_Handler,Default_Handler
+
+    .weak      GPIOC7_Handler   
+    .thumb_set GPIOC7_Handler,Default_Handler
+
+    .weak      GPIOM0_Handler            
+    .thumb_set GPIOM0_Handler,Default_Handler
+
+    .weak      GPIOM1_Handler            
+    .thumb_set GPIOM1_Handler,Default_Handler
+
+    .weak      GPIOM2_Handler            
+    .thumb_set GPIOM2_Handler,Default_Handler
+
+    .weak      GPIOM3_Handler   
+    .thumb_set GPIOM3_Handler,Default_Handler
+
+    .weak      GPIOM4_Handler   
+    .thumb_set GPIOM4_Handler,Default_Handler
+
+    .weak      GPIOM5_Handler   
+    .thumb_set GPIOM5_Handler,Default_Handler
+
+    .weak      GPIOM6_Handler   
+    .thumb_set GPIOM6_Handler,Default_Handler
+        
+    .weak      GPIOM7_Handler            
+    .thumb_set GPIOM7_Handler,Default_Handler
+
+    .weak      DMA_Handler            
+    .thumb_set DMA_Handler,Default_Handler
+
+    .weak      LCD_Handler      
+    .thumb_set LCD_Handler,Default_Handler
+
+    .weak      NORFLC_Handler      
+    .thumb_set NORFLC_Handler,Default_Handler
+                
+    .weak      CAN_Handler               
+    .thumb_set CAN_Handler,Default_Handler
+
+    .weak      PULSE_Handler               
+    .thumb_set PULSE_Handler,Default_Handler
+
+    .weak      WDT_Handler         
+    .thumb_set WDT_Handler,Default_Handler
+
+    .weak      PWM_Handler               
+    .thumb_set PWM_Handler,Default_Handler
+
+    .weak      UART0_Handler            
+    .thumb_set UART0_Handler,Default_Handler
+
+    .weak      UART1_Handler            
+    .thumb_set UART1_Handler,Default_Handler
+
+    .weak      UART2_Handler            
+    .thumb_set UART2_Handler,Default_Handler
+
+    .weak      UART3_Handler               
+    .thumb_set UART3_Handler,Default_Handler
+
+    .weak      I2C0_Handler               
+    .thumb_set I2C0_Handler,Default_Handler
+
+    .weak      I2C1_Handler               
+    .thumb_set I2C1_Handler,Default_Handler
+
+    .weak      SPI0_Handler               
+    .thumb_set SPI0_Handler,Default_Handler
+
+    .weak      ADC0_Handler               
+    .thumb_set ADC0_Handler,Default_Handler
+
+    .weak      RTC_Handler      
+    .thumb_set RTC_Handler,Default_Handler
+
+    .weak      ANAC_Handler               
+    .thumb_set ANAC_Handler,Default_Handler
+
+    .weak      SDIO_Handler               
+    .thumb_set SDIO_Handler,Default_Handler
+
+    .weak      GPIOA_Handler               
+    .thumb_set GPIOA_Handler,Default_Handler
+
+    .weak      GPIOB_Handler      
+    .thumb_set GPIOB_Handler,Default_Handler
+
+    .weak      GPIOC_Handler   
+    .thumb_set GPIOC_Handler,Default_Handler
+
+    .weak      GPIOM_Handler   
+    .thumb_set GPIOM_Handler,Default_Handler
+
+    .weak      GPION_Handler                  
+    .thumb_set GPION_Handler,Default_Handler  
+
+    .weak      GPIOP_Handler                  
+    .thumb_set GPIOP_Handler,Default_Handler 
+
+    .weak      ADC1_Handler                  
+    .thumb_set ADC1_Handler,Default_Handler 
+
+    .weak      FPU_Handler                  
+    .thumb_set FPU_Handler,Default_Handler 
+
+    .weak      SPI1_Handler                  
+    .thumb_set SPI1_Handler,Default_Handler 
+
+    .weak      TIMR0_Handler                  
+    .thumb_set TIMR0_Handler,Default_Handler 
+
+    .weak      TIMR1_Handler                  
+    .thumb_set TIMR1_Handler,Default_Handler 
+
+    .weak      TIMR2_Handler                  
+    .thumb_set TIMR2_Handler,Default_Handler 
+
+    .weak      TIMR3_Handler                  
+    .thumb_set TIMR3_Handler,Default_Handler 
+
+    .weak      TIMR4_Handler                  
+    .thumb_set TIMR4_Handler,Default_Handler 
+
+    .weak      TIMR5_Handler                  
+    .thumb_set TIMR5_Handler,Default_Handler 
+

+ 46 - 46
bsp/swm320/libraries/CMSIS/DeviceSupport/system_SWM320.c

@@ -1,18 +1,18 @@
-/****************************************************************************************************************************************** 
-* 文件名称:	system_SWM320.c
-* 功能说明:	SWM320单片机的时钟设置
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
+/******************************************************************************************************************************************
+* 文件名称: system_SWM320.c
+* 功能说明: SWM320单片机的时钟设置
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
 * 注意事项:
 * 注意事项:
-* 版本日期: V1.1.0		2017年10月25日
-* 升级记录: 
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
@@ -43,7 +43,8 @@
 
 
 /********************************** PLL 设定 **********************************************
 /********************************** PLL 设定 **********************************************
  * VCO输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV
  * VCO输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV
- * PLL输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV / OUTDIV = VCO输出频率 / OUTDIV         
+ * PLL输出频率 = PLL输入时钟 / INDIV * 4 * FBDIV / OUTDIV = VCO输出频率 / OUTDIV
+ * 注意:VCO输出频率需要在 [600MHz, 1200MHz] 之间
  *****************************************************************************************/
  *****************************************************************************************/
 #define SYS_PLL_SRC SYS_CLK_20MHz //可取值SYS_CLK_20MHz、SYS_CLK_XTAL
 #define SYS_PLL_SRC SYS_CLK_20MHz //可取值SYS_CLK_20MHz、SYS_CLK_XTAL
 
 
@@ -60,12 +61,12 @@
 uint32_t SystemCoreClock = __HSI;         //System Clock Frequency (Core Clock)
 uint32_t SystemCoreClock = __HSI;         //System Clock Frequency (Core Clock)
 uint32_t CyclesPerUs = (__HSI / 1000000); //Cycles per micro second
 uint32_t CyclesPerUs = (__HSI / 1000000); //Cycles per micro second
 
 
-/****************************************************************************************************************************************** 
-* 函数名称: 
+/******************************************************************************************************************************************
+* 函数名称:
 * 功能说明: This function is used to update the variable SystemCoreClock and must be called whenever the core clock is changed
 * 功能说明: This function is used to update the variable SystemCoreClock and must be called whenever the core clock is changed
-* 输    入: 
-* 输    出: 
-* 注意事项: 
+* 输    入:
+* 输    出:
+* 注意事项:
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 void SystemCoreClockUpdate(void)
 void SystemCoreClockUpdate(void)
 {
 {
@@ -114,12 +115,12 @@ void SystemCoreClockUpdate(void)
     CyclesPerUs = SystemCoreClock / 1000000;
     CyclesPerUs = SystemCoreClock / 1000000;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称: 
+/******************************************************************************************************************************************
+* 函数名称:
 * 功能说明: The necessary initializaiton of systerm
 * 功能说明: The necessary initializaiton of systerm
-* 输    入: 
-* 输    出: 
-* 注意事项: 
+* 输    入:
+* 输    出:
+* 注意事项:
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 void SystemInit(void)
 void SystemInit(void)
 {
 {
@@ -173,15 +174,29 @@ void SystemInit(void)
     }
     }
 }
 }
 
 
-void switchCLK_20MHz(void)
+static void delay_3ms(void)
 {
 {
     uint32_t i;
     uint32_t i;
 
 
+    if (((SYS->CLKSEL & SYS_CLKSEL_SYS_Msk) == 0) &&
+        ((SYS->CLKSEL & SYS_CLKSEL_LFCK_Msk) == 0)) //32KHz
+    {
+        for (i = 0; i < 20; i++)
+            __NOP();
+    }
+    else
+    {
+        for (i = 0; i < 20000; i++)
+            __NOP();
+    }
+}
+
+void switchCLK_20MHz(void)
+{
     SYS->HRCCR = (0 << SYS_HRCCR_OFF_Pos) |
     SYS->HRCCR = (0 << SYS_HRCCR_OFF_Pos) |
                  (0 << SYS_HRCCR_DBL_Pos); //HRC = 20MHz
                  (0 << SYS_HRCCR_DBL_Pos); //HRC = 20MHz
 
 
-    for (i = 0; i < 1000; i++)
-        __NOP();
+    delay_3ms();
 
 
     SYS->CLKSEL &= ~SYS_CLKSEL_HFCK_Msk;      //HFCK  <=  HRC
     SYS->CLKSEL &= ~SYS_CLKSEL_HFCK_Msk;      //HFCK  <=  HRC
     SYS->CLKSEL |= (1 << SYS_CLKSEL_SYS_Pos); //SYS_CLK  <= HFCK
     SYS->CLKSEL |= (1 << SYS_CLKSEL_SYS_Pos); //SYS_CLK  <= HFCK
@@ -189,13 +204,10 @@ void switchCLK_20MHz(void)
 
 
 void switchCLK_40MHz(void)
 void switchCLK_40MHz(void)
 {
 {
-    uint32_t i;
-
     SYS->HRCCR = (0 << SYS_HRCCR_OFF_Pos) |
     SYS->HRCCR = (0 << SYS_HRCCR_OFF_Pos) |
                  (1 << SYS_HRCCR_DBL_Pos); //HRC = 40MHz
                  (1 << SYS_HRCCR_DBL_Pos); //HRC = 40MHz
 
 
-    for (i = 0; i < 1000; i++)
-        __NOP();
+    delay_3ms();
 
 
     SYS->CLKSEL &= ~SYS_CLKSEL_HFCK_Msk;      //HFCK  <=  HRC
     SYS->CLKSEL &= ~SYS_CLKSEL_HFCK_Msk;      //HFCK  <=  HRC
     SYS->CLKSEL |= (1 << SYS_CLKSEL_SYS_Pos); //SYS_CLK  <= HFCK
     SYS->CLKSEL |= (1 << SYS_CLKSEL_SYS_Pos); //SYS_CLK  <= HFCK
@@ -203,14 +215,11 @@ void switchCLK_40MHz(void)
 
 
 void switchCLK_32KHz(void)
 void switchCLK_32KHz(void)
 {
 {
-    uint32_t i;
-
     SYS->CLKEN |= (1 << SYS_CLKEN_RTCBKP_Pos);
     SYS->CLKEN |= (1 << SYS_CLKEN_RTCBKP_Pos);
 
 
     SYS->LRCCR &= ~(1 << SYS_LRCCR_OFF_Pos);
     SYS->LRCCR &= ~(1 << SYS_LRCCR_OFF_Pos);
 
 
-    for (i = 0; i < 100; i++)
-        __NOP();
+    delay_3ms();
 
 
     SYS->CLKSEL &= ~SYS_CLKSEL_LFCK_Msk; //LFCK  <=  LRC
     SYS->CLKSEL &= ~SYS_CLKSEL_LFCK_Msk; //LFCK  <=  LRC
     SYS->CLKSEL &= ~SYS_CLKSEL_SYS_Msk;  //SYS_CLK  <= LFCK
     SYS->CLKSEL &= ~SYS_CLKSEL_SYS_Msk;  //SYS_CLK  <= LFCK
@@ -218,12 +227,10 @@ void switchCLK_32KHz(void)
 
 
 void switchCLK_XTAL(void)
 void switchCLK_XTAL(void)
 {
 {
-    uint32_t i;
-
     SYS->XTALCR = (1 << SYS_XTALCR_EN_Pos);
     SYS->XTALCR = (1 << SYS_XTALCR_EN_Pos);
 
 
-    for (i = 0; i < 1000; i++)
-        __NOP();
+    delay_3ms();
+    delay_3ms();
 
 
     SYS->CLKSEL |= (1 << SYS_CLKSEL_HFCK_Pos); //HFCK  <=  XTAL
     SYS->CLKSEL |= (1 << SYS_CLKSEL_HFCK_Pos); //HFCK  <=  XTAL
     SYS->CLKSEL |= (1 << SYS_CLKSEL_SYS_Pos);  //SYS_CLK  <= HFCK
     SYS->CLKSEL |= (1 << SYS_CLKSEL_SYS_Pos);  //SYS_CLK  <= HFCK
@@ -231,13 +238,9 @@ void switchCLK_XTAL(void)
 
 
 void switchCLK_PLL(void)
 void switchCLK_PLL(void)
 {
 {
-    uint32_t i;
-
     PLLInit();
     PLLInit();
-    SYS->PLLCR |= (1 << SYS_PLLCR_OUTEN_Pos);
 
 
-    for (i = 0; i < 10000; i++)
-        __NOP();
+    SYS->PLLCR |= (1 << SYS_PLLCR_OUTEN_Pos);
 
 
     SYS->CLKSEL |= (1 << SYS_CLKSEL_LFCK_Pos); //LFCK  <=  PLL
     SYS->CLKSEL |= (1 << SYS_CLKSEL_LFCK_Pos); //LFCK  <=  PLL
     SYS->CLKSEL &= ~SYS_CLKSEL_SYS_Msk;        //SYS_CLK  <= LFCK
     SYS->CLKSEL &= ~SYS_CLKSEL_SYS_Msk;        //SYS_CLK  <= LFCK
@@ -245,15 +248,12 @@ void switchCLK_PLL(void)
 
 
 void PLLInit(void)
 void PLLInit(void)
 {
 {
-    uint32_t i;
-
     if (SYS_PLL_SRC == SYS_CLK_20MHz)
     if (SYS_PLL_SRC == SYS_CLK_20MHz)
     {
     {
         SYS->HRCCR = (0 << SYS_HRCCR_OFF_Pos) |
         SYS->HRCCR = (0 << SYS_HRCCR_OFF_Pos) |
                      (0 << SYS_HRCCR_DBL_Pos); //HRC = 20MHz
                      (0 << SYS_HRCCR_DBL_Pos); //HRC = 20MHz
 
 
-        for (i = 0; i < 1000; i++)
-            __NOP();
+        delay_3ms();
 
 
         SYS->PLLCR |= (1 << SYS_PLLCR_INSEL_Pos); //PLL_SRC <= HRC
         SYS->PLLCR |= (1 << SYS_PLLCR_INSEL_Pos); //PLL_SRC <= HRC
     }
     }
@@ -261,8 +261,8 @@ void PLLInit(void)
     {
     {
         SYS->XTALCR = (1 << SYS_XTALCR_EN_Pos);
         SYS->XTALCR = (1 << SYS_XTALCR_EN_Pos);
 
 
-        for (i = 0; i < 20000; i++)
-            ;
+        delay_3ms();
+        delay_3ms();
 
 
         SYS->PLLCR &= ~(1 << SYS_PLLCR_INSEL_Pos); //PLL_SRC <= XTAL
         SYS->PLLCR &= ~(1 << SYS_PLLCR_INSEL_Pos); //PLL_SRC <= XTAL
     }
     }

+ 131 - 131
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_adc.c

@@ -1,29 +1,29 @@
-/****************************************************************************************************************************************** 
-* 文件名称:	SWM320_adc.c
-* 功能说明:	SWM320单片机的ADC数模转换器功能驱动库
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
+/******************************************************************************************************************************************
+* 文件名称: SWM320_adc.c
+* 功能说明: SWM320单片机的ADC数模转换器功能驱动库
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
 * 注意事项:
 * 注意事项:
-* 版本日期: V1.1.0		2017年10月25日
-* 升级记录: 
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
-* COPYRIGHT 2012 Synwit Technology  
+* COPYRIGHT 2012 Synwit Technology
 *******************************************************************************************************************************************/
 *******************************************************************************************************************************************/
 #include "SWM320.h"
 #include "SWM320.h"
 #include "SWM320_adc.h"
 #include "SWM320_adc.h"
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: ADC_Init()
 * 函数名称: ADC_Init()
-* 功能说明:	ADC模数转换器初始化
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,有效值包括ADC0、ADC1
-*			ADC_InitStructure * initStruct		包含ADC各相关定值的结构体
+* 功能说明: ADC模数转换器初始化
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,有效值包括ADC0、ADC1
+*           ADC_InitStructure * initStruct      包含ADC各相关定值的结构体
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -152,10 +152,10 @@ void ADC_Init(ADC_TypeDef *ADCx, ADC_InitStructure *initStruct)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_Open()
-* 功能说明:	ADC开启,可以软件启动、或硬件触发ADC转换
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
+/******************************************************************************************************************************************
+* 函数名称: ADC_Open()
+* 功能说明: ADC开启,可以软件启动、或硬件触发ADC转换
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -164,10 +164,10 @@ void ADC_Open(ADC_TypeDef *ADCx)
     ADCx->CTRL |= (0x01 << ADC_CTRL_EN_Pos);
     ADCx->CTRL |= (0x01 << ADC_CTRL_EN_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_Close()
-* 功能说明:	ADC关闭,无法软件启动、或硬件触发ADC转换
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
+/******************************************************************************************************************************************
+* 函数名称: ADC_Close()
+* 功能说明: ADC关闭,无法软件启动、或硬件触发ADC转换
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -176,10 +176,10 @@ void ADC_Close(ADC_TypeDef *ADCx)
     ADCx->CTRL &= ~(0x01 << ADC_CTRL_EN_Pos);
     ADCx->CTRL &= ~(0x01 << ADC_CTRL_EN_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_Start()
-* 功能说明:	软件触发模式下启动ADC转换
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
+/******************************************************************************************************************************************
+* 函数名称: ADC_Start()
+* 功能说明: 软件触发模式下启动ADC转换
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -188,10 +188,10 @@ void ADC_Start(ADC_TypeDef *ADCx)
     ADCx->START |= (0x01 << ADC_START_GO_Pos);
     ADCx->START |= (0x01 << ADC_START_GO_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_Stop()
-* 功能说明:	软件触发模式下停止ADC转换
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
+/******************************************************************************************************************************************
+* 函数名称: ADC_Stop()
+* 功能说明: 软件触发模式下停止ADC转换
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -235,12 +235,12 @@ static uint32_t chn2idx(uint32_t chn)
     return idx;
     return idx;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_Read()
-* 功能说明:	从指定通道读取转换结果
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chn			要读取转换结果的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7		
-* 输    出: uint32_t				读取到的转换结果
+/******************************************************************************************************************************************
+* 函数名称: ADC_Read()
+* 功能说明: 从指定通道读取转换结果
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chn            要读取转换结果的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
+* 输    出: uint32_t              读取到的转换结果
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t ADC_Read(ADC_TypeDef *ADCx, uint32_t chn)
 uint32_t ADC_Read(ADC_TypeDef *ADCx, uint32_t chn)
@@ -255,12 +255,12 @@ uint32_t ADC_Read(ADC_TypeDef *ADCx, uint32_t chn)
     return dat;
     return dat;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_IsEOC()
-* 功能说明:	指定通道是否End Of Conversion
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chn			要查询状态的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7		
-* 输    出: uint32_t				1 该通道完成了转换    0 该通道未完成转换
+/******************************************************************************************************************************************
+* 函数名称: ADC_IsEOC()
+* 功能说明: 指定通道是否End Of Conversion
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chn            要查询状态的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
+* 输    出: uint32_t              1 该通道完成了转换    0 该通道未完成转换
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t ADC_IsEOC(ADC_TypeDef *ADCx, uint32_t chn)
 uint32_t ADC_IsEOC(ADC_TypeDef *ADCx, uint32_t chn)
@@ -270,11 +270,11 @@ uint32_t ADC_IsEOC(ADC_TypeDef *ADCx, uint32_t chn)
     return (ADCx->CH[idx].STAT & ADC_STAT_EOC_Msk) ? 1 : 0;
     return (ADCx->CH[idx].STAT & ADC_STAT_EOC_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_ChnSelect()
-* 功能说明:	ADC通道选通,模数转换会在选通的通道上依次采样转换
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chns			要选通的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合(即“按位或”运算)
+/******************************************************************************************************************************************
+* 函数名称: ADC_ChnSelect()
+* 功能说明: ADC通道选通,模数转换会在选通的通道上依次采样转换
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chns           要选通的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7及其组合(即“按位或”运算)
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -284,11 +284,11 @@ void ADC_ChnSelect(ADC_TypeDef *ADCx, uint32_t chns)
     ADCx->CTRL |= (chns << ADC_CTRL_CH0_Pos);
     ADCx->CTRL |= (chns << ADC_CTRL_CH0_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_IntEOCEn()
-* 功能说明:	转换完成中断使能
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chn			要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7		
+/******************************************************************************************************************************************
+* 函数名称: ADC_IntEOCEn()
+* 功能说明: 转换完成中断使能
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chn            要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -299,11 +299,11 @@ void ADC_IntEOCEn(ADC_TypeDef *ADCx, uint32_t chn)
     ADCx->IE |= (0x01 << (idx * 4));
     ADCx->IE |= (0x01 << (idx * 4));
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_IntEOCDis()
-* 功能说明:	转换完成中断禁止
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chn			要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7		
+/******************************************************************************************************************************************
+* 函数名称: ADC_IntEOCDis()
+* 功能说明: 转换完成中断禁止
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chn            要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -314,11 +314,11 @@ void ADC_IntEOCDis(ADC_TypeDef *ADCx, uint32_t chn)
     ADCx->IE &= ~(0x01 << (idx * 4));
     ADCx->IE &= ~(0x01 << (idx * 4));
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_IntEOCClr()
-* 功能说明:	转换完成中断标志清除
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chn			要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7		
+/******************************************************************************************************************************************
+* 函数名称: ADC_IntEOCClr()
+* 功能说明: 转换完成中断标志清除
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chn            要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -329,12 +329,12 @@ void ADC_IntEOCClr(ADC_TypeDef *ADCx, uint32_t chn)
     ADCx->IF = (0x01 << (idx * 4));
     ADCx->IF = (0x01 << (idx * 4));
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_IntEOCStat()
-* 功能说明:	转换完成中断状态
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chn			要查询的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7		
-* 输    出: uint32_t				1 该通道完成了转换    0 该通道未完成转换
+/******************************************************************************************************************************************
+* 函数名称: ADC_IntEOCStat()
+* 功能说明: 转换完成中断状态
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chn            要查询的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
+* 输    出: uint32_t              1 该通道完成了转换    0 该通道未完成转换
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t ADC_IntEOCStat(ADC_TypeDef *ADCx, uint32_t chn)
 uint32_t ADC_IntEOCStat(ADC_TypeDef *ADCx, uint32_t chn)
@@ -344,11 +344,11 @@ uint32_t ADC_IntEOCStat(ADC_TypeDef *ADCx, uint32_t chn)
     return (ADCx->IF & (0x01 << (idx * 4))) ? 1 : 0;
     return (ADCx->IF & (0x01 << (idx * 4))) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_IntOVFEn()
-* 功能说明:	数据溢出中断使能
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chn			要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7		
+/******************************************************************************************************************************************
+* 函数名称: ADC_IntOVFEn()
+* 功能说明: 数据溢出中断使能
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chn            要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -359,11 +359,11 @@ void ADC_IntOVFEn(ADC_TypeDef *ADCx, uint32_t chn)
     ADCx->IE |= (0x01 << (idx * 4 + 1));
     ADCx->IE |= (0x01 << (idx * 4 + 1));
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_IntOVFDis()
-* 功能说明:	数据溢出中断禁止
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chn			要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7		
+/******************************************************************************************************************************************
+* 函数名称: ADC_IntOVFDis()
+* 功能说明: 数据溢出中断禁止
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chn            要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -374,11 +374,11 @@ void ADC_IntOVFDis(ADC_TypeDef *ADCx, uint32_t chn)
     ADCx->IE &= ~(0x01 << (idx * 4 + 1));
     ADCx->IE &= ~(0x01 << (idx * 4 + 1));
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_IntOVFClr()
-* 功能说明:	数据溢出中断标志清除
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chn			要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7		
+/******************************************************************************************************************************************
+* 函数名称: ADC_IntOVFClr()
+* 功能说明: 数据溢出中断标志清除
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chn            要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -389,12 +389,12 @@ void ADC_IntOVFClr(ADC_TypeDef *ADCx, uint32_t chn)
     ADCx->IF = (0x01 << (idx * 4 + 1));
     ADCx->IF = (0x01 << (idx * 4 + 1));
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_IntOVFStat()
-* 功能说明:	数据溢出中断状态
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chn			要查询的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7		
-* 输    出: uint32_t				1 该通道完成了转换    0 该通道未完成转换
+/******************************************************************************************************************************************
+* 函数名称: ADC_IntOVFStat()
+* 功能说明: 数据溢出中断状态
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chn            要查询的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
+* 输    出: uint32_t              1 该通道完成了转换    0 该通道未完成转换
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t ADC_IntOVFStat(ADC_TypeDef *ADCx, uint32_t chn)
 uint32_t ADC_IntOVFStat(ADC_TypeDef *ADCx, uint32_t chn)
@@ -404,11 +404,11 @@ uint32_t ADC_IntOVFStat(ADC_TypeDef *ADCx, uint32_t chn)
     return (ADCx->IF & (0x01 << (idx * 4 + 1))) ? 1 : 0;
     return (ADCx->IF & (0x01 << (idx * 4 + 1))) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_IntHFULLEn()
-* 功能说明:	FIFO半满中断使能
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chn			要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7		
+/******************************************************************************************************************************************
+* 函数名称: ADC_IntHFULLEn()
+* 功能说明: FIFO半满中断使能
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chn            要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -419,11 +419,11 @@ void ADC_IntHFULLEn(ADC_TypeDef *ADCx, uint32_t chn)
     ADCx->IE |= (0x01 << (idx * 4 + 2));
     ADCx->IE |= (0x01 << (idx * 4 + 2));
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_IntHFULLDis()
-* 功能说明:	FIFO半满中断禁止
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chn			要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7		
+/******************************************************************************************************************************************
+* 函数名称: ADC_IntHFULLDis()
+* 功能说明: FIFO半满中断禁止
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chn            要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -434,11 +434,11 @@ void ADC_IntHFULLDis(ADC_TypeDef *ADCx, uint32_t chn)
     ADCx->IE &= ~(0x01 << (idx * 4 + 2));
     ADCx->IE &= ~(0x01 << (idx * 4 + 2));
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_IntHFULLClr()
-* 功能说明:	FIFO半满中断标志清除
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chn			要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7		
+/******************************************************************************************************************************************
+* 函数名称: ADC_IntHFULLClr()
+* 功能说明: FIFO半满中断标志清除
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chn            要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -449,12 +449,12 @@ void ADC_IntHFULLClr(ADC_TypeDef *ADCx, uint32_t chn)
     ADCx->IF = (0x01 << (idx * 4 + 2));
     ADCx->IF = (0x01 << (idx * 4 + 2));
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_IntHFULLStat()
-* 功能说明:	FIFO半满中断状态
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chn			要查询的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7		
-* 输    出: uint32_t				1 该通道完成了转换    0 该通道未完成转换
+/******************************************************************************************************************************************
+* 函数名称: ADC_IntHFULLStat()
+* 功能说明: FIFO半满中断状态
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chn            要查询的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
+* 输    出: uint32_t              1 该通道完成了转换    0 该通道未完成转换
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t ADC_IntHFULLStat(ADC_TypeDef *ADCx, uint32_t chn)
 uint32_t ADC_IntHFULLStat(ADC_TypeDef *ADCx, uint32_t chn)
@@ -464,11 +464,11 @@ uint32_t ADC_IntHFULLStat(ADC_TypeDef *ADCx, uint32_t chn)
     return (ADCx->IF & (0x01 << (idx * 4 + 2))) ? 1 : 0;
     return (ADCx->IF & (0x01 << (idx * 4 + 2))) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_IntFULLEn()
-* 功能说明:	FIFO满中断使能
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chn			要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7		
+/******************************************************************************************************************************************
+* 函数名称: ADC_IntFULLEn()
+* 功能说明: FIFO满中断使能
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chn            要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -479,11 +479,11 @@ void ADC_IntFULLEn(ADC_TypeDef *ADCx, uint32_t chn)
     ADCx->IE |= (0x01 << (idx * 4 + 3));
     ADCx->IE |= (0x01 << (idx * 4 + 3));
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_IntFULLDis()
-* 功能说明:	FIFO满中断禁止
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chn			要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7		
+/******************************************************************************************************************************************
+* 函数名称: ADC_IntFULLDis()
+* 功能说明: FIFO满中断禁止
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chn            要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -494,11 +494,11 @@ void ADC_IntFULLDis(ADC_TypeDef *ADCx, uint32_t chn)
     ADCx->IE &= ~(0x01 << (idx * 4 + 3));
     ADCx->IE &= ~(0x01 << (idx * 4 + 3));
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_IntFULLClr()
-* 功能说明:	FIFO满中断标志清除
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chn			要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7		
+/******************************************************************************************************************************************
+* 函数名称: ADC_IntFULLClr()
+* 功能说明: FIFO满中断标志清除
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chn            要设置的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -509,12 +509,12 @@ void ADC_IntFULLClr(ADC_TypeDef *ADCx, uint32_t chn)
     ADCx->IF = (0x01 << (idx * 4 + 3));
     ADCx->IF = (0x01 << (idx * 4 + 3));
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	ADC_IntFULLStat()
-* 功能说明:	FIFO满中断状态
-* 输    入: ADC_TypeDef * ADCx		指定要被设置的ADC,可取值包括ADC
-*			uint32_t chn			要查询的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7		
-* 输    出: uint32_t				1 该通道完成了转换    0 该通道未完成转换
+/******************************************************************************************************************************************
+* 函数名称: ADC_IntFULLStat()
+* 功能说明: FIFO满中断状态
+* 输    入: ADC_TypeDef * ADCx        指定要被设置的ADC,可取值包括ADC
+*           uint32_t chn            要查询的通道,有效值ADC_CH0、ADC_CH1、... ... 、ADC_CH7
+* 输    出: uint32_t              1 该通道完成了转换    0 该通道未完成转换
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t ADC_IntFULLStat(ADC_TypeDef *ADCx, uint32_t chn)
 uint32_t ADC_IntFULLStat(ADC_TypeDef *ADCx, uint32_t chn)

+ 196 - 196
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_can.c

@@ -1,18 +1,18 @@
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 文件名称: SWM320_can.c
 * 文件名称: SWM320_can.c
-* 功能说明:	SWM320单片机的CAN模块驱动库
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
-* 注意事项: 
-* 版本日期:	V1.1.0		2017年10月25日
-* 升级记录: 
+* 功能说明: SWM320单片机的CAN模块驱动库
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
+* 注意事项:
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
@@ -21,11 +21,11 @@
 #include "SWM320.h"
 #include "SWM320.h"
 #include "SWM320_can.h"
 #include "SWM320_can.h"
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_Init()
-* 功能说明:	CAN接口初始化
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
-*			CAN_InitStructure * initStruct    包含CAN接口相关设定值的结构体
+/******************************************************************************************************************************************
+* 函数名称: CAN_Init()
+* 功能说明: CAN接口初始化
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
+*           CAN_InitStructure * initStruct    包含CAN接口相关设定值的结构体
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -84,10 +84,10 @@ void CAN_Init(CAN_TypeDef *CANx, CAN_InitStructure *initStruct)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_Open()
-* 功能说明:	CAN接口打开
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_Open()
+* 功能说明: CAN接口打开
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -96,10 +96,10 @@ void CAN_Open(CAN_TypeDef *CANx)
     CANx->CR &= ~(0x01 << CAN_CR_RST_Pos); //退出复位模式,进入工作模式
     CANx->CR &= ~(0x01 << CAN_CR_RST_Pos); //退出复位模式,进入工作模式
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_Close()
-* 功能说明:	CAN接口关闭
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_Close()
+* 功能说明: CAN接口关闭
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -108,15 +108,15 @@ void CAN_Close(CAN_TypeDef *CANx)
     CANx->CR |= (0x01 << CAN_CR_RST_Pos); //进入复位模式,不能发送和接收数据
     CANx->CR |= (0x01 << CAN_CR_RST_Pos); //进入复位模式,不能发送和接收数据
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_Transmit()
-* 功能说明:	CAN发送数据
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
-*			uint32_t format		CAN_FRAME_STD 标准帧    CAN_FRAME_EXT 扩展帧
-*			uint32_t id			消息ID
-*			uint8_t data[]		要发送的数据
-*			uint32_t size		要发送的数据的个数
-*			uint32_t once		只发送一次,即使发送失败(仲裁丢失、发送出错、NAK)也不尝试重发
+/******************************************************************************************************************************************
+* 函数名称: CAN_Transmit()
+* 功能说明: CAN发送数据
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
+*           uint32_t format     CAN_FRAME_STD 标准帧    CAN_FRAME_EXT 扩展帧
+*           uint32_t id         消息ID
+*           uint8_t data[]      要发送的数据
+*           uint32_t size       要发送的数据的个数
+*           uint32_t once       只发送一次,即使发送失败(仲裁丢失、发送出错、NAK)也不尝试重发
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -126,32 +126,32 @@ void CAN_Transmit(CAN_TypeDef *CANx, uint32_t format, uint32_t id, uint8_t data[
 
 
     if (format == CAN_FRAME_STD)
     if (format == CAN_FRAME_STD)
     {
     {
-        CANx->TXFRAME.INFO = (0 << CAN_INFO_FF_Pos) |
-                             (0 << CAN_INFO_RTR_Pos) |
-                             (size << CAN_INFO_DLC_Pos);
+        CANx->FRAME.INFO = (0 << CAN_INFO_FF_Pos) |
+                           (0 << CAN_INFO_RTR_Pos) |
+                           (size << CAN_INFO_DLC_Pos);
 
 
-        CANx->TXFRAME.DATA[0] = id >> 3;
-        CANx->TXFRAME.DATA[1] = id << 5;
+        CANx->FRAME.DATA[0] = id >> 3;
+        CANx->FRAME.DATA[1] = id << 5;
 
 
         for (i = 0; i < size; i++)
         for (i = 0; i < size; i++)
         {
         {
-            CANx->TXFRAME.DATA[i + 2] = data[i];
+            CANx->FRAME.DATA[i + 2] = data[i];
         }
         }
     }
     }
     else //if(format == CAN_FRAME_EXT)
     else //if(format == CAN_FRAME_EXT)
     {
     {
-        CANx->TXFRAME.INFO = (1 << CAN_INFO_FF_Pos) |
-                             (0 << CAN_INFO_RTR_Pos) |
-                             (size << CAN_INFO_DLC_Pos);
+        CANx->FRAME.INFO = (1 << CAN_INFO_FF_Pos) |
+                           (0 << CAN_INFO_RTR_Pos) |
+                           (size << CAN_INFO_DLC_Pos);
 
 
-        CANx->TXFRAME.DATA[0] = id >> 21;
-        CANx->TXFRAME.DATA[1] = id >> 13;
-        CANx->TXFRAME.DATA[2] = id >> 5;
-        CANx->TXFRAME.DATA[3] = id << 3;
+        CANx->FRAME.DATA[0] = id >> 21;
+        CANx->FRAME.DATA[1] = id >> 13;
+        CANx->FRAME.DATA[2] = id >> 5;
+        CANx->FRAME.DATA[3] = id << 3;
 
 
         for (i = 0; i < size; i++)
         for (i = 0; i < size; i++)
         {
         {
-            CANx->TXFRAME.DATA[i + 4] = data[i];
+            CANx->FRAME.DATA[i + 4] = data[i];
         }
         }
     }
     }
 
 
@@ -172,13 +172,13 @@ void CAN_Transmit(CAN_TypeDef *CANx, uint32_t format, uint32_t id, uint8_t data[
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_TransmitRequest()
-* 功能说明:	CAN发送远程请求,请求远程节点发送数据
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
-*			uint32_t format		CAN_FRAME_STD 标准帧    CAN_FRAME_EXT 扩展帧
-*			uint32_t id			消息ID
-*			uint32_t once		只发送一次,即使发送失败(仲裁丢失、发送出错、NAK)也不尝试重发
+/******************************************************************************************************************************************
+* 函数名称: CAN_TransmitRequest()
+* 功能说明: CAN发送远程请求,请求远程节点发送数据
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
+*           uint32_t format     CAN_FRAME_STD 标准帧    CAN_FRAME_EXT 扩展帧
+*           uint32_t id         消息ID
+*           uint32_t once       只发送一次,即使发送失败(仲裁丢失、发送出错、NAK)也不尝试重发
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -186,23 +186,23 @@ void CAN_TransmitRequest(CAN_TypeDef *CANx, uint32_t format, uint32_t id, uint32
 {
 {
     if (format == CAN_FRAME_STD)
     if (format == CAN_FRAME_STD)
     {
     {
-        CANx->TXFRAME.INFO = (0 << CAN_INFO_FF_Pos) |
-                             (1 << CAN_INFO_RTR_Pos) |
-                             (0 << CAN_INFO_DLC_Pos);
+        CANx->FRAME.INFO = (0 << CAN_INFO_FF_Pos) |
+                           (1 << CAN_INFO_RTR_Pos) |
+                           (0 << CAN_INFO_DLC_Pos);
 
 
-        CANx->TXFRAME.DATA[0] = id >> 3;
-        CANx->TXFRAME.DATA[1] = id << 5;
+        CANx->FRAME.DATA[0] = id >> 3;
+        CANx->FRAME.DATA[1] = id << 5;
     }
     }
     else //if(format == CAN_FRAME_EXT)
     else //if(format == CAN_FRAME_EXT)
     {
     {
-        CANx->TXFRAME.INFO = (1 << CAN_INFO_FF_Pos) |
-                             (1 << CAN_INFO_RTR_Pos) |
-                             (0 << CAN_INFO_DLC_Pos);
-
-        CANx->TXFRAME.DATA[0] = id >> 21;
-        CANx->TXFRAME.DATA[1] = id >> 13;
-        CANx->TXFRAME.DATA[2] = id >> 5;
-        CANx->TXFRAME.DATA[3] = id << 3;
+        CANx->FRAME.INFO = (1 << CAN_INFO_FF_Pos) |
+                           (1 << CAN_INFO_RTR_Pos) |
+                           (0 << CAN_INFO_DLC_Pos);
+
+        CANx->FRAME.DATA[0] = id >> 21;
+        CANx->FRAME.DATA[1] = id >> 13;
+        CANx->FRAME.DATA[2] = id >> 5;
+        CANx->FRAME.DATA[3] = id << 3;
     }
     }
 
 
     if (once == 0)
     if (once == 0)
@@ -215,49 +215,49 @@ void CAN_TransmitRequest(CAN_TypeDef *CANx, uint32_t format, uint32_t id, uint32
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_Receive()
-* 功能说明:	CAN接收数据
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
-*			CAN_RXMessage *msg	接收到的消息存储在此结构体变量中
+/******************************************************************************************************************************************
+* 函数名称: CAN_Receive()
+* 功能说明: CAN接收数据
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
+*           CAN_RXMessage *msg  接收到的消息存储在此结构体变量中
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 void CAN_Receive(CAN_TypeDef *CANx, CAN_RXMessage *msg)
 void CAN_Receive(CAN_TypeDef *CANx, CAN_RXMessage *msg)
 {
 {
     uint32_t i;
     uint32_t i;
-    msg->format = (CANx->RXFRAME.INFO & CAN_INFO_FF_Msk) >> CAN_INFO_FF_Pos;
+    msg->format = (CANx->FRAME.INFO & CAN_INFO_FF_Msk) >> CAN_INFO_FF_Pos;
 
 
-    msg->remote = (CANx->RXFRAME.INFO & CAN_INFO_RTR_Msk) >> CAN_INFO_RTR_Pos;
-    msg->size = (CANx->RXFRAME.INFO & CAN_INFO_DLC_Msk) >> CAN_INFO_DLC_Pos;
+    msg->remote = (CANx->FRAME.INFO & CAN_INFO_RTR_Msk) >> CAN_INFO_RTR_Pos;
+    msg->size = (CANx->FRAME.INFO & CAN_INFO_DLC_Msk) >> CAN_INFO_DLC_Pos;
 
 
     if (msg->format == CAN_FRAME_STD)
     if (msg->format == CAN_FRAME_STD)
     {
     {
-        msg->id = (CANx->RXFRAME.DATA[0] << 3) | (CANx->RXFRAME.DATA[1] >> 5);
+        msg->id = (CANx->FRAME.DATA[0] << 3) | (CANx->FRAME.DATA[1] >> 5);
 
 
         for (i = 0; i < msg->size; i++)
         for (i = 0; i < msg->size; i++)
         {
         {
-            msg->data[i] = CANx->RXFRAME.DATA[i + 2];
+            msg->data[i] = CANx->FRAME.DATA[i + 2];
         }
         }
     }
     }
     else //if(msg->format == CAN_FRAME_EXT)
     else //if(msg->format == CAN_FRAME_EXT)
     {
     {
-        msg->id = (CANx->RXFRAME.DATA[0] << 21) | (CANx->RXFRAME.DATA[1] << 13) | (CANx->RXFRAME.DATA[2] << 5) | (CANx->RXFRAME.DATA[3] >> 3);
+        msg->id = (CANx->FRAME.DATA[0] << 21) | (CANx->FRAME.DATA[1] << 13) | (CANx->FRAME.DATA[2] << 5) | (CANx->FRAME.DATA[3] >> 3);
 
 
         for (i = 0; i < msg->size; i++)
         for (i = 0; i < msg->size; i++)
         {
         {
-            msg->data[i] = CANx->RXFRAME.DATA[i + 4];
+            msg->data[i] = CANx->FRAME.DATA[i + 4];
         }
         }
     }
     }
 
 
     CANx->CMD = (1 << CAN_CMD_RRB_Pos);
     CANx->CMD = (1 << CAN_CMD_RRB_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_TXComplete()
-* 功能说明:	发送是否完成
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
-* 输    出: uint32_t			1 已经完成    0 还未完成
+/******************************************************************************************************************************************
+* 函数名称: CAN_TXComplete()
+* 功能说明: 发送是否完成
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
+* 输    出: uint32_t          1 已经完成    0 还未完成
 * 注意事项: 发送被Abort也会触发发送完成,但不会触发发送成功
 * 注意事项: 发送被Abort也会触发发送完成,但不会触发发送成功
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t CAN_TXComplete(CAN_TypeDef *CANx)
 uint32_t CAN_TXComplete(CAN_TypeDef *CANx)
@@ -265,11 +265,11 @@ uint32_t CAN_TXComplete(CAN_TypeDef *CANx)
     return (CANx->SR & CAN_SR_TXBR_Msk) ? 1 : 0;
     return (CANx->SR & CAN_SR_TXBR_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_TXSuccess()
-* 功能说明:	发送是否成功
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
-* 输    出: uint32_t			1 发送成功    0 发送失败
+/******************************************************************************************************************************************
+* 函数名称: CAN_TXSuccess()
+* 功能说明: 发送是否成功
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
+* 输    出: uint32_t          1 发送成功    0 发送失败
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t CAN_TXSuccess(CAN_TypeDef *CANx)
 uint32_t CAN_TXSuccess(CAN_TypeDef *CANx)
@@ -277,10 +277,10 @@ uint32_t CAN_TXSuccess(CAN_TypeDef *CANx)
     return (CANx->SR & CAN_SR_TXOK_Msk) ? 1 : 0;
     return (CANx->SR & CAN_SR_TXOK_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_AbortTransmit()
-* 功能说明:	终止发送
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_AbortTransmit()
+* 功能说明: 终止发送
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 正在进行的发送无法终止,但执行此命令后若发送失败不会再重发
 * 注意事项: 正在进行的发送无法终止,但执行此命令后若发送失败不会再重发
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -289,11 +289,11 @@ void CAN_AbortTransmit(CAN_TypeDef *CANx)
     CANx->CMD = (1 << CAN_CMD_ABTTX_Pos);
     CANx->CMD = (1 << CAN_CMD_ABTTX_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_TXBufferReady()
-* 功能说明:	TX Buffer是否准备好可以写入消息
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
-* 输    出: uint32_t			1 已准备好    0 未准备好
+/******************************************************************************************************************************************
+* 函数名称: CAN_TXBufferReady()
+* 功能说明: TX Buffer是否准备好可以写入消息
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
+* 输    出: uint32_t          1 已准备好    0 未准备好
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t CAN_TXBufferReady(CAN_TypeDef *CANx)
 uint32_t CAN_TXBufferReady(CAN_TypeDef *CANx)
@@ -301,11 +301,11 @@ uint32_t CAN_TXBufferReady(CAN_TypeDef *CANx)
     return (CANx->SR & CAN_SR_TXBR_Msk) ? 1 : 0;
     return (CANx->SR & CAN_SR_TXBR_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_RXDataAvailable()
-* 功能说明:	RX FIFO中是否有数据可读出
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
-* 输    出: uint32_t			1 有数据可读出    0 没有数据
+/******************************************************************************************************************************************
+* 函数名称: CAN_RXDataAvailable()
+* 功能说明: RX FIFO中是否有数据可读出
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
+* 输    出: uint32_t          1 有数据可读出    0 没有数据
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t CAN_RXDataAvailable(CAN_TypeDef *CANx)
 uint32_t CAN_RXDataAvailable(CAN_TypeDef *CANx)
@@ -313,14 +313,14 @@ uint32_t CAN_RXDataAvailable(CAN_TypeDef *CANx)
     return (CANx->SR & CAN_SR_RXDA_Msk) ? 1 : 0;
     return (CANx->SR & CAN_SR_RXDA_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_SetBaudrate()
-* 功能说明:	设置波特率
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
-*			uint32_t baudrate	波特率,即位传输速率
-*			uint32_t CAN_BS1	CAN_BS1_1tq、CAN_BS1_2tq、... ... 、CAN_BS1_16tq
-*			uint32_t CAN_BS2	CAN_BS2_1tq、CAN_BS2_2tq、... ... 、CAN_BS2_8tq
-*			uint32_t CAN_SJW	CAN_SJW_1tq、CAN_SJW_2tq、CAN_SJW_3tq、CAN_SJW_4tq
+/******************************************************************************************************************************************
+* 函数名称: CAN_SetBaudrate()
+* 功能说明: 设置波特率
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
+*           uint32_t baudrate   波特率,即位传输速率
+*           uint32_t CAN_BS1    CAN_BS1_1tq、CAN_BS1_2tq、... ... 、CAN_BS1_16tq
+*           uint32_t CAN_BS2    CAN_BS2_1tq、CAN_BS2_2tq、... ... 、CAN_BS2_8tq
+*           uint32_t CAN_SJW    CAN_SJW_1tq、CAN_SJW_2tq、CAN_SJW_3tq、CAN_SJW_4tq
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 设置前需要先调用CAN_Close()关闭CAN模块
 * 注意事项: 设置前需要先调用CAN_Close()关闭CAN模块
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -334,12 +334,12 @@ void CAN_SetBaudrate(CAN_TypeDef *CANx, uint32_t baudrate, uint32_t CAN_BS1, uin
                 ((SystemCoreClock / 2 / baudrate / (1 + (CAN_BS1 + 1) + (CAN_BS2 + 1)) - 1) << CAN_BT0_BRP_Pos);
                 ((SystemCoreClock / 2 / baudrate / (1 + (CAN_BS1 + 1) + (CAN_BS2 + 1)) - 1) << CAN_BT0_BRP_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_SetFilter32b()
-* 功能说明:	设置接收滤波器,1个32位滤波器
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
-*			uint32_t check		与mask一起决定了接收到的Message是否是自己需要的:check & (~mask) == ID & (~mask)的Message通过过滤
-*			uint32_t mask
+/******************************************************************************************************************************************
+* 函数名称: CAN_SetFilter32b()
+* 功能说明: 设置接收滤波器,1个32位滤波器
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
+*           uint32_t check      与mask一起决定了接收到的Message是否是自己需要的:check & (~mask) == ID & (~mask)的Message通过过滤
+*           uint32_t mask
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 设置前需要先调用CAN_Close()关闭CAN模块
 * 注意事项: 设置前需要先调用CAN_Close()关闭CAN模块
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -359,14 +359,14 @@ void CAN_SetFilter32b(CAN_TypeDef *CANx, uint32_t check, uint32_t mask)
     CANx->FILTER.ACR[0] = (check >> 24) & 0xFF;
     CANx->FILTER.ACR[0] = (check >> 24) & 0xFF;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_SetFilter16b()
-* 功能说明:	设置接收滤波器,2个16位滤波器
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
-*			uint16_t check1		与mask一起决定了接收到的Message是否是自己需要的:check & (~mask) == ID & (~mask)的Message通过过滤
-*			uint16_t mask1
-*			uint16_t check2
-*			uint16_t mask2
+/******************************************************************************************************************************************
+* 函数名称: CAN_SetFilter16b()
+* 功能说明: 设置接收滤波器,2个16位滤波器
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
+*           uint16_t check1     与mask一起决定了接收到的Message是否是自己需要的:check & (~mask) == ID & (~mask)的Message通过过滤
+*           uint16_t mask1
+*           uint16_t check2
+*           uint16_t mask2
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 设置前需要先调用CAN_Close()关闭CAN模块
 * 注意事项: 设置前需要先调用CAN_Close()关闭CAN模块
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -386,10 +386,10 @@ void CAN_SetFilter16b(CAN_TypeDef *CANx, uint16_t check1, uint16_t mask1, uint16
     CANx->FILTER.ACR[0] = (check2 >> 8) & 0xFF;
     CANx->FILTER.ACR[0] = (check2 >> 8) & 0xFF;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_INTRXNotEmptyEn()
-* 功能说明:	当RX FIFO中有数据时(非空)触发中断使能
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_INTRXNotEmptyEn()
+* 功能说明: 当RX FIFO中有数据时(非空)触发中断使能
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -398,10 +398,10 @@ void CAN_INTRXNotEmptyEn(CAN_TypeDef *CANx)
     CANx->IE |= (1 << CAN_IE_RXDA_Pos);
     CANx->IE |= (1 << CAN_IE_RXDA_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_INTRXNotEmptyDis()
-* 功能说明:	当RX FIFO中有数据时(非空)触发中断禁止
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_INTRXNotEmptyDis()
+* 功能说明: 当RX FIFO中有数据时(非空)触发中断禁止
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -410,10 +410,10 @@ void CAN_INTRXNotEmptyDis(CAN_TypeDef *CANx)
     CANx->IE &= ~(1 << CAN_IE_RXDA_Pos);
     CANx->IE &= ~(1 << CAN_IE_RXDA_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_INTTXBufEmptyEn()
-* 功能说明:	当TX Buffer空时触发中断使能
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_INTTXBufEmptyEn()
+* 功能说明: 当TX Buffer空时触发中断使能
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -422,10 +422,10 @@ void CAN_INTTXBufEmptyEn(CAN_TypeDef *CANx)
     CANx->IE |= (1 << CAN_IE_TXBR_Pos);
     CANx->IE |= (1 << CAN_IE_TXBR_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_INTTXBufEmptyDis()
-* 功能说明:	当TX Buffer空时触发中断禁止
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_INTTXBufEmptyDis()
+* 功能说明: 当TX Buffer空时触发中断禁止
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -434,10 +434,10 @@ void CAN_INTTXBufEmptyDis(CAN_TypeDef *CANx)
     CANx->IE &= ~(1 << CAN_IE_TXBR_Pos);
     CANx->IE &= ~(1 << CAN_IE_TXBR_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_INTErrWarningEn()
-* 功能说明:	TXERR/RXERR计数值达到Error Warning Limit时触发中断使能
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_INTErrWarningEn()
+* 功能说明: TXERR/RXERR计数值达到Error Warning Limit时触发中断使能
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -446,10 +446,10 @@ void CAN_INTErrWarningEn(CAN_TypeDef *CANx)
     CANx->IE |= (1 << CAN_IE_ERRWARN_Pos);
     CANx->IE |= (1 << CAN_IE_ERRWARN_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_INTErrWarningDis()
-* 功能说明:	TXERR/RXERR计数值达到Error Warning Limit时触发中断禁止
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_INTErrWarningDis()
+* 功能说明: TXERR/RXERR计数值达到Error Warning Limit时触发中断禁止
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -458,10 +458,10 @@ void CAN_INTErrWarningDis(CAN_TypeDef *CANx)
     CANx->IE &= ~(1 << CAN_IE_ERRWARN_Pos);
     CANx->IE &= ~(1 << CAN_IE_ERRWARN_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_INTRXOverflowEn()
-* 功能说明:	RX FIFO 溢出时触发中断使能
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_INTRXOverflowEn()
+* 功能说明: RX FIFO 溢出时触发中断使能
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -470,10 +470,10 @@ void CAN_INTRXOverflowEn(CAN_TypeDef *CANx)
     CANx->IE |= (1 << CAN_IE_RXOV_Pos);
     CANx->IE |= (1 << CAN_IE_RXOV_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_INTRXOverflowDis()
-* 功能说明:	RX FIFO 溢出时触发中断禁止
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_INTRXOverflowDis()
+* 功能说明: RX FIFO 溢出时触发中断禁止
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -482,10 +482,10 @@ void CAN_INTRXOverflowDis(CAN_TypeDef *CANx)
     CANx->IE &= ~(1 << CAN_IE_RXOV_Pos);
     CANx->IE &= ~(1 << CAN_IE_RXOV_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_INTRXOverflowClear()
-* 功能说明:	RX FIFO 溢出中断清除
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_INTRXOverflowClear()
+* 功能说明: RX FIFO 溢出中断清除
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -494,10 +494,10 @@ void CAN_INTRXOverflowClear(CAN_TypeDef *CANx)
     CANx->CMD = (1 << CAN_CMD_CLROV_Pos);
     CANx->CMD = (1 << CAN_CMD_CLROV_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_INTWakeupEn()
-* 功能说明:	唤醒事件触发中断使能
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_INTWakeupEn()
+* 功能说明: 唤醒事件触发中断使能
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -506,10 +506,10 @@ void CAN_INTWakeupEn(CAN_TypeDef *CANx)
     CANx->IE |= (1 << CAN_IE_WKUP_Pos);
     CANx->IE |= (1 << CAN_IE_WKUP_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_INTWakeupDis()
-* 功能说明:	唤醒事件触发中断禁止
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_INTWakeupDis()
+* 功能说明: 唤醒事件触发中断禁止
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -518,10 +518,10 @@ void CAN_INTWakeupDis(CAN_TypeDef *CANx)
     CANx->IE &= ~(1 << CAN_IE_WKUP_Pos);
     CANx->IE &= ~(1 << CAN_IE_WKUP_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_INTErrPassiveEn()
-* 功能说明:	TXERR/RXERR计数值达到127时中断使能
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_INTErrPassiveEn()
+* 功能说明: TXERR/RXERR计数值达到127时中断使能
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -530,10 +530,10 @@ void CAN_INTErrPassiveEn(CAN_TypeDef *CANx)
     CANx->IE |= (1 << CAN_IE_ERRPASS_Pos);
     CANx->IE |= (1 << CAN_IE_ERRPASS_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_INTErrPassiveDis()
-* 功能说明:	TXERR/RXERR计数值达到127时中断禁止
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_INTErrPassiveDis()
+* 功能说明: TXERR/RXERR计数值达到127时中断禁止
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -542,10 +542,10 @@ void CAN_INTErrPassiveDis(CAN_TypeDef *CANx)
     CANx->IE &= ~(1 << CAN_IE_ERRPASS_Pos);
     CANx->IE &= ~(1 << CAN_IE_ERRPASS_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_INTArbitrLostEn()
-* 功能说明:	仲裁失败中断使能
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_INTArbitrLostEn()
+* 功能说明: 仲裁失败中断使能
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -554,10 +554,10 @@ void CAN_INTArbitrLostEn(CAN_TypeDef *CANx)
     CANx->IE |= (1 << CAN_IE_ARBLOST_Pos);
     CANx->IE |= (1 << CAN_IE_ARBLOST_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_INTArbitrLostDis()
-* 功能说明:	仲裁失败中断禁止
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_INTArbitrLostDis()
+* 功能说明: 仲裁失败中断禁止
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -566,10 +566,10 @@ void CAN_INTArbitrLostDis(CAN_TypeDef *CANx)
     CANx->IE &= ~(1 << CAN_IE_ARBLOST_Pos);
     CANx->IE &= ~(1 << CAN_IE_ARBLOST_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_INTBusErrorEn()
-* 功能说明:	总线错误中断使能
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_INTBusErrorEn()
+* 功能说明: 总线错误中断使能
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -578,10 +578,10 @@ void CAN_INTBusErrorEn(CAN_TypeDef *CANx)
     CANx->IE |= (1 << CAN_IE_BUSERR_Pos);
     CANx->IE |= (1 << CAN_IE_BUSERR_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_INTBusErrorDis()
-* 功能说明:	总线错误中断禁止
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
+/******************************************************************************************************************************************
+* 函数名称: CAN_INTBusErrorDis()
+* 功能说明: 总线错误中断禁止
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -590,11 +590,11 @@ void CAN_INTBusErrorDis(CAN_TypeDef *CANx)
     CANx->IE &= ~(1 << CAN_IE_BUSERR_Pos);
     CANx->IE &= ~(1 << CAN_IE_BUSERR_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CAN_INTStat()
-* 功能说明:	查询中断状态
-* 输    入: CAN_TypeDef * CANx	指定要被设置的CAN接口,有效值包括CAN
-* 输    出: uint32_t			当前中断状态
+/******************************************************************************************************************************************
+* 函数名称: CAN_INTStat()
+* 功能说明: 查询中断状态
+* 输    入: CAN_TypeDef * CANx    指定要被设置的CAN接口,有效值包括CAN
+* 输    出: uint32_t          当前中断状态
 * 注意事项: CANx->IF读取清零,因此在中断ISR中只能读取一次,不能多次读取
 * 注意事项: CANx->IF读取清零,因此在中断ISR中只能读取一次,不能多次读取
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t CAN_INTStat(CAN_TypeDef *CANx)
 uint32_t CAN_INTStat(CAN_TypeDef *CANx)

+ 17 - 17
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_crc.c

@@ -1,18 +1,18 @@
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 文件名称: SWM320_crc.c
 * 文件名称: SWM320_crc.c
-* 功能说明:	SWM320单片机的CRC模块驱动库
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
-* 注意事项: 
-* 版本日期:	V1.1.0		2017年10月25日
-* 升级记录: 
+* 功能说明: SWM320单片机的CRC模块驱动库
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
+* 注意事项:
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
@@ -21,14 +21,14 @@
 #include "SWM320.h"
 #include "SWM320.h"
 #include "SWM320_crc.h"
 #include "SWM320_crc.h"
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CRC_Init()
-* 功能说明:	CRC 初始化
-* 输    入: CRC_TypeDef * CRCx	指定要被设置的CRC接口,有效值包括CRC
-*			uint32_t mode		工作模式,有效值有:CRC32_IN32、CRC32_IN16、CRC32_IN8、CRC16_IN16、CRC16_IN8
-*			uint32_t out_not	输出结果是否取反
-*			uint32_t out_rev	输出结果是否翻转
-*			uint32_t ini_val	CRC初始值
+/******************************************************************************************************************************************
+* 函数名称: CRC_Init()
+* 功能说明: CRC 初始化
+* 输    入: CRC_TypeDef * CRCx    指定要被设置的CRC接口,有效值包括CRC
+*           uint32_t mode       工作模式,有效值有:CRC32_IN32、CRC32_IN16、CRC32_IN8、CRC16_IN16、CRC16_IN8
+*           uint32_t out_not    输出结果是否取反
+*           uint32_t out_rev    输出结果是否翻转
+*           uint32_t ini_val    CRC初始值
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/

+ 8 - 8
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_crc.h

@@ -9,10 +9,10 @@
 
 
 void CRC_Init(CRC_TypeDef *CRCx, uint32_t mode, uint32_t out_not, uint32_t out_rev, uint32_t ini_val);
 void CRC_Init(CRC_TypeDef *CRCx, uint32_t mode, uint32_t out_not, uint32_t out_rev, uint32_t ini_val);
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CRC_Write()
-* 功能说明:	CRC写入数据
-* 输    入: uint32_t data		要写入的数据
+/******************************************************************************************************************************************
+* 函数名称: CRC_Write()
+* 功能说明: CRC写入数据
+* 输    入: uint32_t data     要写入的数据
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -21,11 +21,11 @@ static __INLINE void CRC_Write(uint32_t data)
     CRC->DATAIN = data;
     CRC->DATAIN = data;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	CRC_Result()
-* 功能说明:	获取CRC计算结果
+/******************************************************************************************************************************************
+* 函数名称: CRC_Result()
+* 功能说明: 获取CRC计算结果
 * 输    入: 无
 * 输    入: 无
-* 输    出: uint32_t			CRC 计算结果
+* 输    出: uint32_t          CRC 计算结果
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 static __INLINE uint32_t CRC_Result(void)
 static __INLINE uint32_t CRC_Result(void)

+ 37 - 37
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_dma.c

@@ -1,18 +1,18 @@
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 文件名称: SWM320_dma.c
 * 文件名称: SWM320_dma.c
-* 功能说明:	SWM320单片机的DMA功能驱动库
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
-* 注意事项: 
-* 版本日期:	V1.1.0		2017年10月25日
-* 升级记录:  
+* 功能说明: SWM320单片机的DMA功能驱动库
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
+* 注意事项:
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
@@ -21,16 +21,16 @@
 #include "SWM320.h"
 #include "SWM320.h"
 #include "SWM320_dma.h"
 #include "SWM320_dma.h"
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: DMA_CHM_Config()
 * 函数名称: DMA_CHM_Config()
-* 功能说明:	DMA通道配置,用于存储器间(如Flash和RAM间)搬运数据
-* 输    入: uint32_t chn			指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
-*			uint32_t src_addr		源地址,必须字对齐,即地址的最低2位必须是00
-*			uint32_t src_addr_incr	0 固定地址    1 地址递增
-*			uint32_t dst_addr		目的地址,必须字对齐,即地址的最低2位必须是00
-*			uint32_t dst_addr_incr	0 固定地址    1 地址递增
-*			uint32_t num_word		要搬运的数据字数,最大1024
-*			uint32_t int_en			中断使能,1 数据搬运完成后产生中断    0 数据搬运完成后不产生中断
+* 功能说明: DMA通道配置,用于存储器间(如Flash和RAM间)搬运数据
+* 输    入: uint32_t chn          指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
+*           uint32_t src_addr       源地址,必须字对齐,即地址的最低2位必须是00
+*           uint32_t src_addr_incr  0 固定地址    1 地址递增
+*           uint32_t dst_addr       目的地址,必须字对齐,即地址的最低2位必须是00
+*           uint32_t dst_addr_incr  0 固定地址    1 地址递增
+*           uint32_t num_word       要搬运的数据字数,最大1024
+*           uint32_t int_en         中断使能,1 数据搬运完成后产生中断    0 数据搬运完成后不产生中断
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 搬运数据量以字为单元,不是字节
 * 注意事项: 搬运数据量以字为单元,不是字节
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -67,10 +67,10 @@ void DMA_CHM_Config(uint32_t chn, uint32_t src_addr, uint32_t src_addr_incr, uin
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: DMA_CH_Open()
 * 函数名称: DMA_CH_Open()
-* 功能说明:	DMA通道打开
-* 输    入: uint32_t chn			指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
+* 功能说明: DMA通道打开
+* 输    入: uint32_t chn          指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -79,10 +79,10 @@ void DMA_CH_Open(uint32_t chn)
     DMA->CH[chn].CR |= (1 << DMA_CR_TXEN_Pos);
     DMA->CH[chn].CR |= (1 << DMA_CR_TXEN_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: DMA_CH_Close()
 * 函数名称: DMA_CH_Close()
-* 功能说明:	DMA通道关闭
-* 输    入: uint32_t chn			指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
+* 功能说明: DMA通道关闭
+* 输    入: uint32_t chn          指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -91,10 +91,10 @@ void DMA_CH_Close(uint32_t chn)
     DMA->CH[chn].CR &= ~(1 << DMA_CR_TXEN_Pos);
     DMA->CH[chn].CR &= ~(1 << DMA_CR_TXEN_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: DMA_CH_INTEn()
 * 函数名称: DMA_CH_INTEn()
-* 功能说明:	DMA中断使能,数据搬运完成后触发中断
-* 输    入: uint32_t chn			指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
+* 功能说明: DMA中断使能,数据搬运完成后触发中断
+* 输    入: uint32_t chn          指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -103,10 +103,10 @@ void DMA_CH_INTEn(uint32_t chn)
     DMA->IM &= ~(1 << chn);
     DMA->IM &= ~(1 << chn);
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: DMA_CH_INTDis()
 * 函数名称: DMA_CH_INTDis()
-* 功能说明:	DMA中断禁止,数据搬运完成后不触发中断
-* 输    入: uint32_t chn			指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
+* 功能说明: DMA中断禁止,数据搬运完成后不触发中断
+* 输    入: uint32_t chn          指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -115,10 +115,10 @@ void DMA_CH_INTDis(uint32_t chn)
     DMA->IM |= (1 << chn);
     DMA->IM |= (1 << chn);
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: DMA_CH_INTClr()
 * 函数名称: DMA_CH_INTClr()
-* 功能说明:	DMA中断标志清除
-* 输    入: uint32_t chn			指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
+* 功能说明: DMA中断标志清除
+* 输    入: uint32_t chn          指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -127,11 +127,11 @@ void DMA_CH_INTClr(uint32_t chn)
     DMA->IF = (1 << chn);
     DMA->IF = (1 << chn);
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: DMA_CH_INTStat()
 * 函数名称: DMA_CH_INTStat()
-* 功能说明:	DMA中断状态查询
-* 输    入: uint32_t chn			指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
-* 输    出: uint32_t				1 数据搬运完成    0 数据搬运未完成
+* 功能说明: DMA中断状态查询
+* 输    入: uint32_t chn          指定要配置的通道,有效值有DMA_CH0、DMA_CH1、DMA_CH2
+* 输    出: uint32_t              1 数据搬运完成    0 数据搬运未完成
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t DMA_CH_INTStat(uint32_t chn)
 uint32_t DMA_CH_INTStat(uint32_t chn)

+ 42 - 42
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_exti.c

@@ -1,34 +1,34 @@
-/****************************************************************************************************************************************** 
-* 文件名称:	SWM320_exti.c
-* 功能说明:	SWM320单片机的外部中断功能驱动库
+/******************************************************************************************************************************************
+* 文件名称: SWM320_exti.c
+* 功能说明: SWM320单片机的外部中断功能驱动库
 * 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
 * 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
 * 注意事项:
 * 注意事项:
-* 版本日期: V1.1.0		2017年10月25日
-* 升级记录:  
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
-* COPYRIGHT 2012 Synwit Technology 
+* COPYRIGHT 2012 Synwit Technology
 *******************************************************************************************************************************************/
 *******************************************************************************************************************************************/
 #include "SWM320.h"
 #include "SWM320.h"
 #include "SWM320_exti.h"
 #include "SWM320_exti.h"
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: EXTI_Init()
 * 函数名称: EXTI_Init()
-* 功能说明:	指定引脚外部中断初始化
-* 输    入: GPIO_TypeDef * GPIOx	指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
-*			uint32_t n 		   指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
-*			uint32_t mode	   有效值有EXTI_FALL_EDGE、EXTI_RISE_EDGE、EXTI_BOTH_EDGE、EXTI_LOW_LEVEL、EXTI_HIGH_LEVEL
+* 功能说明: 指定引脚外部中断初始化
+* 输    入: GPIO_TypeDef * GPIOx  指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
+*           uint32_t n         指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
+*           uint32_t mode      有效值有EXTI_FALL_EDGE、EXTI_RISE_EDGE、EXTI_BOTH_EDGE、EXTI_LOW_LEVEL、EXTI_HIGH_LEVEL
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 由于GPIOA、GPIOB、GPIOC、GPIOM的PIN0--7引脚即可以接入NVIC中的引脚中断(如GPIOA0_IRQn),也可以接入NVIC的组中断(GPIOA_IRQn),
 * 注意事项: 由于GPIOA、GPIOB、GPIOC、GPIOM的PIN0--7引脚即可以接入NVIC中的引脚中断(如GPIOA0_IRQn),也可以接入NVIC的组中断(GPIOA_IRQn),
-*			所以不在此函数中调用NVIC_EnableIRQ()使能NVIC中断,从而可以根据需要调用NVIC_EnableIRQ(GPIOA0_IRQn)和NVIC_EnableIRQ(GPIOA_IRQn)
+*           所以不在此函数中调用NVIC_EnableIRQ()使能NVIC中断,从而可以根据需要调用NVIC_EnableIRQ(GPIOA0_IRQn)和NVIC_EnableIRQ(GPIOA_IRQn)
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 void EXTI_Init(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t mode)
 void EXTI_Init(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t mode)
 {
 {
@@ -65,11 +65,11 @@ void EXTI_Init(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t mode)
     GPIOx->INTCLR = (1 << n); //清除掉因为模式配置可能产生的中断
     GPIOx->INTCLR = (1 << n); //清除掉因为模式配置可能产生的中断
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	EXTI_Open()
-* 功能说明:	指定引脚外部中断打开(即使能)
-* 输    入: GPIO_TypeDef * GPIOx	指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
-*			uint32_t n 		   指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
+/******************************************************************************************************************************************
+* 函数名称: EXTI_Open()
+* 功能说明: 指定引脚外部中断打开(即使能)
+* 输    入: GPIO_TypeDef * GPIOx  指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
+*           uint32_t n         指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -78,11 +78,11 @@ void EXTI_Open(GPIO_TypeDef *GPIOx, uint32_t n)
     GPIOx->INTEN |= (0x01 << n);
     GPIOx->INTEN |= (0x01 << n);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	EXTI_Close()
-* 功能说明:	指定引脚外部中断关闭(即禁能)
-* 输    入: GPIO_TypeDef * GPIOx	指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
-*			uint32_t n 		   指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
+/******************************************************************************************************************************************
+* 函数名称: EXTI_Close()
+* 功能说明: 指定引脚外部中断关闭(即禁能)
+* 输    入: GPIO_TypeDef * GPIOx  指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
+*           uint32_t n         指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -91,12 +91,12 @@ void EXTI_Close(GPIO_TypeDef *GPIOx, uint32_t n)
     GPIOx->INTEN &= ~(0x01 << n);
     GPIOx->INTEN &= ~(0x01 << n);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	EXTI_State()
-* 功能说明:	指定引脚是否触发了中断
-* 输    入: GPIO_TypeDef * GPIOx	指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
-*			uint32_t n 		   指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
-* 输    出: uint32_t	1 此引脚触发了中断    0 此引脚未触发中断
+/******************************************************************************************************************************************
+* 函数名称: EXTI_State()
+* 功能说明: 指定引脚是否触发了中断
+* 输    入: GPIO_TypeDef * GPIOx  指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
+*           uint32_t n         指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
+* 输    出: uint32_t  1 此引脚触发了中断    0 此引脚未触发中断
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t EXTI_State(GPIO_TypeDef *GPIOx, uint32_t n)
 uint32_t EXTI_State(GPIO_TypeDef *GPIOx, uint32_t n)
@@ -104,12 +104,12 @@ uint32_t EXTI_State(GPIO_TypeDef *GPIOx, uint32_t n)
     return (GPIOx->INTSTAT >> n) & 0x01;
     return (GPIOx->INTSTAT >> n) & 0x01;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	EXTI_RawState()
-* 功能说明:	指定引脚是否满足过/了中断触发条件,当此中断关闭时可通过调用此函数以查询的方式检测引脚上是否满足过/了中断触发条件
-* 输    入: GPIO_TypeDef * GPIOx	指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
-*			uint32_t n 		   指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
-* 输    出: uint32_t	1 此引脚满足过/了中断触发条件    0 此引脚未满足过/了中断触发条件
+/******************************************************************************************************************************************
+* 函数名称: EXTI_RawState()
+* 功能说明: 指定引脚是否满足过/了中断触发条件,当此中断关闭时可通过调用此函数以查询的方式检测引脚上是否满足过/了中断触发条件
+* 输    入: GPIO_TypeDef * GPIOx  指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
+*           uint32_t n         指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
+* 输    出: uint32_t  1 此引脚满足过/了中断触发条件    0 此引脚未满足过/了中断触发条件
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t EXTI_RawState(GPIO_TypeDef *GPIOx, uint32_t n)
 uint32_t EXTI_RawState(GPIO_TypeDef *GPIOx, uint32_t n)
@@ -117,11 +117,11 @@ uint32_t EXTI_RawState(GPIO_TypeDef *GPIOx, uint32_t n)
     return (GPIOx->INTRAWSTAT >> n) & 0x01;
     return (GPIOx->INTRAWSTAT >> n) & 0x01;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	EXTI_Clear()
-* 功能说明:	指定引脚外部中断清除(即清除中断标志,以免再次进入此中断)
-* 输    入: GPIO_TypeDef * GPIOx	指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
-*			uint32_t n 		   指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
+/******************************************************************************************************************************************
+* 函数名称: EXTI_Clear()
+* 功能说明: 指定引脚外部中断清除(即清除中断标志,以免再次进入此中断)
+* 输    入: GPIO_TypeDef * GPIOx  指定产生外部中断的GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
+*           uint32_t n         指定产生外部中断的GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 只能清除边沿触发中断的标志,电平触发中断的标志无法清除,只能在引脚电平不符合中断触发条件后硬件自动清除
 * 注意事项: 只能清除边沿触发中断的标志,电平触发中断的标志无法清除,只能在引脚电平不符合中断触发条件后硬件自动清除
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/

+ 21 - 21
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_flash.c

@@ -1,20 +1,20 @@
-/****************************************************************************************************************************************** 
-* 文件名称:	SWM320_flash.c
-* 功能说明:	使用芯片的IAP功能将片上Flash模拟成EEPROM来保存数据,掉电后不丢失
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
+/******************************************************************************************************************************************
+* 文件名称: SWM320_flash.c
+* 功能说明: 使用芯片的IAP功能将片上Flash模拟成EEPROM来保存数据,掉电后不丢失
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
 * 注意事项:
 * 注意事项:
-* 版本日期: V1.1.0		2017年10月25日
-* 升级记录: 
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
-* COPYRIGHT 2012 Synwit Technology  
+* COPYRIGHT 2012 Synwit Technology
 *******************************************************************************************************************************************/
 *******************************************************************************************************************************************/
 #include "SWM320.h"
 #include "SWM320.h"
 #include "SWM320_flash.h"
 #include "SWM320_flash.h"
@@ -24,10 +24,10 @@ IAP_Flash_Param_t IAP_Flash_Param = (IAP_Flash_Param_t)0x11000681;
 IAP_Flash_Erase_t IAP_Flash_Erase = (IAP_Flash_Erase_t)0x11000781;
 IAP_Flash_Erase_t IAP_Flash_Erase = (IAP_Flash_Erase_t)0x11000781;
 IAP_Flash_Write_t IAP_Flash_Write = (IAP_Flash_Write_t)0x11000801;
 IAP_Flash_Write_t IAP_Flash_Write = (IAP_Flash_Write_t)0x11000801;
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: FLASH_Erase()
 * 函数名称: FLASH_Erase()
-* 功能说明:	片内Flash擦除
-* 输    入: uint32_t addr			擦除地址,扇区大小为4K Byte
+* 功能说明: 片内Flash擦除
+* 输    入: uint32_t addr         擦除地址,扇区大小为4K Byte
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -42,12 +42,12 @@ void FLASH_Erase(uint32_t addr)
     __enable_irq();
     __enable_irq();
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: FLASH_Write()
 * 函数名称: FLASH_Write()
-* 功能说明:	片内Flash写入
-* 输    入: uint32_t addr			写入地址
-*			uint32_t buff[]			要写入的数据
-*			uint32_t count			要写入数据的个数,以字为单位,且必须是4的整数倍,即最少写入4个字
+* 功能说明: 片内Flash写入
+* 输    入: uint32_t addr         写入地址
+*           uint32_t buff[]         要写入的数据
+*           uint32_t count          要写入数据的个数,以字为单位,且必须是4的整数倍,即最少写入4个字
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 写入数据个数必须是4的整数倍,即最少写入4个字
 * 注意事项: 写入数据个数必须是4的整数倍,即最少写入4个字
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -62,10 +62,10 @@ void FLASH_Write(uint32_t addr, uint32_t buff[], uint32_t count)
     __enable_irq();
     __enable_irq();
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: Flash_Param_at_xMHz()
 * 函数名称: Flash_Param_at_xMHz()
-* 功能说明:	将Flash参数设置成xMHz主频下运行时所需的参数
-* 输    入: uint32_t x		可取值
+* 功能说明: 将Flash参数设置成xMHz主频下运行时所需的参数
+* 输    入: uint32_t x        可取值
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/

+ 81 - 81
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_gpio.c

@@ -1,34 +1,34 @@
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 文件名称: SWM320_gpio.c
 * 文件名称: SWM320_gpio.c
-* 功能说明:	SWM320单片机的通用输入输出功能驱动库
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
+* 功能说明: SWM320单片机的通用输入输出功能驱动库
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
 * 注意事项:
 * 注意事项:
-* 版本日期: V1.1.0		2017年10月25日
-* 升级记录: 
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
-* COPYRIGHT 2012 Synwit Technology 
+* COPYRIGHT 2012 Synwit Technology
 *******************************************************************************************************************************************/
 *******************************************************************************************************************************************/
 #include "SWM320.h"
 #include "SWM320.h"
 #include "SWM320_gpio.h"
 #include "SWM320_gpio.h"
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: GPIO_Init()
 * 函数名称: GPIO_Init()
-* 功能说明:	引脚初始化,包含引脚方向、上拉电阻、下拉电阻、开漏输出
-* 输    入: GPIO_TypeDef * GPIOx	    指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP	
-*			uint32_t n		       指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
-*			uint32_t dir	       引脚方向,0 输入        1 输出
-*			uint32_t pull_up	   上拉电阻,0 关闭上拉    1 开启上拉
-*			uint32_t pull_down	   下拉电阻,0 关闭下拉    1 开启下拉
+* 功能说明: 引脚初始化,包含引脚方向、上拉电阻、下拉电阻
+* 输    入: GPIO_TypeDef * GPIOx      指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
+*           uint32_t n             指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
+*           uint32_t dir           引脚方向,0 输入        1 输出
+*           uint32_t pull_up       上拉电阻,0 关闭上拉    1 开启上拉
+*           uint32_t pull_down     下拉电阻,0 关闭下拉    1 开启下拉
 * 输    出: 无
 * 输    出: 无
 * 注意事项: GPIOA、GPIOC、GPIOM、GPIOP只有上拉,GPIOB、GPION只有下拉(PN0、PN1、PN2三个引脚有上拉没下拉)
 * 注意事项: GPIOA、GPIOC、GPIOM、GPIOP只有上拉,GPIOB、GPION只有下拉(PN0、PN1、PN2三个引脚有上拉没下拉)
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -152,11 +152,11 @@ void GPIO_Init(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t dir, uint32_t pull_up,
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: GPIO_SetBit()
 * 函数名称: GPIO_SetBit()
-* 功能说明:	将参数指定的引脚电平置高
-* 输    入: GPIO_TypeDef * GPIOx	    指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP	
-*			uint32_t n		       指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
+* 功能说明: 将参数指定的引脚电平置高
+* 输    入: GPIO_TypeDef * GPIOx      指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
+*           uint32_t n             指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -165,11 +165,11 @@ void GPIO_SetBit(GPIO_TypeDef *GPIOx, uint32_t n)
     GPIOx->DATA |= (0x01 << n);
     GPIOx->DATA |= (0x01 << n);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	GPIO_ClrBit()
-* 功能说明:	将参数指定的引脚电平置低
-* 输    入: GPIO_TypeDef * GPIOx	    指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP	
-*			uint32_t n		       指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
+/******************************************************************************************************************************************
+* 函数名称: GPIO_ClrBit()
+* 功能说明: 将参数指定的引脚电平置低
+* 输    入: GPIO_TypeDef * GPIOx      指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
+*           uint32_t n             指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -178,11 +178,11 @@ void GPIO_ClrBit(GPIO_TypeDef *GPIOx, uint32_t n)
     GPIOx->DATA &= ~(0x01 << n);
     GPIOx->DATA &= ~(0x01 << n);
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: GPIO_InvBit()
 * 函数名称: GPIO_InvBit()
-* 功能说明:	将参数指定的引脚电平反转
-* 输    入: GPIO_TypeDef * GPIOx	    指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP	
-*			uint32_t n		       指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
+* 功能说明: 将参数指定的引脚电平反转
+* 输    入: GPIO_TypeDef * GPIOx      指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
+*           uint32_t n             指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -191,12 +191,12 @@ void GPIO_InvBit(GPIO_TypeDef *GPIOx, uint32_t n)
     GPIOx->DATA ^= (0x01 << n);
     GPIOx->DATA ^= (0x01 << n);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	GPIO_GetBit()
-* 功能说明:	读取参数指定的引脚的电平状态
-* 输    入: GPIO_TypeDef * GPIOx	    指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP	
-*			uint32_t n		       指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
-* 输    出: 参数指定的引脚的电平状态	0 低电平	1 高电平
+/******************************************************************************************************************************************
+* 函数名称: GPIO_GetBit()
+* 功能说明: 读取参数指定的引脚的电平状态
+* 输    入: GPIO_TypeDef * GPIOx      指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
+*           uint32_t n             指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
+* 输    出: 参数指定的引脚的电平状态  0 低电平   1 高电平
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t GPIO_GetBit(GPIO_TypeDef *GPIOx, uint32_t n)
 uint32_t GPIO_GetBit(GPIO_TypeDef *GPIOx, uint32_t n)
@@ -204,12 +204,12 @@ uint32_t GPIO_GetBit(GPIO_TypeDef *GPIOx, uint32_t n)
     return ((GPIOx->DATA >> n) & 0x01);
     return ((GPIOx->DATA >> n) & 0x01);
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: GPIO_SetBits()
 * 函数名称: GPIO_SetBits()
 * 功能说明: 将参数指定的从n开始的w位连续引脚的电平置高
 * 功能说明: 将参数指定的从n开始的w位连续引脚的电平置高
-* 输    入: GPIO_TypeDef * GPIOx	    指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP	
-*			uint32_t n		       指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
-*			uint32_t w			   指定要将引脚电平置高的引脚的个数
+* 输    入: GPIO_TypeDef * GPIOx      指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
+*           uint32_t n             指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
+*           uint32_t w             指定要将引脚电平置高的引脚的个数
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -222,12 +222,12 @@ void GPIO_SetBits(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t w)
     GPIOx->DATA |= (bits << n);
     GPIOx->DATA |= (bits << n);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	GPIO_ClrBits()
+/******************************************************************************************************************************************
+* 函数名称: GPIO_ClrBits()
 * 功能说明: 将参数指定的从n开始的w位连续引脚的电平置低
 * 功能说明: 将参数指定的从n开始的w位连续引脚的电平置低
-* 输    入: GPIO_TypeDef * GPIOx	    指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP	
-*			uint32_t n		       指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
-*			uint32_t w			   指定要将引脚电平置低的引脚的个数
+* 输    入: GPIO_TypeDef * GPIOx      指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
+*           uint32_t n             指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
+*           uint32_t w             指定要将引脚电平置低的引脚的个数
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -240,12 +240,12 @@ void GPIO_ClrBits(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t w)
     GPIOx->DATA &= ~(bits << n);
     GPIOx->DATA &= ~(bits << n);
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: GPIO_InvBits()
 * 函数名称: GPIO_InvBits()
 * 功能说明: 将参数指定的从n开始的w位连续引脚的电平反转
 * 功能说明: 将参数指定的从n开始的w位连续引脚的电平反转
-* 输    入: GPIO_TypeDef * GPIOx	    指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP	
-*			uint32_t n		       指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
-*			uint32_t w			   指定要将引脚电平反转的引脚的个数
+* 输    入: GPIO_TypeDef * GPIOx      指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
+*           uint32_t n             指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
+*           uint32_t w             指定要将引脚电平反转的引脚的个数
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -258,14 +258,14 @@ void GPIO_InvBits(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t w)
     GPIOx->DATA ^= (bits << n);
     GPIOx->DATA ^= (bits << n);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	GPIO_GetBits()
+/******************************************************************************************************************************************
+* 函数名称: GPIO_GetBits()
 * 功能说明: 读取参数指定的从n开始的w位连续引脚的电平状态
 * 功能说明: 读取参数指定的从n开始的w位连续引脚的电平状态
-* 输    入: GPIO_TypeDef * GPIOx	    指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP	
-*			uint32_t n		       指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
-*			uint32_t w			   指定要将引脚电平置高的引脚的个数
-* 输    出: 参数指定的从n开始的w位连续引脚的电平状态	0 低电平	1 高电平
-*			返回值的第0位表示引脚n的电平状态、返回值的第1位表示引脚n+1的电平状态... ...返回值的第w位表示引脚n+w的电平状态
+* 输    入: GPIO_TypeDef * GPIOx      指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOM、GPION、GPIOP
+*           uint32_t n             指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
+*           uint32_t w             指定要将引脚电平置高的引脚的个数
+* 输    出: 参数指定的从n开始的w位连续引脚的电平状态 0 低电平   1 高电平
+*           返回值的第0位表示引脚n的电平状态、返回值的第1位表示引脚n+1的电平状态... ...返回值的第w位表示引脚n+w的电平状态
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t GPIO_GetBits(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t w)
 uint32_t GPIO_GetBits(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t w)
@@ -277,11 +277,11 @@ uint32_t GPIO_GetBits(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t w)
     return ((GPIOx->DATA >> n) & bits);
     return ((GPIOx->DATA >> n) & bits);
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: GPIO_AtomicSetBit()
 * 函数名称: GPIO_AtomicSetBit()
-* 功能说明:	将参数指定的引脚电平置高,确保引脚”读-改-写“操作的原子性(不被中断ISR打断)
-* 输    入: GPIO_TypeDef * GPIOx	    指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOD	
-*			uint32_t n		       指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
+* 功能说明: 将参数指定的引脚电平置高,确保引脚”读-改-写“操作的原子性(不被中断ISR打断)
+* 输    入: GPIO_TypeDef * GPIOx      指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOD
+*           uint32_t n             指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 当GPIOx的16个引脚中,有些在主循环中操作,有些在中断ISR中操作时,GPIOx的引脚必须都用GPIO_Atomic类型函数操作
 * 注意事项: 当GPIOx的16个引脚中,有些在主循环中操作,有些在中断ISR中操作时,GPIOx的引脚必须都用GPIO_Atomic类型函数操作
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -290,11 +290,11 @@ void GPIO_AtomicSetBit(GPIO_TypeDef *GPIOx, uint32_t n)
     *((volatile uint32_t *)(0x42000000 + ((uint32_t)&GPIOx->DATA - 0x40000000) * 32 + n * 4)) = 1;
     *((volatile uint32_t *)(0x42000000 + ((uint32_t)&GPIOx->DATA - 0x40000000) * 32 + n * 4)) = 1;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	GPIO_AtomicClrBit()
-* 功能说明:	将参数指定的引脚电平置低,确保引脚”读-改-写“操作的原子性(不被中断ISR打断)
-* 输    入: GPIO_TypeDef * GPIOx	    指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOD	
-*			uint32_t n		       指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
+/******************************************************************************************************************************************
+* 函数名称: GPIO_AtomicClrBit()
+* 功能说明: 将参数指定的引脚电平置低,确保引脚”读-改-写“操作的原子性(不被中断ISR打断)
+* 输    入: GPIO_TypeDef * GPIOx      指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOD
+*           uint32_t n             指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 当GPIOx的16个引脚中,有些在主循环中操作,有些在中断ISR中操作时,GPIOx的引脚必须都用GPIO_Atomic类型函数操作
 * 注意事项: 当GPIOx的16个引脚中,有些在主循环中操作,有些在中断ISR中操作时,GPIOx的引脚必须都用GPIO_Atomic类型函数操作
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -303,11 +303,11 @@ void GPIO_AtomicClrBit(GPIO_TypeDef *GPIOx, uint32_t n)
     *((volatile uint32_t *)(0x42000000 + ((uint32_t)&GPIOx->DATA - 0x40000000) * 32 + n * 4)) = 0;
     *((volatile uint32_t *)(0x42000000 + ((uint32_t)&GPIOx->DATA - 0x40000000) * 32 + n * 4)) = 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: GPIO_AtomicInvBit()
 * 函数名称: GPIO_AtomicInvBit()
-* 功能说明:	将参数指定的引脚电平反转,确保引脚”读-改-写“操作的原子性(不被中断ISR打断)
-* 输    入: GPIO_TypeDef * GPIOx	    指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOD	
-*			uint32_t n		       指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
+* 功能说明: 将参数指定的引脚电平反转,确保引脚”读-改-写“操作的原子性(不被中断ISR打断)
+* 输    入: GPIO_TypeDef * GPIOx      指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOD
+*           uint32_t n             指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 当GPIOx的16个引脚中,有些在主循环中操作,有些在中断ISR中操作时,GPIOx的引脚必须都用GPIO_Atomic类型函数操作
 * 注意事项: 当GPIOx的16个引脚中,有些在主循环中操作,有些在中断ISR中操作时,GPIOx的引脚必须都用GPIO_Atomic类型函数操作
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -316,12 +316,12 @@ void GPIO_AtomicInvBit(GPIO_TypeDef *GPIOx, uint32_t n)
     *((volatile uint32_t *)(0x42000000 + ((uint32_t)&GPIOx->DATA - 0x40000000) * 32 + n * 4)) = 1 - *((volatile uint32_t *)(0x42000000 + ((uint32_t)&GPIOx->DATA - 0x40000000) * 32 + n * 4));
     *((volatile uint32_t *)(0x42000000 + ((uint32_t)&GPIOx->DATA - 0x40000000) * 32 + n * 4)) = 1 - *((volatile uint32_t *)(0x42000000 + ((uint32_t)&GPIOx->DATA - 0x40000000) * 32 + n * 4));
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: GPIO_AtomicSetBits()
 * 函数名称: GPIO_AtomicSetBits()
 * 功能说明: 将参数指定的从n开始的w位连续引脚的电平置高,确保引脚”读-改-写“操作的原子性(不被中断ISR打断)
 * 功能说明: 将参数指定的从n开始的w位连续引脚的电平置高,确保引脚”读-改-写“操作的原子性(不被中断ISR打断)
-* 输    入: GPIO_TypeDef * GPIOx	    指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOD	
-*			uint32_t n		       指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
-*			uint32_t w		指定要将引脚电平置高的引脚的个数
+* 输    入: GPIO_TypeDef * GPIOx      指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOD
+*           uint32_t n             指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
+*           uint32_t w      指定要将引脚电平置高的引脚的个数
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 当GPIOx的16个引脚中,有些在主循环中操作,有些在中断ISR中操作时,GPIOx的引脚必须都用GPIO_Atomic类型函数操作
 * 注意事项: 当GPIOx的16个引脚中,有些在主循环中操作,有些在中断ISR中操作时,GPIOx的引脚必须都用GPIO_Atomic类型函数操作
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -336,12 +336,12 @@ void GPIO_AtomicSetBits(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t w)
     __enable_irq();
     __enable_irq();
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	GPIO_AtomicClrBits()
+/******************************************************************************************************************************************
+* 函数名称: GPIO_AtomicClrBits()
 * 功能说明: 将参数指定的从n开始的w位连续引脚的电平置低,确保引脚”读-改-写“操作的原子性(不被中断ISR打断)
 * 功能说明: 将参数指定的从n开始的w位连续引脚的电平置低,确保引脚”读-改-写“操作的原子性(不被中断ISR打断)
-* 输    入: GPIO_TypeDef * GPIOx	    指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOD	
-*			uint32_t n		       指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
-*			uint32_t w			   指定要将引脚电平置低的引脚的个数
+* 输    入: GPIO_TypeDef * GPIOx      指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOD
+*           uint32_t n             指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
+*           uint32_t w             指定要将引脚电平置低的引脚的个数
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 当GPIOx的16个引脚中,有些在主循环中操作,有些在中断ISR中操作时,GPIOx的引脚必须都用GPIO_Atomic类型函数操作
 * 注意事项: 当GPIOx的16个引脚中,有些在主循环中操作,有些在中断ISR中操作时,GPIOx的引脚必须都用GPIO_Atomic类型函数操作
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -356,12 +356,12 @@ void GPIO_AtomicClrBits(GPIO_TypeDef *GPIOx, uint32_t n, uint32_t w)
     __enable_irq();
     __enable_irq();
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: GPIO_AtomicInvBits()
 * 函数名称: GPIO_AtomicInvBits()
 * 功能说明: 将参数指定的从n开始的w位连续引脚的电平反转,确保引脚”读-改-写“操作的原子性(不被中断ISR打断)
 * 功能说明: 将参数指定的从n开始的w位连续引脚的电平反转,确保引脚”读-改-写“操作的原子性(不被中断ISR打断)
-* 输    入: GPIO_TypeDef * GPIOx	    指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOD	
-*			uint32_t n		       指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
-*			uint32_t w			   指定要将引脚电平反转的引脚的个数
+* 输    入: GPIO_TypeDef * GPIOx      指定GPIO端口,有效值包括GPIOA、GPIOB、GPIOC、GPIOD
+*           uint32_t n             指定GPIO引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN14、PIN15
+*           uint32_t w             指定要将引脚电平反转的引脚的个数
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 当GPIOx的16个引脚中,有些在主循环中操作,有些在中断ISR中操作时,GPIOx的引脚必须都用GPIO_Atomic类型函数操作
 * 注意事项: 当GPIOx的16个引脚中,有些在主循环中操作,有些在中断ISR中操作时,GPIOx的引脚必须都用GPIO_Atomic类型函数操作
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/

+ 44 - 44
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_i2c.c

@@ -1,18 +1,18 @@
-/****************************************************************************************************************************************** 
-* 文件名称:	SWM320_i2c.c
-* 功能说明:	SWM320单片机的I2C串行接口功能驱动库
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
+/******************************************************************************************************************************************
+* 文件名称: SWM320_i2c.c
+* 功能说明: SWM320单片机的I2C串行接口功能驱动库
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
 * 注意事项:
 * 注意事项:
-* 版本日期:	V1.1.0		2017年10月25日
-* 升级记录:  
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIES AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIEE. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIES ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIES AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIEE. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIES ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
@@ -21,11 +21,11 @@
 #include "SWM320.h"
 #include "SWM320.h"
 #include "SWM320_i2c.h"
 #include "SWM320_i2c.h"
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	I2C_Init()
-* 功能说明:	I2C初始化
-* 输    入: I2C_TypeDef * I2Cx		指定要被设置的I2C,有效值包括I2C0、I2C1
-*			I2C_InitStructure * initStruct	包含I2C相关设定值的结构体
+/******************************************************************************************************************************************
+* 函数名称: I2C_Init()
+* 功能说明: I2C初始化
+* 输    入: I2C_TypeDef * I2Cx        指定要被设置的I2C,有效值包括I2C0、I2C1
+*           I2C_InitStructure * initStruct  包含I2C相关设定值的结构体
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 模块只能工作于主机模式
 * 注意事项: 模块只能工作于主机模式
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -125,10 +125,10 @@ void I2C_Init(I2C_TypeDef *I2Cx, I2C_InitStructure *initStruct)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	I2C_Open()
-* 功能说明:	I2C打开,允许收发
-* 输    入: I2C_TypeDef * I2Cx		指定要被设置的I2C,有效值包括I2C0、I2C1
+/******************************************************************************************************************************************
+* 函数名称: I2C_Open()
+* 功能说明: I2C打开,允许收发
+* 输    入: I2C_TypeDef * I2Cx        指定要被设置的I2C,有效值包括I2C0、I2C1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -137,10 +137,10 @@ void I2C_Open(I2C_TypeDef *I2Cx)
     I2Cx->CTRL |= (0x01 << I2C_CTRL_EN_Pos);
     I2Cx->CTRL |= (0x01 << I2C_CTRL_EN_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	I2C_Close()
-* 功能说明:	I2C关闭,禁止收发
-* 输    入: I2C_TypeDef * I2Cx		指定要被设置的I2C,有效值包括I2C0、I2C1
+/******************************************************************************************************************************************
+* 函数名称: I2C_Close()
+* 功能说明: I2C关闭,禁止收发
+* 输    入: I2C_TypeDef * I2Cx        指定要被设置的I2C,有效值包括I2C0、I2C1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -149,12 +149,12 @@ void I2C_Close(I2C_TypeDef *I2Cx)
     I2Cx->CTRL &= ~I2C_CTRL_EN_Msk;
     I2Cx->CTRL &= ~I2C_CTRL_EN_Msk;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	I2C_Start()
-* 功能说明:	产生起始信号并发送设备地址
-* 输    入: I2C_TypeDef * I2Cx		指定要被设置的I2C,有效值包括I2C0、I2C1
-*			uint8_t addr			设备地址
-* 输    出: uint8_t					1 接收到ACK   0 接收到NACK
+/******************************************************************************************************************************************
+* 函数名称: I2C_Start()
+* 功能说明: 产生起始信号并发送设备地址
+* 输    入: I2C_TypeDef * I2Cx        指定要被设置的I2C,有效值包括I2C0、I2C1
+*           uint8_t addr            设备地址
+* 输    出: uint8_t                   1 接收到ACK   0 接收到NACK
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint8_t I2C_Start(I2C_TypeDef *I2Cx, uint8_t addr)
 uint8_t I2C_Start(I2C_TypeDef *I2Cx, uint8_t addr)
@@ -168,10 +168,10 @@ uint8_t I2C_Start(I2C_TypeDef *I2Cx, uint8_t addr)
     return (I2Cx->MSTCMD & I2C_MSTCMD_RXACK_Msk) ? 0 : 1;
     return (I2Cx->MSTCMD & I2C_MSTCMD_RXACK_Msk) ? 0 : 1;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	I2C_Stop()
-* 功能说明:	产生停止信号
-* 输    入: I2C_TypeDef * I2Cx		指定要被设置的I2C,有效值包括I2C0、I2C1
+/******************************************************************************************************************************************
+* 函数名称: I2C_Stop()
+* 功能说明: 产生停止信号
+* 输    入: I2C_TypeDef * I2Cx        指定要被设置的I2C,有效值包括I2C0、I2C1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -182,12 +182,12 @@ void I2C_Stop(I2C_TypeDef *I2Cx)
         __NOP(); //等待发送完成
         __NOP(); //等待发送完成
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	I2C_Write()
-* 功能说明:	写入一个数据
-* 输    入: I2C_TypeDef * I2Cx		指定要被设置的I2C,有效值包括I2C0、I2C1
-*			uint8_t data			要写的数据
-* 输    出: uint8_t					1 接收到ACK   0 接收到NACK
+/******************************************************************************************************************************************
+* 函数名称: I2C_Write()
+* 功能说明: 写入一个数据
+* 输    入: I2C_TypeDef * I2Cx        指定要被设置的I2C,有效值包括I2C0、I2C1
+*           uint8_t data            要写的数据
+* 输    出: uint8_t                   1 接收到ACK   0 接收到NACK
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint8_t I2C_Write(I2C_TypeDef *I2Cx, uint8_t data)
 uint8_t I2C_Write(I2C_TypeDef *I2Cx, uint8_t data)
@@ -200,12 +200,12 @@ uint8_t I2C_Write(I2C_TypeDef *I2Cx, uint8_t data)
     return (I2Cx->MSTCMD & I2C_MSTCMD_RXACK_Msk) ? 0 : 1;
     return (I2Cx->MSTCMD & I2C_MSTCMD_RXACK_Msk) ? 0 : 1;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	I2C_Read()
-* 功能说明:	读取一个数据
-* 输    入: I2C_TypeDef * I2Cx		指定要被设置的I2C,有效值包括I2C0、I2C1
-*			uint8_t ack				1 发送ACK   0 发送NACK
-* 输    出: uint8_t					读取到的数据
+/******************************************************************************************************************************************
+* 函数名称: I2C_Read()
+* 功能说明: 读取一个数据
+* 输    入: I2C_TypeDef * I2Cx        指定要被设置的I2C,有效值包括I2C0、I2C1
+*           uint8_t ack             1 发送ACK   0 发送NACK
+* 输    出: uint8_t                   读取到的数据
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint8_t I2C_Read(I2C_TypeDef *I2Cx, uint8_t ack)
 uint8_t I2C_Read(I2C_TypeDef *I2Cx, uint8_t ack)

+ 34 - 34
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_lcd.c

@@ -1,18 +1,18 @@
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 文件名称: SWM320_lcd.c
 * 文件名称: SWM320_lcd.c
-* 功能说明:	SWM320单片机的LCD功能驱动库
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
-* 注意事项: 
-* 版本日期:	V1.1.0		2017年10月25日
-* 升级记录:  
+* 功能说明: SWM320单片机的LCD功能驱动库
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
+* 注意事项:
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
@@ -23,11 +23,11 @@
 
 
 #include <string.h>
 #include <string.h>
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	LCD_Init()
-* 功能说明:	LCD初始化
-* 输    入: LCD_TypeDef * LCDx	指定要被设置的LCD,有效值包括LCD
-*			LCD_InitStructure * initStruct    包含LCD相关设定值的结构体
+/******************************************************************************************************************************************
+* 函数名称: LCD_Init()
+* 功能说明: LCD初始化
+* 输    入: LCD_TypeDef * LCDx    指定要被设置的LCD,有效值包括LCD
+*           LCD_InitStructure * initStruct    包含LCD相关设定值的结构体
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -74,10 +74,10 @@ void LCD_Init(LCD_TypeDef *LCDx, LCD_InitStructure *initStruct)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: LCD_Start()
 * 函数名称: LCD_Start()
-* 功能说明:	启动一次数据传输
-* 输    入: LCD_TypeDef * LCDx	指定要被设置的LCD,有效值包括LCD
+* 功能说明: 启动一次数据传输
+* 输    入: LCD_TypeDef * LCDx    指定要被设置的LCD,有效值包括LCD
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -86,11 +86,11 @@ void LCD_Start(LCD_TypeDef *LCDx)
     LCDx->START |= (1 << LCD_START_GO_Pos) | (1 << LCD_START_BURST_Pos);
     LCDx->START |= (1 << LCD_START_GO_Pos) | (1 << LCD_START_BURST_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: LCD_IsBusy()
 * 函数名称: LCD_IsBusy()
-* 功能说明:	是否正在进行数据传输
-* 输    入: LCD_TypeDef * LCDx	指定要被设置的LCD,有效值包括LCD
-* 输    出: uint32_t			1 正在传输数据    0 数据传输已完成
+* 功能说明: 是否正在进行数据传输
+* 输    入: LCD_TypeDef * LCDx    指定要被设置的LCD,有效值包括LCD
+* 输    出: uint32_t          1 正在传输数据    0 数据传输已完成
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t LCD_IsBusy(LCD_TypeDef *LCDx)
 uint32_t LCD_IsBusy(LCD_TypeDef *LCDx)
@@ -98,10 +98,10 @@ uint32_t LCD_IsBusy(LCD_TypeDef *LCDx)
     return (LCDx->START & LCD_START_GO_Msk) ? 1 : 0;
     return (LCDx->START & LCD_START_GO_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: LCD_INTEn()
 * 函数名称: LCD_INTEn()
-* 功能说明:	LCD中断使能,完成指定长度的数据传输时触发中断
-* 输    入: LCD_TypeDef * LCDx	指定要被设置的LCD,有效值包括LCD
+* 功能说明: LCD中断使能,完成指定长度的数据传输时触发中断
+* 输    入: LCD_TypeDef * LCDx    指定要被设置的LCD,有效值包括LCD
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -110,10 +110,10 @@ void LCD_INTEn(LCD_TypeDef *LCDx)
     LCDx->IM = 0;
     LCDx->IM = 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: LCD_INTDis()
 * 函数名称: LCD_INTDis()
-* 功能说明:	LCD中断禁止,完成指定长度的数据传输时不触发中断
-* 输    入: LCD_TypeDef * LCDx	指定要被设置的LCD,有效值包括LCD
+* 功能说明: LCD中断禁止,完成指定长度的数据传输时不触发中断
+* 输    入: LCD_TypeDef * LCDx    指定要被设置的LCD,有效值包括LCD
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -122,10 +122,10 @@ void LCD_INTDis(LCD_TypeDef *LCDx)
     LCDx->IM = 1;
     LCDx->IM = 1;
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: LCD_INTClr()
 * 函数名称: LCD_INTClr()
-* 功能说明:	LCD中断标志清除
-* 输    入: LCD_TypeDef * LCDx	指定要被设置的LCD,有效值包括LCD
+* 功能说明: LCD中断标志清除
+* 输    入: LCD_TypeDef * LCDx    指定要被设置的LCD,有效值包括LCD
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -134,11 +134,11 @@ void LCD_INTClr(LCD_TypeDef *LCDx)
     LCDx->IF = 1;
     LCDx->IF = 1;
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: LCD_INTStat()
 * 函数名称: LCD_INTStat()
-* 功能说明:	LCD中断状态查询
-* 输    入: LCD_TypeDef * LCDx	指定要被设置的LCD,有效值包括LCD
-* 输    出: uint32_t			1 完成指定长度的数据传输    0 未完成指定长度的数据传输
+* 功能说明: LCD中断状态查询
+* 输    入: LCD_TypeDef * LCDx    指定要被设置的LCD,有效值包括LCD
+* 输    出: uint32_t          1 完成指定长度的数据传输    0 未完成指定长度的数据传输
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t LCD_INTStat(LCD_TypeDef *LCDx)
 uint32_t LCD_INTStat(LCD_TypeDef *LCDx)

+ 37 - 37
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_norflash.c

@@ -1,29 +1,29 @@
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 文件名称: SWM320_norflash.c
 * 文件名称: SWM320_norflash.c
-* 功能说明:	SWM320单片机的NOR Flash驱动程序
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
+* 功能说明: SWM320单片机的NOR Flash驱动程序
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
 * 注意事项:
 * 注意事项:
-* 版本日期: V1.1.0		2017年10月25日
-* 升级记录: 
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
-* COPYRIGHT 2012 Synwit Technology 
+* COPYRIGHT 2012 Synwit Technology
 *******************************************************************************************************************************************/
 *******************************************************************************************************************************************/
 #include "SWM320.h"
 #include "SWM320.h"
 #include "SWM320_norflash.h"
 #include "SWM320_norflash.h"
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	NORFL_Init()
-* 功能说明:	NOR Flash控制器初始化
+/******************************************************************************************************************************************
+* 函数名称: NORFL_Init()
+* 功能说明: NOR Flash控制器初始化
 * 输    入: NORFL_InitStructure * initStruct    包含NOR Flash控制器相关设定值的结构体
 * 输    入: NORFL_InitStructure * initStruct    包含NOR Flash控制器相关设定值的结构体
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
@@ -64,11 +64,11 @@ void NORFL_Init(NORFL_InitStructure *initStruct)
         NORFLC->IM |= (1 << NORFLC_IM_TIMEOUT_Pos);
         NORFLC->IM |= (1 << NORFLC_IM_TIMEOUT_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	NORFL_ChipErase()
-* 功能说明:	NOR Flash整片擦除
+/******************************************************************************************************************************************
+* 函数名称: NORFL_ChipErase()
+* 功能说明: NOR Flash整片擦除
 * 输    入: 无
 * 输    入: 无
-* 输    出: uint32_t			0 擦除成功    1 擦除超时
+* 输    出: uint32_t          0 擦除成功    1 擦除超时
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t NORFL_ChipErase(void)
 uint32_t NORFL_ChipErase(void)
@@ -91,11 +91,11 @@ uint32_t NORFL_ChipErase(void)
     return res;
     return res;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	NORFL_SectorErase()
-* 功能说明:	NOR Flash扇区擦除
-* 输    入: uint32_t addr		要擦除扇区的起始地址
-* 输    出: uint32_t			0 擦除成功    1 擦除超时
+/******************************************************************************************************************************************
+* 函数名称: NORFL_SectorErase()
+* 功能说明: NOR Flash扇区擦除
+* 输    入: uint32_t addr     要擦除扇区的起始地址
+* 输    出: uint32_t          0 擦除成功    1 擦除超时
 * 注意事项: MX29LV128DB 前8扇区为8K、后255扇区为64K    MX29LV128DT 前255扇区为64K、后8扇区为8K
 * 注意事项: MX29LV128DB 前8扇区为8K、后255扇区为64K    MX29LV128DT 前255扇区为64K、后8扇区为8K
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t NORFL_SectorErase(uint32_t addr)
 uint32_t NORFL_SectorErase(uint32_t addr)
@@ -119,12 +119,12 @@ uint32_t NORFL_SectorErase(uint32_t addr)
     return res;
     return res;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	NORFL_Write()
-* 功能说明:	NOR Flash写
-* 输    入: uint32_t addr		数据要写入的地址
-*			uint32_t data		要写入的数据
-* 输    出: uint32_t			0 写入成功    1 写入超时
+/******************************************************************************************************************************************
+* 函数名称: NORFL_Write()
+* 功能说明: NOR Flash写
+* 输    入: uint32_t addr     数据要写入的地址
+*           uint32_t data       要写入的数据
+* 输    出: uint32_t          0 写入成功    1 写入超时
 * 注意事项: 硬件连接,数据线为16位时,半字写入;数据线为8位时,字节写入
 * 注意事项: 硬件连接,数据线为16位时,半字写入;数据线为8位时,字节写入
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t NORFL_Write(uint32_t addr, uint32_t data)
 uint32_t NORFL_Write(uint32_t addr, uint32_t data)
@@ -148,11 +148,11 @@ uint32_t NORFL_Write(uint32_t addr, uint32_t data)
     return res;
     return res;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	NORFL_Read()
-* 功能说明:	NOR Flash读
-* 输    入: uint32_t addr		数据要读出的地址
-* 输    出: uint32_t			读出的数据
+/******************************************************************************************************************************************
+* 函数名称: NORFL_Read()
+* 功能说明: NOR Flash读
+* 输    入: uint32_t addr     数据要读出的地址
+* 输    出: uint32_t          读出的数据
 * 注意事项: 硬件连接,数据线为16位时,半字读出;数据线为8位时,字节读出
 * 注意事项: 硬件连接,数据线为16位时,半字读出;数据线为8位时,字节读出
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t NORFL_Read(uint32_t addr)
 uint32_t NORFL_Read(uint32_t addr)
@@ -163,11 +163,11 @@ uint32_t NORFL_Read(uint32_t addr)
     return (NORFLC->CMD & NORFLC_CMD_DATA_Msk);
     return (NORFLC->CMD & NORFLC_CMD_DATA_Msk);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	NORFL_ReadID()
-* 功能说明:	NOR Flash读ID
-* 输    入: uint32_t id_addr	ID地址,此参数是芯片相关的,每种芯片都不同
-* 输    出: uint16_t			读取到的ID
+/******************************************************************************************************************************************
+* 函数名称: NORFL_ReadID()
+* 功能说明: NOR Flash读ID
+* 输    入: uint32_t id_addr  ID地址,此参数是芯片相关的,每种芯片都不同
+* 输    出: uint16_t          读取到的ID
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint16_t NORFL_ReadID(uint32_t id_addr)
 uint16_t NORFL_ReadID(uint32_t id_addr)

+ 2 - 2
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_norflash.h

@@ -20,8 +20,8 @@ uint32_t NORFL_Read(uint32_t addr);
 uint16_t NORFL_ReadID(uint32_t id_addr);
 uint16_t NORFL_ReadID(uint32_t id_addr);
 
 
 /* 当前版本总线读只支持字读
 /* 当前版本总线读只支持字读
-#define NORFL_Read8(addr)			*((volatile uint8_t  *)(NORFLM_BASE + addr))
-#define NORFL_Read16(addr)			*((volatile uint16_t *)(NORFLM_BASE + addr))    */
+#define NORFL_Read8(addr)   *((volatile uint8_t  *)(NORFLM_BASE + addr))
+#define NORFL_Read16(addr)  *((volatile uint16_t *)(NORFLM_BASE + addr))    */
 #define NORFL_Read32(addr) *((volatile uint32_t *)(NORFLM_BASE + addr))
 #define NORFL_Read32(addr) *((volatile uint32_t *)(NORFLM_BASE + addr))
 
 
 #define NORFL_CMD_READ 0
 #define NORFL_CMD_READ 0

+ 16 - 16
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_port.c

@@ -1,36 +1,36 @@
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 文件名称: SWM320_port.c
 * 文件名称: SWM320_port.c
-* 功能说明:	SWM320单片机的端口引脚功能选择库函数
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
+* 功能说明: SWM320单片机的端口引脚功能选择库函数
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
 * 注意事项:
 * 注意事项:
-* 版本日期: V1.1.0		2017年10月25日
-* 升级记录: 
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
-* COPYRIGHT 2012 Synwit Technology 
+* COPYRIGHT 2012 Synwit Technology
 *******************************************************************************************************************************************/
 *******************************************************************************************************************************************/
 #include "SWM320.h"
 #include "SWM320.h"
 #include "SWM320_port.h"
 #include "SWM320_port.h"
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: PORT_Init()
 * 函数名称: PORT_Init()
-* 功能说明:	端口引脚功能选择,可用的功能见"SWM320_port.h"文件
-* 输    入: uint32_t PORTx	   		指定PORT端口,有效值包括PORTA、PORTB、PORTC、PORTM、PORTN、PORTP
-*			uint32_t n		   		指定PORT引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
-*			uint32_t func	   		指定端口引脚要设定的功能,其可取值见"SWM320_port.h"文件
-*			uint32_t digit_in_en   	数字输入使能
+* 功能说明: 端口引脚功能选择,可用的功能见"SWM320_port.h"文件
+* 输    入: uint32_t PORTx            指定PORT端口,有效值包括PORTA、PORTB、PORTC、PORTM、PORTN、PORTP
+*           uint32_t n              指定PORT引脚,有效值包括PIN0、PIN1、PIN2、... ... PIN22、PIN23
+*           uint32_t func           指定端口引脚要设定的功能,其可取值见"SWM320_port.h"文件
+*           uint32_t digit_in_en    数字输入使能
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 当引脚标号n为偶数时,func取值只能是FUNMUX0开头的,如FUNMUX0_UART0_RXD
 * 注意事项: 当引脚标号n为偶数时,func取值只能是FUNMUX0开头的,如FUNMUX0_UART0_RXD
-*			当引脚标号n为奇数时,func取值只能是FUNMUX1开头的,如FUNMUX1_UART0_TXD
+*           当引脚标号n为奇数时,func取值只能是FUNMUX1开头的,如FUNMUX1_UART0_TXD
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 void PORT_Init(uint32_t PORTx, uint32_t n, uint32_t func, uint32_t digit_in_en)
 void PORT_Init(uint32_t PORTx, uint32_t n, uint32_t func, uint32_t digit_in_en)
 {
 {

+ 95 - 95
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_pwm.c

@@ -1,31 +1,31 @@
-/****************************************************************************************************************************************** 
-* 文件名称:	SWM320_pwm.c
-* 功能说明:	SWM320单片机的PWM功能驱动库
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
+/******************************************************************************************************************************************
+* 文件名称: SWM320_pwm.c
+* 功能说明: SWM320单片机的PWM功能驱动库
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
 * 注意事项:
 * 注意事项:
-* 版本日期:	V1.1.0		2017年10月25日
-* 升级记录: 
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
-* COPYRIGHT 2012 Synwit Technology 
+* COPYRIGHT 2012 Synwit Technology
 *******************************************************************************************************************************************/
 *******************************************************************************************************************************************/
 #include "SWM320.h"
 #include "SWM320.h"
 #include "SWM320_pwm.h"
 #include "SWM320_pwm.h"
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	PWM_Init()
-* 功能说明:	PWM初始化
-* 输    入: PWM_TypeDef * PWMx		指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
-*			PWM_InitStructure * initStruct	包含PWM相关设定值的结构体
+/******************************************************************************************************************************************
+* 函数名称: PWM_Init()
+* 功能说明: PWM初始化
+* 输    入: PWM_TypeDef * PWMx        指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
+*           PWM_InitStructure * initStruct  包含PWM相关设定值的结构体
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -98,12 +98,12 @@ void PWM_Init(PWM_TypeDef *PWMx, PWM_InitStructure *initStruct)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	PWM_Start()
-* 功能说明:	启动PWM,开始PWM输出
-* 输    入: PWM_TypeDef * PWMx		指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
-*			uint32_t chA			0 通道A不启动		1 通道A启动
-*			uint32_t chB			0 通道B不启动		1 通道B启动
+/******************************************************************************************************************************************
+* 函数名称: PWM_Start()
+* 功能说明: 启动PWM,开始PWM输出
+* 输    入: PWM_TypeDef * PWMx        指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
+*           uint32_t chA            0 通道A不启动        1 通道A启动
+*           uint32_t chB            0 通道B不启动        1 通道B启动
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -137,12 +137,12 @@ void PWM_Start(PWM_TypeDef *PWMx, uint32_t chA, uint32_t chB)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	PWM_Stop()
-* 功能说明:	关闭PWM,停止PWM输出
-* 输    入: PWM_TypeDef * PWMx		指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
-*			uint32_t chA			0 通道A不关闭		1 通道A关闭
-*			uint32_t chB			0 通道B不关闭		1 通道B关闭
+/******************************************************************************************************************************************
+* 函数名称: PWM_Stop()
+* 功能说明: 关闭PWM,停止PWM输出
+* 输    入: PWM_TypeDef * PWMx        指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
+*           uint32_t chA            0 通道A不关闭        1 通道A关闭
+*           uint32_t chB            0 通道B不关闭        1 通道B关闭
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -176,12 +176,12 @@ void PWM_Stop(PWM_TypeDef *PWMx, uint32_t chA, uint32_t chB)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	PWM_SetCycle()
-* 功能说明:	设置周期
-* 输    入: PWM_TypeDef * PWMx		指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
-*			uint32_t chn			选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
-*			uint16_t cycle			要设定的周期值
+/******************************************************************************************************************************************
+* 函数名称: PWM_SetCycle()
+* 功能说明: 设置周期
+* 输    入: PWM_TypeDef * PWMx        指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
+*           uint32_t chn            选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
+*           uint16_t cycle          要设定的周期值
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -193,12 +193,12 @@ void PWM_SetCycle(PWM_TypeDef *PWMx, uint32_t chn, uint16_t cycle)
         PWMx->PERB = cycle;
         PWMx->PERB = cycle;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	PWM_GetCycle()
-* 功能说明:	获取周期
-* 输    入: PWM_TypeDef * PWMx		指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
-*			uint32_t chn			选择要查询哪个通道,有效值:PWM_CH_A、PWM_CH_B
-* 输    出: uint16_t				获取到的周期值
+/******************************************************************************************************************************************
+* 函数名称: PWM_GetCycle()
+* 功能说明: 获取周期
+* 输    入: PWM_TypeDef * PWMx        指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
+*           uint32_t chn            选择要查询哪个通道,有效值:PWM_CH_A、PWM_CH_B
+* 输    出: uint16_t              获取到的周期值
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint16_t PWM_GetCycle(PWM_TypeDef *PWMx, uint32_t chn)
 uint16_t PWM_GetCycle(PWM_TypeDef *PWMx, uint32_t chn)
@@ -213,12 +213,12 @@ uint16_t PWM_GetCycle(PWM_TypeDef *PWMx, uint32_t chn)
     return cycle;
     return cycle;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	PWM_SetHDuty()
-* 功能说明:	设置高电平时长
-* 输    入: PWM_TypeDef * PWMx		指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
-*			uint32_t chn			选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
-*			uint16_t hduty			要设定的高电平时长
+/******************************************************************************************************************************************
+* 函数名称: PWM_SetHDuty()
+* 功能说明: 设置高电平时长
+* 输    入: PWM_TypeDef * PWMx        指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
+*           uint32_t chn            选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
+*           uint16_t hduty          要设定的高电平时长
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -230,12 +230,12 @@ void PWM_SetHDuty(PWM_TypeDef *PWMx, uint32_t chn, uint16_t hduty)
         PWMx->HIGHB = hduty;
         PWMx->HIGHB = hduty;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	PWM_GetHDuty()
+/******************************************************************************************************************************************
+* 函数名称: PWM_GetHDuty()
 * 功能说明: 获取高电平时长
 * 功能说明: 获取高电平时长
-* 输    入: PWM_TypeDef * PWMx		指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
-*			uint32_t chn			选择要查询哪个通道,有效值:PWM_CH_A、PWM_CH_B
-* 输    出: uint16_t				获取到的高电平时长
+* 输    入: PWM_TypeDef * PWMx        指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
+*           uint32_t chn            选择要查询哪个通道,有效值:PWM_CH_A、PWM_CH_B
+* 输    出: uint16_t              获取到的高电平时长
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint16_t PWM_GetHDuty(PWM_TypeDef *PWMx, uint32_t chn)
 uint16_t PWM_GetHDuty(PWM_TypeDef *PWMx, uint32_t chn)
@@ -250,12 +250,12 @@ uint16_t PWM_GetHDuty(PWM_TypeDef *PWMx, uint32_t chn)
     return hduty;
     return hduty;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	PWM_SetDeadzone()
-* 功能说明:	设置死区时长
-* 输    入: PWM_TypeDef * PWMx		指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
-*			uint32_t chn			选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
-*			uint8_t deadzone		要设定的死区时长
+/******************************************************************************************************************************************
+* 函数名称: PWM_SetDeadzone()
+* 功能说明: 设置死区时长
+* 输    入: PWM_TypeDef * PWMx        指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
+*           uint32_t chn            选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
+*           uint8_t deadzone        要设定的死区时长
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -267,12 +267,12 @@ void PWM_SetDeadzone(PWM_TypeDef *PWMx, uint32_t chn, uint8_t deadzone)
         PWMx->DZB = deadzone;
         PWMx->DZB = deadzone;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	PWM_GetDeadzone()
+/******************************************************************************************************************************************
+* 函数名称: PWM_GetDeadzone()
 * 功能说明: 获取死区时长
 * 功能说明: 获取死区时长
-* 输    入: PWM_TypeDef * PWMx		指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
-*			uint32_t chn			选择要查询哪个通道,有效值:PWM_CH_A、PWM_CH_B
-* 输    出: uint8_t					获取到的死区时长
+* 输    入: PWM_TypeDef * PWMx        指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
+*           uint32_t chn            选择要查询哪个通道,有效值:PWM_CH_A、PWM_CH_B
+* 输    出: uint8_t                   获取到的死区时长
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint8_t PWM_GetDeadzone(PWM_TypeDef *PWMx, uint32_t chn)
 uint8_t PWM_GetDeadzone(PWM_TypeDef *PWMx, uint32_t chn)
@@ -287,11 +287,11 @@ uint8_t PWM_GetDeadzone(PWM_TypeDef *PWMx, uint32_t chn)
     return deadzone;
     return deadzone;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	PWM_IntNCycleEn()
+/******************************************************************************************************************************************
+* 函数名称: PWM_IntNCycleEn()
 * 功能说明: 新周期开始中断使能
 * 功能说明: 新周期开始中断使能
-* 输    入: PWM_TypeDef * PWMx		指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
-*			uint32_t chn			选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
+* 输    入: PWM_TypeDef * PWMx        指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
+*           uint32_t chn            选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -343,11 +343,11 @@ void PWM_IntNCycleEn(PWM_TypeDef *PWMx, uint32_t chn)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	PWM_IntNCycleDis()
+/******************************************************************************************************************************************
+* 函数名称: PWM_IntNCycleDis()
 * 功能说明: 新周期开始中断禁能
 * 功能说明: 新周期开始中断禁能
-* 输    入: PWM_TypeDef * PWMx		指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
-*			uint32_t chn			选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
+* 输    入: PWM_TypeDef * PWMx        指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
+*           uint32_t chn            选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -399,11 +399,11 @@ void PWM_IntNCycleDis(PWM_TypeDef *PWMx, uint32_t chn)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	PWM_IntNCycleClr()
+/******************************************************************************************************************************************
+* 函数名称: PWM_IntNCycleClr()
 * 功能说明: 新周期开始中断标志清除
 * 功能说明: 新周期开始中断标志清除
-* 输    入: PWM_TypeDef * PWMx		指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
-*			uint32_t chn			选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
+* 输    入: PWM_TypeDef * PWMx        指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
+*           uint32_t chn            选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -455,12 +455,12 @@ void PWM_IntNCycleClr(PWM_TypeDef *PWMx, uint32_t chn)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	PWM_IntNCycleStat()
+/******************************************************************************************************************************************
+* 函数名称: PWM_IntNCycleStat()
 * 功能说明: 新周期开始中断是否发生
 * 功能说明: 新周期开始中断是否发生
-* 输    入: PWM_TypeDef * PWMx		指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
-*			uint32_t chn			选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
-* 输    出: uint32_t				1 新周期开始中断已发生    0 新周期开始中断未发生
+* 输    入: PWM_TypeDef * PWMx        指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
+*           uint32_t chn            选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
+* 输    出: uint32_t              1 新周期开始中断已发生    0 新周期开始中断未发生
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t PWM_IntNCycleStat(PWM_TypeDef *PWMx, uint32_t chn)
 uint32_t PWM_IntNCycleStat(PWM_TypeDef *PWMx, uint32_t chn)
@@ -515,11 +515,11 @@ uint32_t PWM_IntNCycleStat(PWM_TypeDef *PWMx, uint32_t chn)
     return int_stat;
     return int_stat;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	PWM_IntHEndEn()
+/******************************************************************************************************************************************
+* 函数名称: PWM_IntHEndEn()
 * 功能说明: 高电平结束中断使能
 * 功能说明: 高电平结束中断使能
-* 输    入: PWM_TypeDef * PWMx		指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
-*			uint32_t chn			选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
+* 输    入: PWM_TypeDef * PWMx        指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
+*           uint32_t chn            选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -571,11 +571,11 @@ void PWM_IntHEndEn(PWM_TypeDef *PWMx, uint32_t chn)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	PWM_IntHEndDis()
+/******************************************************************************************************************************************
+* 函数名称: PWM_IntHEndDis()
 * 功能说明: 高电平结束中断禁能
 * 功能说明: 高电平结束中断禁能
-* 输    入: PWM_TypeDef * PWMx		指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
-*			uint32_t chn			选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
+* 输    入: PWM_TypeDef * PWMx        指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
+*           uint32_t chn            选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -627,11 +627,11 @@ void PWM_IntHEndDis(PWM_TypeDef *PWMx, uint32_t chn)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	PWM_IntHEndClr()
+/******************************************************************************************************************************************
+* 函数名称: PWM_IntHEndClr()
 * 功能说明: 高电平结束中断标志清除
 * 功能说明: 高电平结束中断标志清除
-* 输    入: PWM_TypeDef * PWMx		指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
-*			uint32_t chn			选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
+* 输    入: PWM_TypeDef * PWMx        指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
+*           uint32_t chn            选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -683,12 +683,12 @@ void PWM_IntHEndClr(PWM_TypeDef *PWMx, uint32_t chn)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	PWM_IntHEndStat()
+/******************************************************************************************************************************************
+* 函数名称: PWM_IntHEndStat()
 * 功能说明: 高电平结束中断是否发生
 * 功能说明: 高电平结束中断是否发生
-* 输    入: PWM_TypeDef * PWMx		指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
-*			uint32_t chn			选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
-* 输    出: uint32_t				1 高电平结束中断已发生    0 高电平结束中断未发生
+* 输    入: PWM_TypeDef * PWMx        指定要被设置的PWM,有效值包括PWM0、PWM1、PWM2、PWM3、PWM4、PWM5
+*           uint32_t chn            选择要设置哪个通道,有效值:PWM_CH_A、PWM_CH_B
+* 输    出: uint32_t              1 高电平结束中断已发生    0 高电平结束中断未发生
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t PWM_IntHEndStat(PWM_TypeDef *PWMx, uint32_t chn)
 uint32_t PWM_IntHEndStat(PWM_TypeDef *PWMx, uint32_t chn)

+ 126 - 126
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_rtc.c

@@ -1,18 +1,18 @@
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 文件名称: SWM320_rtc.c
 * 文件名称: SWM320_rtc.c
-* 功能说明:	SWM320单片机的RTC驱动库
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
-* 注意事项: 
-* 版本日期:	V1.1.0		2017年10月25日
-* 升级记录:  
+* 功能说明: SWM320单片机的RTC驱动库
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
+* 注意事项:
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
@@ -22,11 +22,11 @@
 #include "SWM320_rtc.h"
 #include "SWM320_rtc.h"
 
 
 static uint32_t calcWeekDay(uint32_t year, uint32_t month, uint32_t date);
 static uint32_t calcWeekDay(uint32_t year, uint32_t month, uint32_t date);
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_Init()
-* 功能说明:	RTC初始化
-* 输    入: RTC_TypeDef * RTCx	指定要被设置的RTC,有效值包括RTC
-*			RTC_InitStructure * initStruct    包含RTC相关设定值的结构体
+/******************************************************************************************************************************************
+* 函数名称: RTC_Init()
+* 功能说明: RTC初始化
+* 输    入: RTC_TypeDef * RTCx    指定要被设置的RTC,有效值包括RTC
+*           RTC_InitStructure * initStruct    包含RTC相关设定值的结构体
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -53,7 +53,7 @@ void RTC_Init(RTC_TypeDef *RTCx, RTC_InitStructure *initStruct)
     RTCx->MONDAY = (calcWeekDay(initStruct->Year, initStruct->Month, initStruct->Date) << RTC_MONDAY_DAY_Pos) |
     RTCx->MONDAY = (calcWeekDay(initStruct->Year, initStruct->Month, initStruct->Date) << RTC_MONDAY_DAY_Pos) |
                    (initStruct->Month << RTC_MONDAY_MON_Pos);
                    (initStruct->Month << RTC_MONDAY_MON_Pos);
 
 
-    RTCx->YEAR = initStruct->Year - 1901;
+    RTCx->YEAR = initStruct->Year;
 
 
     RTCx->LOAD = 1 << RTC_LOAD_TIME_Pos;
     RTCx->LOAD = 1 << RTC_LOAD_TIME_Pos;
 
 
@@ -71,10 +71,10 @@ void RTC_Init(RTC_TypeDef *RTCx, RTC_InitStructure *initStruct)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_Start()
-* 功能说明:	启动RTC
-* 输    入: RTC_TypeDef * RTCx	指定要被设置的RTC,可取值包括RTC
+/******************************************************************************************************************************************
+* 函数名称: RTC_Start()
+* 功能说明: 启动RTC
+* 输    入: RTC_TypeDef * RTCx    指定要被设置的RTC,可取值包括RTC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -83,10 +83,10 @@ void RTC_Start(RTC_TypeDef *RTCx)
     RTCx->EN = 1;
     RTCx->EN = 1;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_Stop()
-* 功能说明:	停止RTC
-* 输    入: RTC_TypeDef * RTCx	指定要被设置的RTC,可取值包括RTC
+/******************************************************************************************************************************************
+* 函数名称: RTC_Stop()
+* 功能说明: 停止RTC
+* 输    入: RTC_TypeDef * RTCx    指定要被设置的RTC,可取值包括RTC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -95,17 +95,17 @@ void RTC_Stop(RTC_TypeDef *RTCx)
     RTCx->EN = 0;
     RTCx->EN = 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_GetDateTime()
-* 功能说明:	获取当前的时间和日期
-* 输    入: RTC_TypeDef * RTCx	指定要被设置的RTC,有效值包括RTC
-*			RTC_DateTime * dateTime    获取到的时间、日期值存入此指针指向的结构体
+/******************************************************************************************************************************************
+* 函数名称: RTC_GetDateTime()
+* 功能说明: 获取当前的时间和日期
+* 输    入: RTC_TypeDef * RTCx    指定要被设置的RTC,有效值包括RTC
+*           RTC_DateTime * dateTime    获取到的时间、日期值存入此指针指向的结构体
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 void RTC_GetDateTime(RTC_TypeDef *RTCx, RTC_DateTime *dateTime)
 void RTC_GetDateTime(RTC_TypeDef *RTCx, RTC_DateTime *dateTime)
 {
 {
-    dateTime->Year = RTCx->YEAR + 1901;
+    dateTime->Year = RTCx->YEAR;
     dateTime->Month = (RTCx->MONDAY & RTC_MONDAY_MON_Msk) >> RTC_MONDAY_MON_Pos;
     dateTime->Month = (RTCx->MONDAY & RTC_MONDAY_MON_Msk) >> RTC_MONDAY_MON_Pos;
     dateTime->Date = (RTCx->DATHUR & RTC_DATHUR_DATE_Msk) >> RTC_DATHUR_DATE_Pos;
     dateTime->Date = (RTCx->DATHUR & RTC_DATHUR_DATE_Msk) >> RTC_DATHUR_DATE_Pos;
     dateTime->Day = 1 << ((RTCx->MONDAY & RTC_MONDAY_DAY_Msk) >> RTC_MONDAY_DAY_Pos);
     dateTime->Day = 1 << ((RTCx->MONDAY & RTC_MONDAY_DAY_Msk) >> RTC_MONDAY_DAY_Pos);
@@ -114,11 +114,11 @@ void RTC_GetDateTime(RTC_TypeDef *RTCx, RTC_DateTime *dateTime)
     dateTime->Second = (RTCx->MINSEC & RTC_MINSEC_SEC_Msk) >> RTC_MINSEC_SEC_Pos;
     dateTime->Second = (RTCx->MINSEC & RTC_MINSEC_SEC_Msk) >> RTC_MINSEC_SEC_Pos;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_AlarmSetup()
-* 功能说明:	RTC闹钟设定
-* 输    入: RTC_TypeDef * RTCx	指定要被设置的RTC,有效值包括RTC
-*			RTC_AlarmStructure * alarmStruct    包含RTC闹钟设定值的结构体
+/******************************************************************************************************************************************
+* 函数名称: RTC_AlarmSetup()
+* 功能说明: RTC闹钟设定
+* 输    入: RTC_TypeDef * RTCx    指定要被设置的RTC,有效值包括RTC
+*           RTC_AlarmStructure * alarmStruct    包含RTC闹钟设定值的结构体
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -145,13 +145,13 @@ void RTC_AlarmSetup(RTC_TypeDef *RTCx, RTC_AlarmStructure *alarmStruct)
         NVIC_EnableIRQ(RTC_IRQn);
         NVIC_EnableIRQ(RTC_IRQn);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	calcWeekDay()
-* 功能说明:	计算指定年、月、日是星期几
-* 输    入: uint32_t year		
-*			uint32_t month		
-*			uint32_t date		
-* 输    出: uint32_t			0 星期日    1 星期一    ... ...    6 星期六
+/******************************************************************************************************************************************
+* 函数名称: calcWeekDay()
+* 功能说明: 计算指定年、月、日是星期几
+* 输    入: uint32_t year     
+*           uint32_t month      
+*           uint32_t date       
+* 输    出: uint32_t          0 星期日    1 星期一    ... ...    6 星期六
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 static uint32_t calcWeekDay(uint32_t year, uint32_t month, uint32_t date)
 static uint32_t calcWeekDay(uint32_t year, uint32_t month, uint32_t date)
@@ -178,10 +178,10 @@ static uint32_t calcWeekDay(uint32_t year, uint32_t month, uint32_t date)
     return (cnt + 1) % 7;
     return (cnt + 1) % 7;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntSecondEn()
-* 功能说明:	秒中断使能
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntSecondEn()
+* 功能说明: 秒中断使能
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -190,10 +190,10 @@ void RTC_IntSecondEn(RTC_TypeDef *RTCx)
     RTCx->IE |= (1 << RTC_IE_SEC_Pos);
     RTCx->IE |= (1 << RTC_IE_SEC_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntSecondDis()
-* 功能说明:	秒中断禁止
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntSecondDis()
+* 功能说明: 秒中断禁止
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -202,10 +202,10 @@ void RTC_IntSecondDis(RTC_TypeDef *RTCx)
     RTCx->IE &= ~(1 << RTC_IE_SEC_Pos);
     RTCx->IE &= ~(1 << RTC_IE_SEC_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntSecondClr()
-* 功能说明:	秒中断标志清除
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntSecondClr()
+* 功能说明: 秒中断标志清除
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -214,11 +214,11 @@ void RTC_IntSecondClr(RTC_TypeDef *RTCx)
     RTCx->IF = (1 << RTC_IF_SEC_Pos);
     RTCx->IF = (1 << RTC_IF_SEC_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntSecondStat()
-* 功能说明:	秒中断状态
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
-* 输    出: uint32_t				1 秒中断发生    0 秒中断未发生
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntSecondStat()
+* 功能说明: 秒中断状态
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
+* 输    出: uint32_t              1 秒中断发生    0 秒中断未发生
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t RTC_IntSecondStat(RTC_TypeDef *RTCx)
 uint32_t RTC_IntSecondStat(RTC_TypeDef *RTCx)
@@ -226,10 +226,10 @@ uint32_t RTC_IntSecondStat(RTC_TypeDef *RTCx)
     return (RTCx->IF & RTC_IF_SEC_Msk) ? 1 : 0;
     return (RTCx->IF & RTC_IF_SEC_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntMinuteEn()
-* 功能说明:	分中断使能
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntMinuteEn()
+* 功能说明: 分中断使能
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -238,10 +238,10 @@ void RTC_IntMinuteEn(RTC_TypeDef *RTCx)
     RTCx->IE |= (1 << RTC_IE_MIN_Pos);
     RTCx->IE |= (1 << RTC_IE_MIN_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntMinuteDis()
-* 功能说明:	分中断禁止
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntMinuteDis()
+* 功能说明: 分中断禁止
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -250,10 +250,10 @@ void RTC_IntMinuteDis(RTC_TypeDef *RTCx)
     RTCx->IE &= ~(1 << RTC_IE_MIN_Pos);
     RTCx->IE &= ~(1 << RTC_IE_MIN_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntMinuteClr()
-* 功能说明:	分中断标志清除
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntMinuteClr()
+* 功能说明: 分中断标志清除
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -262,11 +262,11 @@ void RTC_IntMinuteClr(RTC_TypeDef *RTCx)
     RTCx->IF = (1 << RTC_IF_MIN_Pos);
     RTCx->IF = (1 << RTC_IF_MIN_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntMinuteStat()
-* 功能说明:	分中断状态
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
-* 输    出: uint32_t				1 分中断发生    0 分中断未发生
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntMinuteStat()
+* 功能说明: 分中断状态
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
+* 输    出: uint32_t              1 分中断发生    0 分中断未发生
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t RTC_IntMinuteStat(RTC_TypeDef *RTCx)
 uint32_t RTC_IntMinuteStat(RTC_TypeDef *RTCx)
@@ -274,10 +274,10 @@ uint32_t RTC_IntMinuteStat(RTC_TypeDef *RTCx)
     return (RTCx->IF & RTC_IF_MIN_Msk) ? 1 : 0;
     return (RTCx->IF & RTC_IF_MIN_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntHourEn()
-* 功能说明:	时中断使能
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntHourEn()
+* 功能说明: 时中断使能
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -286,10 +286,10 @@ void RTC_IntHourEn(RTC_TypeDef *RTCx)
     RTCx->IE |= (1 << RTC_IE_HOUR_Pos);
     RTCx->IE |= (1 << RTC_IE_HOUR_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntHourDis()
-* 功能说明:	时中断禁止
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntHourDis()
+* 功能说明: 时中断禁止
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -298,10 +298,10 @@ void RTC_IntHourDis(RTC_TypeDef *RTCx)
     RTCx->IE &= ~(1 << RTC_IE_HOUR_Pos);
     RTCx->IE &= ~(1 << RTC_IE_HOUR_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntHourClr()
-* 功能说明:	时中断标志清除
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntHourClr()
+* 功能说明: 时中断标志清除
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -310,11 +310,11 @@ void RTC_IntHourClr(RTC_TypeDef *RTCx)
     RTCx->IF = (1 << RTC_IF_HOUR_Pos);
     RTCx->IF = (1 << RTC_IF_HOUR_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntHourStat()
-* 功能说明:	时中断状态
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
-* 输    出: uint32_t				1 时中断发生    0 时中断未发生
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntHourStat()
+* 功能说明: 时中断状态
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
+* 输    出: uint32_t              1 时中断发生    0 时中断未发生
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t RTC_IntHourStat(RTC_TypeDef *RTCx)
 uint32_t RTC_IntHourStat(RTC_TypeDef *RTCx)
@@ -322,10 +322,10 @@ uint32_t RTC_IntHourStat(RTC_TypeDef *RTCx)
     return (RTCx->IF & RTC_IF_HOUR_Msk) ? 1 : 0;
     return (RTCx->IF & RTC_IF_HOUR_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntDateEn()
-* 功能说明:	日中断使能
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntDateEn()
+* 功能说明: 日中断使能
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -334,10 +334,10 @@ void RTC_IntDateEn(RTC_TypeDef *RTCx)
     RTCx->IE |= (1 << RTC_IE_DATE_Pos);
     RTCx->IE |= (1 << RTC_IE_DATE_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntDateDis()
-* 功能说明:	日中断禁止
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntDateDis()
+* 功能说明: 日中断禁止
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -346,10 +346,10 @@ void RTC_IntDateDis(RTC_TypeDef *RTCx)
     RTCx->IE &= ~(1 << RTC_IE_DATE_Pos);
     RTCx->IE &= ~(1 << RTC_IE_DATE_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntDateClr()
-* 功能说明:	日中断标志清除
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntDateClr()
+* 功能说明: 日中断标志清除
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -358,11 +358,11 @@ void RTC_IntDateClr(RTC_TypeDef *RTCx)
     RTCx->IF = (1 << RTC_IF_DATE_Pos);
     RTCx->IF = (1 << RTC_IF_DATE_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntDateStat()
-* 功能说明:	日中断状态
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
-* 输    出: uint32_t				1 日中断发生    0 日中断未发生
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntDateStat()
+* 功能说明: 日中断状态
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
+* 输    出: uint32_t              1 日中断发生    0 日中断未发生
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t RTC_IntDateStat(RTC_TypeDef *RTCx)
 uint32_t RTC_IntDateStat(RTC_TypeDef *RTCx)
@@ -370,10 +370,10 @@ uint32_t RTC_IntDateStat(RTC_TypeDef *RTCx)
     return (RTCx->IF & RTC_IF_DATE_Msk) ? 1 : 0;
     return (RTCx->IF & RTC_IF_DATE_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntAlarmEn()
-* 功能说明:	闹钟中断使能
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntAlarmEn()
+* 功能说明: 闹钟中断使能
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -382,10 +382,10 @@ void RTC_IntAlarmEn(RTC_TypeDef *RTCx)
     RTCx->IE |= (1 << RTC_IE_ALARM_Pos);
     RTCx->IE |= (1 << RTC_IE_ALARM_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntAlarmDis()
-* 功能说明:	闹钟中断禁止
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntAlarmDis()
+* 功能说明: 闹钟中断禁止
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -394,10 +394,10 @@ void RTC_IntAlarmDis(RTC_TypeDef *RTCx)
     RTCx->IE &= ~(1 << RTC_IE_ALARM_Pos);
     RTCx->IE &= ~(1 << RTC_IE_ALARM_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntAlarmClr()
-* 功能说明:	闹钟中断标志清除
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntAlarmClr()
+* 功能说明: 闹钟中断标志清除
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -406,11 +406,11 @@ void RTC_IntAlarmClr(RTC_TypeDef *RTCx)
     RTCx->IF = (1 << RTC_IF_ALARM_Pos);
     RTCx->IF = (1 << RTC_IF_ALARM_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	RTC_IntAlarmStat()
-* 功能说明:	闹钟中断状态
-* 输    入: RTC_TypeDef * RTCx		指定要被设置的RTC,可取值包括RTC
-* 输    出: uint32_t				1 闹钟中断发生    0 闹钟中断未发生
+/******************************************************************************************************************************************
+* 函数名称: RTC_IntAlarmStat()
+* 功能说明: 闹钟中断状态
+* 输    入: RTC_TypeDef * RTCx        指定要被设置的RTC,可取值包括RTC
+* 输    出: uint32_t              1 闹钟中断发生    0 闹钟中断未发生
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t RTC_IntAlarmStat(RTC_TypeDef *RTCx)
 uint32_t RTC_IntAlarmStat(RTC_TypeDef *RTCx)

+ 57 - 57
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdio.c

@@ -1,18 +1,18 @@
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 文件名称: SWM320_sdio.c
 * 文件名称: SWM320_sdio.c
-* 功能说明:	SWM320单片机的SDIO接口驱动库
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
+* 功能说明: SWM320单片机的SDIO接口驱动库
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
 * 注意事项: 为了通用性、兼容性、易用性,只支持以512字节为单位的读写
 * 注意事项: 为了通用性、兼容性、易用性,只支持以512字节为单位的读写
-* 版本日期:	V1.1.0		2017年10月25日
-* 升级记录:  
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
@@ -23,11 +23,11 @@
 
 
 SD_CardInfo SD_cardInfo;
 SD_CardInfo SD_cardInfo;
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: SDIO_Init()
 * 函数名称: SDIO_Init()
-* 功能说明:	SDIO读写SD卡初始化,初始化成高速4线模式、读写以512字节大小进行
-* 输    入: uint32_t freq			SDIO_CLK时钟频率
-* 输    出: uint32_t				SD_RES_OK 操作成功    SD_RES_ERR 操作失败    SD_RES_TIMEOUT 操作超时
+* 功能说明: SDIO读写SD卡初始化,初始化成高速4线模式、读写以512字节大小进行
+* 输    入: uint32_t freq         SDIO_CLK时钟频率
+* 输    出: uint32_t              SD_RES_OK 操作成功    SD_RES_ERR 操作失败    SD_RES_TIMEOUT 操作超时
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SDIO_Init(uint32_t freq)
 uint32_t SDIO_Init(uint32_t freq)
@@ -125,12 +125,12 @@ uint32_t SDIO_Init(uint32_t freq)
     return SD_RES_OK;
     return SD_RES_OK;
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: SDIO_BlockWrite()
 * 函数名称: SDIO_BlockWrite()
-* 功能说明:	向SD卡写入数据
-* 输    入: uint32_t block_addr		SD卡块地址,每块512字节
-*			uint32_t buff[]			要写入的数据
-* 输    出: uint32_t				SD_RES_OK 操作成功    SD_RES_ERR 操作失败    SD_RES_TIMEOUT 操作超时
+* 功能说明: 向SD卡写入数据
+* 输    入: uint32_t block_addr       SD卡块地址,每块512字节
+*           uint32_t buff[]         要写入的数据
+* 输    出: uint32_t              SD_RES_OK 操作成功    SD_RES_ERR 操作失败    SD_RES_TIMEOUT 操作超时
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SDIO_BlockWrite(uint32_t block_addr, uint32_t buff[])
 uint32_t SDIO_BlockWrite(uint32_t block_addr, uint32_t buff[])
@@ -161,13 +161,13 @@ uint32_t SDIO_BlockWrite(uint32_t block_addr, uint32_t buff[])
     return SD_RES_OK;
     return SD_RES_OK;
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: SDIO_MultiBlockWrite()
 * 函数名称: SDIO_MultiBlockWrite()
-* 功能说明:	向SD卡写入多块数据
-* 输    入: uint32_t block_addr		SD卡块地址,每块512字节
-*			uint16_t block_cnt		要写入的块数
-*			uint32_t buff[]			要写入的数据
-* 输    出: uint32_t				SD_RES_OK 操作成功    SD_RES_ERR 操作失败    SD_RES_TIMEOUT 操作超时
+* 功能说明: 向SD卡写入多块数据
+* 输    入: uint32_t block_addr       SD卡块地址,每块512字节
+*           uint16_t block_cnt      要写入的块数
+*           uint32_t buff[]         要写入的数据
+* 输    出: uint32_t              SD_RES_OK 操作成功    SD_RES_ERR 操作失败    SD_RES_TIMEOUT 操作超时
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SDIO_MultiBlockWrite(uint32_t block_addr, uint16_t block_cnt, uint32_t buff[])
 uint32_t SDIO_MultiBlockWrite(uint32_t block_addr, uint16_t block_cnt, uint32_t buff[])
@@ -201,13 +201,13 @@ uint32_t SDIO_MultiBlockWrite(uint32_t block_addr, uint16_t block_cnt, uint32_t
     return SD_RES_OK;
     return SD_RES_OK;
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: SDIO_DMABlockWrite()
 * 函数名称: SDIO_DMABlockWrite()
-* 功能说明:	通过DMA向SD卡写入多块数据
-* 输    入: uint32_t block_addr		SD卡块地址,每块512字节
-*			uint16_t block_cnt		要写入的块数
-*			uint32_t buff[]			要写入的数据
-* 输    出: uint32_t				SD_RES_OK 操作成功    SD_RES_ERR 操作失败    SD_RES_TIMEOUT 操作超时
+* 功能说明: 通过DMA向SD卡写入多块数据
+* 输    入: uint32_t block_addr       SD卡块地址,每块512字节
+*           uint16_t block_cnt      要写入的块数
+*           uint32_t buff[]         要写入的数据
+* 输    出: uint32_t              SD_RES_OK 操作成功    SD_RES_ERR 操作失败    SD_RES_TIMEOUT 操作超时
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SDIO_DMABlockWrite(uint32_t block_addr, uint16_t block_cnt, uint32_t buff[])
 uint32_t SDIO_DMABlockWrite(uint32_t block_addr, uint16_t block_cnt, uint32_t buff[])
@@ -233,12 +233,12 @@ uint32_t SDIO_DMABlockWrite(uint32_t block_addr, uint16_t block_cnt, uint32_t bu
     return SD_RES_OK;
     return SD_RES_OK;
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: SDIO_BlockRead()
 * 函数名称: SDIO_BlockRead()
-* 功能说明:	从SD卡读出数据
-* 输    入: uint32_t block_addr		SD卡块地址,每块512字节
-*			uint32_t buff[]			读出的数据
-* 输    出: uint32_t				SD_RES_OK 操作成功    SD_RES_ERR 操作失败    SD_RES_TIMEOUT 操作超时
+* 功能说明: 从SD卡读出数据
+* 输    入: uint32_t block_addr       SD卡块地址,每块512字节
+*           uint32_t buff[]         读出的数据
+* 输    出: uint32_t              SD_RES_OK 操作成功    SD_RES_ERR 操作失败    SD_RES_TIMEOUT 操作超时
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SDIO_BlockRead(uint32_t block_addr, uint32_t buff[])
 uint32_t SDIO_BlockRead(uint32_t block_addr, uint32_t buff[])
@@ -269,13 +269,13 @@ uint32_t SDIO_BlockRead(uint32_t block_addr, uint32_t buff[])
     return SD_RES_OK;
     return SD_RES_OK;
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: SDIO_MultiBlockRead()
 * 函数名称: SDIO_MultiBlockRead()
-* 功能说明:	从SD卡读出多块数据
-* 输    入: uint32_t block_addr		SD卡块地址,每块512字节
-*			uint16_t block_cnt		要读出的块数
-*			uint32_t buff[]			读出的数据
-* 输    出: uint32_t				SD_RES_OK 操作成功    SD_RES_ERR 操作失败    SD_RES_TIMEOUT 操作超时
+* 功能说明: 从SD卡读出多块数据
+* 输    入: uint32_t block_addr       SD卡块地址,每块512字节
+*           uint16_t block_cnt      要读出的块数
+*           uint32_t buff[]         读出的数据
+* 输    出: uint32_t              SD_RES_OK 操作成功    SD_RES_ERR 操作失败    SD_RES_TIMEOUT 操作超时
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SDIO_MultiBlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t buff[])
 uint32_t SDIO_MultiBlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t buff[])
@@ -309,13 +309,13 @@ uint32_t SDIO_MultiBlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t b
     return SD_RES_OK;
     return SD_RES_OK;
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: SDIO_DMABlockRead()
 * 函数名称: SDIO_DMABlockRead()
-* 功能说明:	通过DMA从SD卡读出多块数据
-* 输    入: uint32_t block_addr		SD卡块地址,每块512字节
-*			uint16_t block_cnt		要读出的块数
-*			uint32_t buff[]			读出的数据
-* 输    出: uint32_t				SD_RES_OK 操作成功    SD_RES_ERR 操作失败    SD_RES_TIMEOUT 操作超时
+* 功能说明: 通过DMA从SD卡读出多块数据
+* 输    入: uint32_t block_addr       SD卡块地址,每块512字节
+*           uint16_t block_cnt      要读出的块数
+*           uint32_t buff[]         读出的数据
+* 输    出: uint32_t              SD_RES_OK 操作成功    SD_RES_ERR 操作失败    SD_RES_TIMEOUT 操作超时
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SDIO_DMABlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t buff[])
 uint32_t SDIO_DMABlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t buff[])
@@ -341,18 +341,18 @@ uint32_t SDIO_DMABlockRead(uint32_t block_addr, uint16_t block_cnt, uint32_t buf
     return SD_RES_OK;
     return SD_RES_OK;
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: _SDIO_SendCmd()
 * 函数名称: _SDIO_SendCmd()
-* 功能说明:	SDIO向SD卡发送命令
-* 输    入: uint32_t cmd			命令索引
-*			uint32_t arg			命令参数
-*			uint32_t resp_type		响应类型,取值SD_RESP_NO、SD_RESP_32b、SD_RESP_128b、SD_RESP_32b_busy
-*			uint32_t *resp_data		响应内容
-*			uint32_t have_data		是否有数据传输
-*			uint32_t data_read		1 读SD卡    0 写SD卡
-*			uint16_t block_cnt		读写块个数
-*			uint32_t use_dma		1 使用DMA搬运数据
-* 输    出: uint32_t				SD_RES_OK 操作成功    SD_RES_ERR 操作失败    SD_RES_TIMEOUT 操作超时
+* 功能说明: SDIO向SD卡发送命令
+* 输    入: uint32_t cmd          命令索引
+*           uint32_t arg            命令参数
+*           uint32_t resp_type      响应类型,取值SD_RESP_NO、SD_RESP_32b、SD_RESP_128b、SD_RESP_32b_busy
+*           uint32_t *resp_data     响应内容
+*           uint32_t have_data      是否有数据传输
+*           uint32_t data_read      1 读SD卡    0 写SD卡
+*           uint16_t block_cnt      读写块个数
+*           uint32_t use_dma        1 使用DMA搬运数据
+* 输    出: uint32_t              SD_RES_OK 操作成功    SD_RES_ERR 操作失败    SD_RES_TIMEOUT 操作超时
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t _SDIO_SendCmd(uint32_t cmd, uint32_t arg, uint32_t resp_type, uint32_t *resp_data, uint32_t have_data, uint32_t data_read, uint16_t block_cnt, uint32_t use_dma)
 uint32_t _SDIO_SendCmd(uint32_t cmd, uint32_t arg, uint32_t resp_type, uint32_t *resp_data, uint32_t have_data, uint32_t data_read, uint16_t block_cnt, uint32_t use_dma)

+ 18 - 18
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sdram.c

@@ -1,29 +1,29 @@
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 文件名称: SWM320_sdram.c
 * 文件名称: SWM320_sdram.c
-* 功能说明:	SWM320单片机的SDRAM驱动程序
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
+* 功能说明: SWM320单片机的SDRAM驱动程序
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
 * 注意事项:
 * 注意事项:
-* 版本日期: V1.1.0		2017年10月25日
-* 升级记录: 
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
-* COPYRIGHT 2012 Synwit Technology 
+* COPYRIGHT 2012 Synwit Technology
 *******************************************************************************************************************************************/
 *******************************************************************************************************************************************/
 #include "SWM320.h"
 #include "SWM320.h"
 #include "SWM320_sdram.h"
 #include "SWM320_sdram.h"
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SDRAM_Init()
-* 功能说明:	SDRAM控制器初始化
+/******************************************************************************************************************************************
+* 函数名称: SDRAM_Init()
+* 功能说明: SDRAM控制器初始化
 * 输    入: SDRAM_InitStructure * initStruct    包含 SDRAM 控制器相关设定值的结构体
 * 输    入: SDRAM_InitStructure * initStruct    包含 SDRAM 控制器相关设定值的结构体
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
@@ -79,9 +79,9 @@ void SDRAM_Init(SDRAM_InitStructure *initStruct)
         ;
         ;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SDRAM_Enable()
-* 功能说明:	SDRAM使能,使能后可读写SDRAM
+/******************************************************************************************************************************************
+* 函数名称: SDRAM_Enable()
+* 功能说明: SDRAM使能,使能后可读写SDRAM
 * 输    入: 无
 * 输    入: 无
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
@@ -97,9 +97,9 @@ void SDRAM_Enable(void)
         __NOP();
         __NOP();
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SDRAM_Disable()
-* 功能说明:	SDRAM禁能,禁能后SDRAM颗粒进入低功耗模式、并自刷新,不可读写
+/******************************************************************************************************************************************
+* 函数名称: SDRAM_Disable()
+* 功能说明: SDRAM禁能,禁能后SDRAM颗粒进入低功耗模式、并自刷新,不可读写
 * 输    入: 无
 * 输    入: 无
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无

+ 175 - 175
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_spi.c

@@ -1,18 +1,18 @@
-/****************************************************************************************************************************************** 
-* 文件名称:	SWM320_spi.c
-* 功能说明:	SWM320单片机的SPI功能驱动库
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
+/******************************************************************************************************************************************
+* 文件名称: SWM320_spi.c
+* 功能说明: SWM320单片机的SPI功能驱动库
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
 * 注意事项:
 * 注意事项:
-* 版本日期:	V1.1.0		2017年10月25日
-* 升级记录:  
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
@@ -21,11 +21,11 @@
 #include "SWM320.h"
 #include "SWM320.h"
 #include "SWM320_spi.h"
 #include "SWM320_spi.h"
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_Init()
-* 功能说明:	SPI同步串行接口初始化,包括帧长度设定、时序设定、速度设定、中断设定、FIFO触发设定
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
-*			SPI_InitStructure * initStruct	包含SPI相关设定值的结构体
+/******************************************************************************************************************************************
+* 函数名称: SPI_Init()
+* 功能说明: SPI同步串行接口初始化,包括帧长度设定、时序设定、速度设定、中断设定、FIFO触发设定
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
+*           SPI_InitStructure * initStruct  包含SPI相关设定值的结构体
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -86,10 +86,10 @@ void SPI_Init(SPI_TypeDef *SPIx, SPI_InitStructure *initStruct)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_Open()
-* 功能说明:	SPI打开,允许收发
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_Open()
+* 功能说明: SPI打开,允许收发
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -98,10 +98,10 @@ void SPI_Open(SPI_TypeDef *SPIx)
     SPIx->CTRL |= (0x01 << SPI_CTRL_EN_Pos);
     SPIx->CTRL |= (0x01 << SPI_CTRL_EN_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_Close()
-* 功能说明:	SPI关闭,禁止收发
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_Close()
+* 功能说明: SPI关闭,禁止收发
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -110,11 +110,11 @@ void SPI_Close(SPI_TypeDef *SPIx)
     SPIx->CTRL &= ~SPI_CTRL_EN_Msk;
     SPIx->CTRL &= ~SPI_CTRL_EN_Msk;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_Read()
-* 功能说明:	读取一个数据
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
-* 输    出: uint32_t				读取到的数据
+/******************************************************************************************************************************************
+* 函数名称: SPI_Read()
+* 功能说明: 读取一个数据
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
+* 输    出: uint32_t              读取到的数据
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SPI_Read(SPI_TypeDef *SPIx)
 uint32_t SPI_Read(SPI_TypeDef *SPIx)
@@ -122,11 +122,11 @@ uint32_t SPI_Read(SPI_TypeDef *SPIx)
     return SPIx->DATA;
     return SPIx->DATA;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_Write()
-* 功能说明:	写入一个数据
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
-*			uint32_t				要写入的数据
+/******************************************************************************************************************************************
+* 函数名称: SPI_Write()
+* 功能说明: 写入一个数据
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
+*           uint32_t                要写入的数据
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -135,11 +135,11 @@ void SPI_Write(SPI_TypeDef *SPIx, uint32_t data)
     SPIx->DATA = data;
     SPIx->DATA = data;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_WriteWithWait()
-* 功能说明:	写入一个数据并等待数据完全发送出去
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1、SPI1
-*			uint32_t				要写入的数据
+/******************************************************************************************************************************************
+* 函数名称: SPI_WriteWithWait()
+* 功能说明: 写入一个数据并等待数据完全发送出去
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1、SPI1
+*           uint32_t                要写入的数据
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -153,12 +153,12 @@ void SPI_WriteWithWait(SPI_TypeDef *SPIx, uint32_t data)
         ;
         ;
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: SPI_ReadWrite()
 * 函数名称: SPI_ReadWrite()
 * 功能说明: 发送一个数据,并返回发送过程中接收到的
 * 功能说明: 发送一个数据,并返回发送过程中接收到的
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
-*			uint32_t data 			要发送的数据
-* 输    出: uint32_t				接收到的数据
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
+*           uint32_t data           要发送的数据
+* 输    出: uint32_t              接收到的数据
 * 注意事项: 对于同一个SPI模块,此函数不应与SPI_Write()混着用,因为SPI_Write()不清除SPI_STAT_RFNE状态
 * 注意事项: 对于同一个SPI模块,此函数不应与SPI_Write()混着用,因为SPI_Write()不清除SPI_STAT_RFNE状态
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SPI_ReadWrite(SPI_TypeDef *SPIx, uint32_t data)
 uint32_t SPI_ReadWrite(SPI_TypeDef *SPIx, uint32_t data)
@@ -170,11 +170,11 @@ uint32_t SPI_ReadWrite(SPI_TypeDef *SPIx, uint32_t data)
     return SPIx->DATA;
     return SPIx->DATA;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_IsRXEmpty()
-* 功能说明:	接收FIFO是否空,如果不空则可以继续SPI_Read()
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
-* 输    出: uint32_t				1 接收FIFO空    0 接收FIFO非空
+/******************************************************************************************************************************************
+* 函数名称: SPI_IsRXEmpty()
+* 功能说明: 接收FIFO是否空,如果不空则可以继续SPI_Read()
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
+* 输    出: uint32_t              1 接收FIFO空    0 接收FIFO非空
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SPI_IsRXEmpty(SPI_TypeDef *SPIx)
 uint32_t SPI_IsRXEmpty(SPI_TypeDef *SPIx)
@@ -182,11 +182,11 @@ uint32_t SPI_IsRXEmpty(SPI_TypeDef *SPIx)
     return (SPIx->STAT & SPI_STAT_RFNE_Msk) ? 0 : 1;
     return (SPIx->STAT & SPI_STAT_RFNE_Msk) ? 0 : 1;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_IsTXFull()
-* 功能说明:	发送FIFO是否满,如果不满则可以继续SPI_Write()
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
-* 输    出: uint32_t				1 发送FIFO满    0 发送FIFO不满
+/******************************************************************************************************************************************
+* 函数名称: SPI_IsTXFull()
+* 功能说明: 发送FIFO是否满,如果不满则可以继续SPI_Write()
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
+* 输    出: uint32_t              1 发送FIFO满    0 发送FIFO不满
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SPI_IsTXFull(SPI_TypeDef *SPIx)
 uint32_t SPI_IsTXFull(SPI_TypeDef *SPIx)
@@ -194,11 +194,11 @@ uint32_t SPI_IsTXFull(SPI_TypeDef *SPIx)
     return (SPIx->STAT & SPI_STAT_TFNF_Msk) ? 0 : 1;
     return (SPIx->STAT & SPI_STAT_TFNF_Msk) ? 0 : 1;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_IsTXEmpty()
-* 功能说明:	发送FIFO是否空
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
-* 输    出: uint32_t				1 发送FIFO空    0 发送FIFO非空
+/******************************************************************************************************************************************
+* 函数名称: SPI_IsTXEmpty()
+* 功能说明: 发送FIFO是否空
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
+* 输    出: uint32_t              1 发送FIFO空    0 发送FIFO非空
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SPI_IsTXEmpty(SPI_TypeDef *SPIx)
 uint32_t SPI_IsTXEmpty(SPI_TypeDef *SPIx)
@@ -206,10 +206,10 @@ uint32_t SPI_IsTXEmpty(SPI_TypeDef *SPIx)
     return (SPIx->STAT & SPI_STAT_TFE_Msk) ? 1 : 0;
     return (SPIx->STAT & SPI_STAT_TFE_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTRXHalfFullEn()
-* 功能说明:	接收FIFO半满中断使能
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTRXHalfFullEn()
+* 功能说明: 接收FIFO半满中断使能
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -218,10 +218,10 @@ void SPI_INTRXHalfFullEn(SPI_TypeDef *SPIx)
     SPIx->IE |= (0x01 << SPI_IE_RFHF_Pos);
     SPIx->IE |= (0x01 << SPI_IE_RFHF_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTRXHalfFullDis()
-* 功能说明:	接收FIFO半满中断禁止
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTRXHalfFullDis()
+* 功能说明: 接收FIFO半满中断禁止
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -230,10 +230,10 @@ void SPI_INTRXHalfFullDis(SPI_TypeDef *SPIx)
     SPIx->IE &= ~(0x01 << SPI_IE_RFHF_Pos);
     SPIx->IE &= ~(0x01 << SPI_IE_RFHF_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTRXHalfFullClr()
-* 功能说明:	接收FIFO半满中断标志清除
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTRXHalfFullClr()
+* 功能说明: 接收FIFO半满中断标志清除
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -242,11 +242,11 @@ void SPI_INTRXHalfFullClr(SPI_TypeDef *SPIx)
     SPIx->IF = (1 << SPI_IF_RFHF_Pos);
     SPIx->IF = (1 << SPI_IF_RFHF_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTRXHalfFullStat()
-* 功能说明:	接收FIFO半满中断状态
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
-* 输    出: uint32_t				1 接收FIFO达到半满    0 接收FIFO未达到半满
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTRXHalfFullStat()
+* 功能说明: 接收FIFO半满中断状态
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
+* 输    出: uint32_t              1 接收FIFO达到半满    0 接收FIFO未达到半满
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SPI_INTRXHalfFullStat(SPI_TypeDef *SPIx)
 uint32_t SPI_INTRXHalfFullStat(SPI_TypeDef *SPIx)
@@ -254,10 +254,10 @@ uint32_t SPI_INTRXHalfFullStat(SPI_TypeDef *SPIx)
     return (SPIx->IF & SPI_IF_RFHF_Msk) ? 1 : 0;
     return (SPIx->IF & SPI_IF_RFHF_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTRXFullEn()
-* 功能说明:	接收FIFO满中断使能
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTRXFullEn()
+* 功能说明: 接收FIFO满中断使能
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -266,10 +266,10 @@ void SPI_INTRXFullEn(SPI_TypeDef *SPIx)
     SPIx->IE |= (0x01 << SPI_IE_RFF_Pos);
     SPIx->IE |= (0x01 << SPI_IE_RFF_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTRXFullDis()
-* 功能说明:	接收FIFO满中断禁止
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTRXFullDis()
+* 功能说明: 接收FIFO满中断禁止
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -278,10 +278,10 @@ void SPI_INTRXFullDis(SPI_TypeDef *SPIx)
     SPIx->IE &= ~(0x01 << SPI_IE_RFF_Pos);
     SPIx->IE &= ~(0x01 << SPI_IE_RFF_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTRXFullClr()
-* 功能说明:	接收FIFO满中断标志清除
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTRXFullClr()
+* 功能说明: 接收FIFO满中断标志清除
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -290,11 +290,11 @@ void SPI_INTRXFullClr(SPI_TypeDef *SPIx)
     SPIx->IF = (1 << SPI_IF_RFF_Pos);
     SPIx->IF = (1 << SPI_IF_RFF_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTRXFullStat()
-* 功能说明:	接收FIFO满中断状态
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
-* 输    出: uint32_t				1 接收FIFO满    0 接收FIFO未满
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTRXFullStat()
+* 功能说明: 接收FIFO满中断状态
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
+* 输    出: uint32_t              1 接收FIFO满    0 接收FIFO未满
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SPI_INTRXFullStat(SPI_TypeDef *SPIx)
 uint32_t SPI_INTRXFullStat(SPI_TypeDef *SPIx)
@@ -302,10 +302,10 @@ uint32_t SPI_INTRXFullStat(SPI_TypeDef *SPIx)
     return (SPIx->IF & SPI_IF_RFF_Msk) ? 1 : 0;
     return (SPIx->IF & SPI_IF_RFF_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTRXOverflowEn()
-* 功能说明:	接收FIFO溢出中断使能
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTRXOverflowEn()
+* 功能说明: 接收FIFO溢出中断使能
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -314,10 +314,10 @@ void SPI_INTRXOverflowEn(SPI_TypeDef *SPIx)
     SPIx->IE |= (0x01 << SPI_IE_RFOVF_Pos);
     SPIx->IE |= (0x01 << SPI_IE_RFOVF_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTRXOverflowDis()
-* 功能说明:	接收FIFO溢出中断禁止
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTRXOverflowDis()
+* 功能说明: 接收FIFO溢出中断禁止
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -326,10 +326,10 @@ void SPI_INTRXOverflowDis(SPI_TypeDef *SPIx)
     SPIx->IE &= ~(0x01 << SPI_IE_RFOVF_Pos);
     SPIx->IE &= ~(0x01 << SPI_IE_RFOVF_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTRXOverflowClr()
-* 功能说明:	接收FIFO溢出中断标志清除
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTRXOverflowClr()
+* 功能说明: 接收FIFO溢出中断标志清除
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -338,11 +338,11 @@ void SPI_INTRXOverflowClr(SPI_TypeDef *SPIx)
     SPIx->IF = (0x01 << SPI_IF_RFOVF_Pos);
     SPIx->IF = (0x01 << SPI_IF_RFOVF_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTRXOverflowStat()
-* 功能说明:	接收FIFO溢出中断状态
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
-* 输    出: uint32_t				1 接收FIFO溢出    0 接收FIFO未溢出
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTRXOverflowStat()
+* 功能说明: 接收FIFO溢出中断状态
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
+* 输    出: uint32_t              1 接收FIFO溢出    0 接收FIFO未溢出
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SPI_INTRXOverflowStat(SPI_TypeDef *SPIx)
 uint32_t SPI_INTRXOverflowStat(SPI_TypeDef *SPIx)
@@ -350,10 +350,10 @@ uint32_t SPI_INTRXOverflowStat(SPI_TypeDef *SPIx)
     return (SPIx->IF & SPI_IF_RFOVF_Msk) ? 1 : 0;
     return (SPIx->IF & SPI_IF_RFOVF_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTTXHalfFullEn()
-* 功能说明:	发送FIFO半满中断使能
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTTXHalfFullEn()
+* 功能说明: 发送FIFO半满中断使能
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -362,10 +362,10 @@ void SPI_INTTXHalfFullEn(SPI_TypeDef *SPIx)
     SPIx->IE |= (0x01 << SPI_IE_TFHF_Pos);
     SPIx->IE |= (0x01 << SPI_IE_TFHF_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTTXHalfFullDis()
-* 功能说明:	发送FIFO半满中断禁止
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTTXHalfFullDis()
+* 功能说明: 发送FIFO半满中断禁止
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -374,10 +374,10 @@ void SPI_INTTXHalfFullDis(SPI_TypeDef *SPIx)
     SPIx->IE &= ~(0x01 << SPI_IE_TFHF_Pos);
     SPIx->IE &= ~(0x01 << SPI_IE_TFHF_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTTXHalfFullClr()
-* 功能说明:	发送FIFO半满中断标志清除
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTTXHalfFullClr()
+* 功能说明: 发送FIFO半满中断标志清除
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -386,11 +386,11 @@ void SPI_INTTXHalfFullClr(SPI_TypeDef *SPIx)
     SPIx->IF = (1 << SPI_IF_TFHF_Pos);
     SPIx->IF = (1 << SPI_IF_TFHF_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTTXHalfFullStat()
-* 功能说明:	发送FIFO半满中断状态
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
-* 输    出: uint32_t				1 发送FIFO达到半满    0 发送FIFO未达到半满
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTTXHalfFullStat()
+* 功能说明: 发送FIFO半满中断状态
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
+* 输    出: uint32_t              1 发送FIFO达到半满    0 发送FIFO未达到半满
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SPI_INTTXHalfFullStat(SPI_TypeDef *SPIx)
 uint32_t SPI_INTTXHalfFullStat(SPI_TypeDef *SPIx)
@@ -398,10 +398,10 @@ uint32_t SPI_INTTXHalfFullStat(SPI_TypeDef *SPIx)
     return (SPIx->IF & SPI_IF_TFHF_Msk) ? 1 : 0;
     return (SPIx->IF & SPI_IF_TFHF_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTTXEmptyEn()
-* 功能说明:	发送FIFO空中断使能
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTTXEmptyEn()
+* 功能说明: 发送FIFO空中断使能
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -410,10 +410,10 @@ void SPI_INTTXEmptyEn(SPI_TypeDef *SPIx)
     SPIx->IE |= (0x01 << SPI_IE_TFE_Pos);
     SPIx->IE |= (0x01 << SPI_IE_TFE_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTTXEmptyDis()
-* 功能说明:	发送FIFO空中断禁止
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTTXEmptyDis()
+* 功能说明: 发送FIFO空中断禁止
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -422,10 +422,10 @@ void SPI_INTTXEmptyDis(SPI_TypeDef *SPIx)
     SPIx->IE &= ~(0x01 << SPI_IE_TFE_Pos);
     SPIx->IE &= ~(0x01 << SPI_IE_TFE_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTTXEmptyClr()
-* 功能说明:	发送FIFO空中断标志清除
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTTXEmptyClr()
+* 功能说明: 发送FIFO空中断标志清除
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -434,11 +434,11 @@ void SPI_INTTXEmptyClr(SPI_TypeDef *SPIx)
     SPIx->IF = (1 << SPI_IF_TFE_Pos);
     SPIx->IF = (1 << SPI_IF_TFE_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTTXEmptyStat()
-* 功能说明:	发送FIFO空中断状态
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
-* 输    出: uint32_t				1 发送FIFO空    0 发送FIFO非空
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTTXEmptyStat()
+* 功能说明: 发送FIFO空中断状态
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
+* 输    出: uint32_t              1 发送FIFO空    0 发送FIFO非空
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SPI_INTTXEmptyStat(SPI_TypeDef *SPIx)
 uint32_t SPI_INTTXEmptyStat(SPI_TypeDef *SPIx)
@@ -446,10 +446,10 @@ uint32_t SPI_INTTXEmptyStat(SPI_TypeDef *SPIx)
     return (SPIx->IF & SPI_IF_TFE_Msk) ? 1 : 0;
     return (SPIx->IF & SPI_IF_TFE_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTTXCompleteEn()
-* 功能说明:	发送FIFO空且发送移位寄存器空中断使能
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTTXCompleteEn()
+* 功能说明: 发送FIFO空且发送移位寄存器空中断使能
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -458,10 +458,10 @@ void SPI_INTTXCompleteEn(SPI_TypeDef *SPIx)
     SPIx->IE |= (0x01 << SPI_IE_FTC_Pos);
     SPIx->IE |= (0x01 << SPI_IE_FTC_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTTXCompleteDis()
-* 功能说明:	发送FIFO空且发送移位寄存器空中断禁止
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTTXCompleteDis()
+* 功能说明: 发送FIFO空且发送移位寄存器空中断禁止
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -470,10 +470,10 @@ void SPI_INTTXCompleteDis(SPI_TypeDef *SPIx)
     SPIx->IE &= ~(0x01 << SPI_IE_FTC_Pos);
     SPIx->IE &= ~(0x01 << SPI_IE_FTC_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTTXCompleteClr()
-* 功能说明:	发送FIFO空且发送移位寄存器空中断状态清除
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTTXCompleteClr()
+* 功能说明: 发送FIFO空且发送移位寄存器空中断状态清除
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -482,11 +482,11 @@ void SPI_INTTXCompleteClr(SPI_TypeDef *SPIx)
     SPIx->IF = (1 << SPI_IF_FTC_Pos);
     SPIx->IF = (1 << SPI_IF_FTC_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTTXCompleteStat()
-* 功能说明:	发送FIFO空且发送移位寄存器空中断状态
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
-* 输    出: uint32_t				1 发送FIFO空且发送移位寄存器空    0 发送FIFO或发送移位寄存器非空
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTTXCompleteStat()
+* 功能说明: 发送FIFO空且发送移位寄存器空中断状态
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
+* 输    出: uint32_t              1 发送FIFO空且发送移位寄存器空    0 发送FIFO或发送移位寄存器非空
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SPI_INTTXCompleteStat(SPI_TypeDef *SPIx)
 uint32_t SPI_INTTXCompleteStat(SPI_TypeDef *SPIx)
@@ -494,10 +494,10 @@ uint32_t SPI_INTTXCompleteStat(SPI_TypeDef *SPIx)
     return (SPIx->IF & SPI_IF_FTC_Msk) ? 1 : 0;
     return (SPIx->IF & SPI_IF_FTC_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTTXWordCompleteEn()
-* 功能说明:	发送FIFO字发送完成中断使能
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTTXWordCompleteEn()
+* 功能说明: 发送FIFO字发送完成中断使能
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -506,10 +506,10 @@ void SPI_INTTXWordCompleteEn(SPI_TypeDef *SPIx)
     SPIx->IE |= (0x01 << SPI_IE_WTC_Pos);
     SPIx->IE |= (0x01 << SPI_IE_WTC_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTTXWordCompleteDis()
-* 功能说明:	发送FIFO字发送完成中断禁止
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTTXWordCompleteDis()
+* 功能说明: 发送FIFO字发送完成中断禁止
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -518,10 +518,10 @@ void SPI_INTTXWordCompleteDis(SPI_TypeDef *SPIx)
     SPIx->IE &= ~(0x01 << SPI_IE_WTC_Pos);
     SPIx->IE &= ~(0x01 << SPI_IE_WTC_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTTXWordCompleteClr()
-* 功能说明:	发送FIFO字发送完成中断标志清除
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTTXWordCompleteClr()
+* 功能说明: 发送FIFO字发送完成中断标志清除
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -530,11 +530,11 @@ void SPI_INTTXWordCompleteClr(SPI_TypeDef *SPIx)
     SPIx->IF = (1 << SPI_IF_WTC_Pos);
     SPIx->IF = (1 << SPI_IF_WTC_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SPI_INTTXWordCompleteStat()
-* 功能说明:	发送FIFO字发送完成中断状态
-* 输    入: SPI_TypeDef * SPIx		指定要被设置的SPI,有效值包括SPI0、SPI1
-* 输    出: uint32_t				1 发送完成中断已发生    0 发送完成中断未发生
+/******************************************************************************************************************************************
+* 函数名称: SPI_INTTXWordCompleteStat()
+* 功能说明: 发送FIFO字发送完成中断状态
+* 输    入: SPI_TypeDef * SPIx        指定要被设置的SPI,有效值包括SPI0、SPI1
+* 输    出: uint32_t              1 发送完成中断已发生    0 发送完成中断未发生
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t SPI_INTTXWordCompleteStat(SPI_TypeDef *SPIx)
 uint32_t SPI_INTTXWordCompleteStat(SPI_TypeDef *SPIx)

+ 12 - 12
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_sram.c

@@ -1,29 +1,29 @@
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 文件名称: SWM320_sram.c
 * 文件名称: SWM320_sram.c
-* 功能说明:	SWM320单片机的SRAM驱动程序
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
+* 功能说明: SWM320单片机的SRAM驱动程序
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
 * 注意事项:
 * 注意事项:
-* 版本日期: V1.1.0		2017年10月25日
-* 升级记录: 
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
-* COPYRIGHT 2012 Synwit Technology 
+* COPYRIGHT 2012 Synwit Technology
 *******************************************************************************************************************************************/
 *******************************************************************************************************************************************/
 #include "SWM320.h"
 #include "SWM320.h"
 #include "SWM320_sram.h"
 #include "SWM320_sram.h"
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	SRAM_Init()
-* 功能说明:	SRAM控制器初始化
+/******************************************************************************************************************************************
+* 函数名称: SRAM_Init()
+* 功能说明: SRAM控制器初始化
 * 输    入: SRAM_InitStructure * initStruct    包含 SRAM 控制器相关设定值的结构体
 * 输    入: SRAM_InitStructure * initStruct    包含 SRAM 控制器相关设定值的结构体
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无

+ 68 - 68
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_timr.c

@@ -1,33 +1,33 @@
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 文件名称: SWM320_timr.c
 * 文件名称: SWM320_timr.c
-* 功能说明:	SWM320单片机的计数器/定时器功能驱动库
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
+* 功能说明: SWM320单片机的计数器/定时器功能驱动库
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
 * 注意事项:
 * 注意事项:
-* 版本日期:	V1.1.0		2017年10月25日
-* 升级记录: 
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
-* COPYRIGHT 2012 Synwit Technology 
+* COPYRIGHT 2012 Synwit Technology
 *******************************************************************************************************************************************/
 *******************************************************************************************************************************************/
 #include "SWM320.h"
 #include "SWM320.h"
 #include "SWM320_timr.h"
 #include "SWM320_timr.h"
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: TIMR_Init()
 * 函数名称: TIMR_Init()
-* 功能说明:	TIMR定时器/计数器初始化
-* 输    入: TIMR_TypeDef * TIMRx	指定要被设置的定时器,有效值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
-*			uint32_t mode			TIMR_MODE_TIMER 定时器模式    TIMR_MODE_COUNTER 计数器模式
-*			uint32_t period			定时/计数周期
-*			uint32_t int_en			中断使能
+* 功能说明: TIMR定时器/计数器初始化
+* 输    入: TIMR_TypeDef * TIMRx  指定要被设置的定时器,有效值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
+*           uint32_t mode           TIMR_MODE_TIMER 定时器模式    TIMR_MODE_COUNTER 计数器模式
+*           uint32_t period         定时/计数周期
+*           uint32_t int_en         中断使能
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -100,10 +100,10 @@ void TIMR_Init(TIMR_TypeDef *TIMRx, uint32_t mode, uint32_t period, uint32_t int
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	TIMR_Start()
-* 功能说明:	启动定时器,从初始值开始计时/计数
-* 输    入: TIMR_TypeDef * TIMRx	指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
+/******************************************************************************************************************************************
+* 函数名称: TIMR_Start()
+* 功能说明: 启动定时器,从初始值开始计时/计数
+* 输    入: TIMR_TypeDef * TIMRx  指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -112,10 +112,10 @@ void TIMR_Start(TIMR_TypeDef *TIMRx)
     TIMRx->CTRL |= TIMR_CTRL_EN_Msk;
     TIMRx->CTRL |= TIMR_CTRL_EN_Msk;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	TIMR_Stop()
-* 功能说明:	停止定时器
-* 输    入: TIMR_TypeDef * TIMRx	指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
+/******************************************************************************************************************************************
+* 函数名称: TIMR_Stop()
+* 功能说明: 停止定时器
+* 输    入: TIMR_TypeDef * TIMRx  指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -124,10 +124,10 @@ void TIMR_Stop(TIMR_TypeDef *TIMRx)
     TIMRx->CTRL &= ~TIMR_CTRL_EN_Msk;
     TIMRx->CTRL &= ~TIMR_CTRL_EN_Msk;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	TIMR_Halt()
-* 功能说明:	暂停定时器,计数值保持不变
-* 输    入: TIMR_TypeDef * TIMRx	指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
+/******************************************************************************************************************************************
+* 函数名称: TIMR_Halt()
+* 功能说明: 暂停定时器,计数值保持不变
+* 输    入: TIMR_TypeDef * TIMRx  指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -161,10 +161,10 @@ void TIMR_Halt(TIMR_TypeDef *TIMRx)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	TIMR_Resume()
-* 功能说明:	恢复定时器,从暂停处继续计数
-* 输    入: TIMR_TypeDef * TIMRx	指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
+/******************************************************************************************************************************************
+* 函数名称: TIMR_Resume()
+* 功能说明: 恢复定时器,从暂停处继续计数
+* 输    入: TIMR_TypeDef * TIMRx  指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -198,11 +198,11 @@ void TIMR_Resume(TIMR_TypeDef *TIMRx)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: TIMR_SetPeriod()
 * 函数名称: TIMR_SetPeriod()
-* 功能说明:	设置定时/计数周期
-* 输    入: TIMR_TypeDef * TIMRx	指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
-*			uint32_t period			定时/计数周期
+* 功能说明: 设置定时/计数周期
+* 输    入: TIMR_TypeDef * TIMRx  指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
+*           uint32_t period         定时/计数周期
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -211,11 +211,11 @@ void TIMR_SetPeriod(TIMR_TypeDef *TIMRx, uint32_t period)
     TIMRx->LDVAL = period;
     TIMRx->LDVAL = period;
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: TIMR_GetPeriod()
 * 函数名称: TIMR_GetPeriod()
-* 功能说明:	获取定时/计数周期
-* 输    入: TIMR_TypeDef * TIMRx	指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
-* 输    出: uint32_t				当前定时/计数周期
+* 功能说明: 获取定时/计数周期
+* 输    入: TIMR_TypeDef * TIMRx  指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
+* 输    出: uint32_t              当前定时/计数周期
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t TIMR_GetPeriod(TIMR_TypeDef *TIMRx)
 uint32_t TIMR_GetPeriod(TIMR_TypeDef *TIMRx)
@@ -223,11 +223,11 @@ uint32_t TIMR_GetPeriod(TIMR_TypeDef *TIMRx)
     return TIMRx->LDVAL;
     return TIMRx->LDVAL;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	TIMR_GetCurValue()
-* 功能说明:	获取当前计数值
-* 输    入: TIMR_TypeDef * TIMRx	指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
-* 输    出: uint32_t				当前计数值
+/******************************************************************************************************************************************
+* 函数名称: TIMR_GetCurValue()
+* 功能说明: 获取当前计数值
+* 输    入: TIMR_TypeDef * TIMRx  指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
+* 输    出: uint32_t              当前计数值
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t TIMR_GetCurValue(TIMR_TypeDef *TIMRx)
 uint32_t TIMR_GetCurValue(TIMR_TypeDef *TIMRx)
@@ -235,10 +235,10 @@ uint32_t TIMR_GetCurValue(TIMR_TypeDef *TIMRx)
     return TIMRx->CVAL;
     return TIMRx->CVAL;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	TIMR_INTEn()
-* 功能说明:	使能中断
-* 输    入: TIMR_TypeDef * TIMRx	指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
+/******************************************************************************************************************************************
+* 函数名称: TIMR_INTEn()
+* 功能说明: 使能中断
+* 输    入: TIMR_TypeDef * TIMRx  指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -278,10 +278,10 @@ void TIMR_INTEn(TIMR_TypeDef *TIMRx)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: TIMR_INTDis()
 * 函数名称: TIMR_INTDis()
-* 功能说明:	禁能中断
-* 输    入: TIMR_TypeDef * TIMRx	指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
+* 功能说明: 禁能中断
+* 输    入: TIMR_TypeDef * TIMRx  指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -315,10 +315,10 @@ void TIMR_INTDis(TIMR_TypeDef *TIMRx)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	TIMR_INTClr()
-* 功能说明:	清除中断标志
-* 输    入: TIMR_TypeDef * TIMRx	指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
+/******************************************************************************************************************************************
+* 函数名称: TIMR_INTClr()
+* 功能说明: 清除中断标志
+* 输    入: TIMR_TypeDef * TIMRx  指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -352,11 +352,11 @@ void TIMR_INTClr(TIMR_TypeDef *TIMRx)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: TIMR_INTStat()
 * 函数名称: TIMR_INTStat()
-* 功能说明:	获取中断状态
-* 输    入: TIMR_TypeDef * TIMRx	指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
-* 输    出: uint32_t 				0 TIMRx未产生中断    1 TIMRx产生了中断
+* 功能说明: 获取中断状态
+* 输    入: TIMR_TypeDef * TIMRx  指定要被设置的定时器,可取值包括TIMR0、TIMR1、TIMR2、TIMR3、TIMR4、TIMR5
+* 输    出: uint32_t              0 TIMRx未产生中断    1 TIMRx产生了中断
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t TIMR_INTStat(TIMR_TypeDef *TIMRx)
 uint32_t TIMR_INTStat(TIMR_TypeDef *TIMRx)
@@ -385,11 +385,11 @@ uint32_t TIMR_INTStat(TIMR_TypeDef *TIMRx)
     return 0;
     return 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: Pulse_Init()
 * 函数名称: Pulse_Init()
-* 功能说明:	脉宽测量功能初始化
-* 输    入: uint32_t pulse			PULSE_LOW 测量低脉冲宽度   PULSE_HIGH 测量高脉冲宽度
-*			uint32_t int_en			是否使能脉冲测量完成中断
+* 功能说明: 脉宽测量功能初始化
+* 输    入: uint32_t pulse            PULSE_LOW 测量低脉冲宽度   PULSE_HIGH 测量高脉冲宽度
+*           uint32_t int_en         是否使能脉冲测量完成中断
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -407,9 +407,9 @@ void Pulse_Init(uint32_t pulse, uint32_t int_en)
         NVIC_EnableIRQ(PULSE_IRQn);
         NVIC_EnableIRQ(PULSE_IRQn);
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: Pulse_Start()
 * 函数名称: Pulse_Start()
-* 功能说明:	脉宽测量功能启动,测量到脉宽后会自动关闭测量功能
+* 功能说明: 脉宽测量功能启动,测量到脉宽后会自动关闭测量功能
 * 输    入: 无
 * 输    入: 无
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
@@ -419,11 +419,11 @@ void Pulse_Start(void)
     TIMRG->PCTRL |= (1 << TIMRG_PCTRL_EN_Pos);
     TIMRG->PCTRL |= (1 << TIMRG_PCTRL_EN_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 函数名称: Pulse_Done()
 * 函数名称: Pulse_Done()
-* 功能说明:	脉宽测量是否完成
+* 功能说明: 脉宽测量是否完成
 * 输    入: 无
 * 输    入: 无
-* 输    出: uint32_t				1 测量已完成    0 测量未完成
+* 输    出: uint32_t              1 测量已完成    0 测量未完成
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t Pulse_Done(void)
 uint32_t Pulse_Done(void)

+ 168 - 168
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_uart.c

@@ -1,31 +1,31 @@
-/****************************************************************************************************************************************** 
-* 文件名称:	SWM320_uart.c
-* 功能说明:	SWM320单片机的UART串口功能驱动库
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
+/******************************************************************************************************************************************
+* 文件名称: SWM320_uart.c
+* 功能说明: SWM320单片机的UART串口功能驱动库
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
 * 注意事项: 没有编写LIN功能相关的函数
 * 注意事项: 没有编写LIN功能相关的函数
-* 版本日期:	V1.1.0		2017年10月25日
-* 升级记录: 
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
-* COPYRIGHT 2012 Synwit Technology 
+* COPYRIGHT 2012 Synwit Technology
 *******************************************************************************************************************************************/
 *******************************************************************************************************************************************/
 #include "SWM320.h"
 #include "SWM320.h"
 #include "SWM320_uart.h"
 #include "SWM320_uart.h"
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_Init()
-* 功能说明:	UART串口初始化
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-*			UART_InitStructure * initStruct    包含UART串口相关设定值的结构体
+/******************************************************************************************************************************************
+* 函数名称: UART_Init()
+* 功能说明: UART串口初始化
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+*           UART_InitStructure * initStruct    包含UART串口相关设定值的结构体
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -62,8 +62,8 @@ void UART_Init(UART_TypeDef *UARTx, UART_InitStructure *initStruct)
                    (initStruct->StopBits << UART_CTRL_STOP2b_Pos);
                    (initStruct->StopBits << UART_CTRL_STOP2b_Pos);
 
 
     /* 在SWM320中,当 RXLVL >= RXTHR 时触发中断,如果RXTHR设置为0的话,在未接收到数据时就会一直触发中断;
     /* 在SWM320中,当 RXLVL >= RXTHR 时触发中断,如果RXTHR设置为0的话,在未接收到数据时就会一直触发中断;
-	   其他芯片中,当 RXLVL >  RXTHR 时触发中断,为解决SWM320中RXTHR不能为0的问题,并统一库函数API,这里将RXTHR设置值加一
-	*/
+       其他芯片中,当 RXLVL >  RXTHR 时触发中断,为解决SWM320中RXTHR不能为0的问题,并统一库函数API,这里将RXTHR设置值加一
+    */
     switch ((uint32_t)UARTx) // 软件复位不能清零 NVIC 寄存器,若不手动清除,下面的代码清零 RXTHR 时会导致一直进入 ISR
     switch ((uint32_t)UARTx) // 软件复位不能清零 NVIC 寄存器,若不手动清除,下面的代码清零 RXTHR 时会导致一直进入 ISR
     {
     {
     case ((uint32_t)UART0):
     case ((uint32_t)UART0):
@@ -139,10 +139,10 @@ void UART_Init(UART_TypeDef *UARTx, UART_InitStructure *initStruct)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_Open()
-* 功能说明:	UART串口打开
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+/******************************************************************************************************************************************
+* 函数名称: UART_Open()
+* 功能说明: UART串口打开
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -151,10 +151,10 @@ void UART_Open(UART_TypeDef *UARTx)
     UARTx->CTRL |= (0x01 << UART_CTRL_EN_Pos);
     UARTx->CTRL |= (0x01 << UART_CTRL_EN_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_Close()
-* 功能说明:	UART串口关闭
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+/******************************************************************************************************************************************
+* 函数名称: UART_Close()
+* 功能说明: UART串口关闭
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -163,11 +163,11 @@ void UART_Close(UART_TypeDef *UARTx)
     UARTx->CTRL &= ~(0x01 << UART_CTRL_EN_Pos);
     UARTx->CTRL &= ~(0x01 << UART_CTRL_EN_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_WriteByte()
-* 功能说明:	发送一个字节数据
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,可取值包括UART0、UART1、UART2、UART3、UART4
-*			uint32_t data			要发送的字节			
+/******************************************************************************************************************************************
+* 函数名称: UART_WriteByte()
+* 功能说明: 发送一个字节数据
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,可取值包括UART0、UART1、UART2、UART3、UART4
+*           uint32_t data           要发送的字节
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -176,12 +176,12 @@ void UART_WriteByte(UART_TypeDef *UARTx, uint32_t data)
     UARTx->DATA = data;
     UARTx->DATA = data;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_ReadByte()
-* 功能说明:	读取一个字节数据,并指出数据是否Valid
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,可取值包括UART0、UART1、UART2、UART3、UART4
-*			uint32_t * data			接收到的数据
-* 输    出: uint32_t				0 无错误    UART_ERR_PARITY 奇偶校验错误
+/******************************************************************************************************************************************
+* 函数名称: UART_ReadByte()
+* 功能说明: 读取一个字节数据,并指出数据是否Valid
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,可取值包括UART0、UART1、UART2、UART3、UART4
+*           uint32_t * data         接收到的数据
+* 输    出: uint32_t              0 无错误    UART_ERR_PARITY 奇偶校验错误
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t UART_ReadByte(UART_TypeDef *UARTx, uint32_t *data)
 uint32_t UART_ReadByte(UART_TypeDef *UARTx, uint32_t *data)
@@ -196,11 +196,11 @@ uint32_t UART_ReadByte(UART_TypeDef *UARTx, uint32_t *data)
     return 0;
     return 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_IsTXBusy()
-* 功能说明:	UART是否正在发送数据
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-* 输    出: uint32_t				1 UART正在发送数据    0 数据已发完
+/******************************************************************************************************************************************
+* 函数名称: UART_IsTXBusy()
+* 功能说明: UART是否正在发送数据
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+* 输    出: uint32_t              1 UART正在发送数据    0 数据已发完
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t UART_IsTXBusy(UART_TypeDef *UARTx)
 uint32_t UART_IsTXBusy(UART_TypeDef *UARTx)
@@ -208,11 +208,11 @@ uint32_t UART_IsTXBusy(UART_TypeDef *UARTx)
     return (UARTx->CTRL & UART_CTRL_TXIDLE_Msk) ? 0 : 1;
     return (UARTx->CTRL & UART_CTRL_TXIDLE_Msk) ? 0 : 1;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_IsRXFIFOEmpty()
-* 功能说明:	接收FIFO是否为空,如果不空则说明其中有数据可以读取
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-* 输    出: uint32_t				1 接收FIFO空    0 接收FIFO非空
+/******************************************************************************************************************************************
+* 函数名称: UART_IsRXFIFOEmpty()
+* 功能说明: 接收FIFO是否为空,如果不空则说明其中有数据可以读取
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+* 输    出: uint32_t              1 接收FIFO空    0 接收FIFO非空
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t UART_IsRXFIFOEmpty(UART_TypeDef *UARTx)
 uint32_t UART_IsRXFIFOEmpty(UART_TypeDef *UARTx)
@@ -220,11 +220,11 @@ uint32_t UART_IsRXFIFOEmpty(UART_TypeDef *UARTx)
     return (UARTx->CTRL & UART_CTRL_RXNE_Msk) ? 0 : 1;
     return (UARTx->CTRL & UART_CTRL_RXNE_Msk) ? 0 : 1;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_IsTXFIFOFull()
-* 功能说明:	发送FIFO是否为满,如果不满则可以继续向其中写入数据
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-* 输    出: uint32_t				1 发送FIFO满    0 发送FIFO不满
+/******************************************************************************************************************************************
+* 函数名称: UART_IsTXFIFOFull()
+* 功能说明: 发送FIFO是否为满,如果不满则可以继续向其中写入数据
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+* 输    出: uint32_t              1 发送FIFO满    0 发送FIFO不满
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t UART_IsTXFIFOFull(UART_TypeDef *UARTx)
 uint32_t UART_IsTXFIFOFull(UART_TypeDef *UARTx)
@@ -232,11 +232,11 @@ uint32_t UART_IsTXFIFOFull(UART_TypeDef *UARTx)
     return (UARTx->CTRL & UART_CTRL_TXFF_Msk) ? 1 : 0;
     return (UARTx->CTRL & UART_CTRL_TXFF_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_SetBaudrate()
-* 功能说明:	设置波特率
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-*			uint32_t baudrate		要设置的波特率
+/******************************************************************************************************************************************
+* 函数名称: UART_SetBaudrate()
+* 功能说明: 设置波特率
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+*           uint32_t baudrate       要设置的波特率
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 不要在串口工作时更改波特率,使用此函数前请先调用UART_Close()关闭串口
 * 注意事项: 不要在串口工作时更改波特率,使用此函数前请先调用UART_Close()关闭串口
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -246,11 +246,11 @@ void UART_SetBaudrate(UART_TypeDef *UARTx, uint32_t baudrate)
     UARTx->BAUD |= ((SystemCoreClock / 16 / baudrate - 1) << UART_BAUD_BAUD_Pos);
     UARTx->BAUD |= ((SystemCoreClock / 16 / baudrate - 1) << UART_BAUD_BAUD_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_GetBaudrate()
-* 功能说明:	查询波特率
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-* 输    出: uint32_t				当前波特率
+/******************************************************************************************************************************************
+* 函数名称: UART_GetBaudrate()
+* 功能说明: 查询波特率
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+* 输    出: uint32_t              当前波特率
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t UART_GetBaudrate(UART_TypeDef *UARTx)
 uint32_t UART_GetBaudrate(UART_TypeDef *UARTx)
@@ -258,12 +258,12 @@ uint32_t UART_GetBaudrate(UART_TypeDef *UARTx)
     return SystemCoreClock / 16 / (((UARTx->BAUD & UART_BAUD_BAUD_Msk) >> UART_BAUD_BAUD_Pos) + 1);
     return SystemCoreClock / 16 / (((UARTx->BAUD & UART_BAUD_BAUD_Msk) >> UART_BAUD_BAUD_Pos) + 1);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_CTSConfig()
-* 功能说明:	UART CTS流控配置
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-*			uint32_t enable			1 使能CTS流控    0 禁止CTS流控
-*			uint32_t polarity		0 CTS输入为低表示可以发送数据    1 CTS输入为高表示可以发送数据
+/******************************************************************************************************************************************
+* 函数名称: UART_CTSConfig()
+* 功能说明: UART CTS流控配置
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+*           uint32_t enable         1 使能CTS流控    0 禁止CTS流控
+*           uint32_t polarity       0 CTS输入为低表示可以发送数据    1 CTS输入为高表示可以发送数据
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -274,11 +274,11 @@ void UART_CTSConfig(UART_TypeDef *UARTx, uint32_t enable, uint32_t polarity)
                     (polarity << UART_CTSCR_POL_Pos);
                     (polarity << UART_CTSCR_POL_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_CTSLineState()
-* 功能说明:	UART CTS线当前状态
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-* 输    出: uint32_t				0 CTS线当前为低电平    1 CTS线当前为高电平
+/******************************************************************************************************************************************
+* 函数名称: UART_CTSLineState()
+* 功能说明: UART CTS线当前状态
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+* 输    出: uint32_t              0 CTS线当前为低电平    1 CTS线当前为高电平
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t UART_CTSLineState(UART_TypeDef *UARTx)
 uint32_t UART_CTSLineState(UART_TypeDef *UARTx)
@@ -286,13 +286,13 @@ uint32_t UART_CTSLineState(UART_TypeDef *UARTx)
     return (UARTx->CTSCR & UART_CTSCR_STAT_Msk) ? 1 : 0;
     return (UARTx->CTSCR & UART_CTSCR_STAT_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_RTSConfig()
-* 功能说明:	UART RTS流控配置
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-*			uint32_t enable			1 使能RTS流控    0 禁止RTS流控
-*			uint32_t polarity		0 RTS输出低表示可以接收数据    1 RTS输出高表示可以接收数据
-*			uint32_t threshold		RTS流控的触发阈值,可取值UART_RTS_1BYTE、UART_RTS_2BYTE、UART_RTS_4BYTE、UART_RTS_6BYTE
+/******************************************************************************************************************************************
+* 函数名称: UART_RTSConfig()
+* 功能说明: UART RTS流控配置
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+*           uint32_t enable         1 使能RTS流控    0 禁止RTS流控
+*           uint32_t polarity       0 RTS输出低表示可以接收数据    1 RTS输出高表示可以接收数据
+*           uint32_t threshold      RTS流控的触发阈值,可取值UART_RTS_1BYTE、UART_RTS_2BYTE、UART_RTS_4BYTE、UART_RTS_6BYTE
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -304,11 +304,11 @@ void UART_RTSConfig(UART_TypeDef *UARTx, uint32_t enable, uint32_t polarity, uin
                     (threshold << UART_RTSCR_THR_Pos);
                     (threshold << UART_RTSCR_THR_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_RTSLineState()
-* 功能说明:	UART RTS线当前状态
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-* 输    出: uint32_t				0 RTS线当前为低电平    1 RTS线当前为高电平
+/******************************************************************************************************************************************
+* 函数名称: UART_RTSLineState()
+* 功能说明: UART RTS线当前状态
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+* 输    出: uint32_t              0 RTS线当前为低电平    1 RTS线当前为高电平
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t UART_RTSLineState(UART_TypeDef *UARTx)
 uint32_t UART_RTSLineState(UART_TypeDef *UARTx)
@@ -316,12 +316,12 @@ uint32_t UART_RTSLineState(UART_TypeDef *UARTx)
     return (UARTx->RTSCR & UART_RTSCR_STAT_Msk) ? 1 : 0;
     return (UARTx->RTSCR & UART_RTSCR_STAT_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_LINConfig()
-* 功能说明:	UART LIN功能配置
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-*			uint32_t detectedIEn	检测到Break中断使能
-*			uint32_t generatedIEn	Break发送完成中断使能
+/******************************************************************************************************************************************
+* 函数名称: UART_LINConfig()
+* 功能说明: UART LIN功能配置
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+*           uint32_t detectedIEn    检测到Break中断使能
+*           uint32_t generatedIEn   Break发送完成中断使能
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -332,10 +332,10 @@ void UART_LINConfig(UART_TypeDef *UARTx, uint32_t detectedIEn, uint32_t generate
                     (generatedIEn << UART_LINCR_GENBRKIE_Pos);
                     (generatedIEn << UART_LINCR_GENBRKIE_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_LINGenerate()
-* 功能说明:	UART LIN产生/发送Break
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+/******************************************************************************************************************************************
+* 函数名称: UART_LINGenerate()
+* 功能说明: UART LIN产生/发送Break
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -344,11 +344,11 @@ void UART_LINGenerate(UART_TypeDef *UARTx)
     UARTx->LINCR |= (1 << UART_LINCR_GENBRK_Pos);
     UARTx->LINCR |= (1 << UART_LINCR_GENBRK_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_LINIsDetected()
-* 功能说明:	UART LIN是否检测到Break
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-* 输    出: uint32_t				1 检测到LIN Break    0 未检测到LIN Break
+/******************************************************************************************************************************************
+* 函数名称: UART_LINIsDetected()
+* 功能说明: UART LIN是否检测到Break
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+* 输    出: uint32_t              1 检测到LIN Break    0 未检测到LIN Break
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t UART_LINIsDetected(UART_TypeDef *UARTx)
 uint32_t UART_LINIsDetected(UART_TypeDef *UARTx)
@@ -356,11 +356,11 @@ uint32_t UART_LINIsDetected(UART_TypeDef *UARTx)
     return (UARTx->LINCR & UART_LINCR_BRKDETIF_Msk) ? 1 : 0;
     return (UARTx->LINCR & UART_LINCR_BRKDETIF_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_LINIsGenerated()
-* 功能说明:	UART LIN Break是否发送完成
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-* 输    出: uint32_t				1 LIN Break 发送完成    0 LIN Break发送未完成
+/******************************************************************************************************************************************
+* 函数名称: UART_LINIsGenerated()
+* 功能说明: UART LIN Break是否发送完成
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+* 输    出: uint32_t              1 LIN Break 发送完成    0 LIN Break发送未完成
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t UART_LINIsGenerated(UART_TypeDef *UARTx)
 uint32_t UART_LINIsGenerated(UART_TypeDef *UARTx)
@@ -368,13 +368,13 @@ uint32_t UART_LINIsGenerated(UART_TypeDef *UARTx)
     return (UARTx->LINCR & UART_LINCR_GENBRKIF_Msk) ? 1 : 0;
     return (UARTx->LINCR & UART_LINCR_GENBRKIF_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_ABRStart()
-* 功能说明:	UART 自动波特率检测开始
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-*			uint32_t detectChar		用于自动检测、计算波特率的检测字符
-*									8位数据时可取值:0xFF、0xFE、0xF8、0x80,分别表示发送方必须发送0xFF、0xFE、0xF8、0x80
-*									9位数据时可取值:0x1FF、0x1FE、0x1F8、0x180,分别表示发送方必须发送0x1FF、0x1FE、0x1F8、0x180
+/******************************************************************************************************************************************
+* 函数名称: UART_ABRStart()
+* 功能说明: UART 自动波特率检测开始
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+*           uint32_t detectChar     用于自动检测、计算波特率的检测字符
+*                                   8位数据时可取值:0xFF、0xFE、0xF8、0x80,分别表示发送方必须发送0xFF、0xFE、0xF8、0x80
+*                                   9位数据时可取值:0x1FF、0x1FE、0x1F8、0x180,分别表示发送方必须发送0x1FF、0x1FE、0x1F8、0x180
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 自动波特率检测时不能开启奇偶校验
 * 注意事项: 自动波特率检测时不能开启奇偶校验
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -399,11 +399,11 @@ void UART_ABRStart(UART_TypeDef *UARTx, uint32_t detectChar)
                    (bits << UART_BAUD_ABRBIT_Pos);
                    (bits << UART_BAUD_ABRBIT_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_ABRIsDone()
-* 功能说明:	UART 自动波特率是否完成
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-* 输    出: uint32_t				0 未完成    UART_ABR_RES_OK 已完成,且成功    UART_ABR_RES_ERR 已完成,但失败、出错
+/******************************************************************************************************************************************
+* 函数名称: UART_ABRIsDone()
+* 功能说明: UART 自动波特率是否完成
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+* 输    出: uint32_t              0 未完成    UART_ABR_RES_OK 已完成,且成功    UART_ABR_RES_ERR 已完成,但失败、出错
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t UART_ABRIsDone(UART_TypeDef *UARTx)
 uint32_t UART_ABRIsDone(UART_TypeDef *UARTx)
@@ -422,10 +422,10 @@ uint32_t UART_ABRIsDone(UART_TypeDef *UARTx)
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_INTRXThresholdEn()
-* 功能说明:	当RX FIFO中数据个数 >= RXThreshold时 触发中断
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+/******************************************************************************************************************************************
+* 函数名称: UART_INTRXThresholdEn()
+* 功能说明: 当RX FIFO中数据个数 >= RXThreshold时 触发中断
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -434,10 +434,10 @@ void UART_INTRXThresholdEn(UART_TypeDef *UARTx)
     UARTx->CTRL |= (0x01 << UART_CTRL_RXIE_Pos);
     UARTx->CTRL |= (0x01 << UART_CTRL_RXIE_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_INTRXThresholdDis()
-* 功能说明:	当RX FIFO中数据个数 >= RXThreshold时 不触发中断
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+/******************************************************************************************************************************************
+* 函数名称: UART_INTRXThresholdDis()
+* 功能说明: 当RX FIFO中数据个数 >= RXThreshold时 不触发中断
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -446,11 +446,11 @@ void UART_INTRXThresholdDis(UART_TypeDef *UARTx)
     UARTx->CTRL &= ~(0x01 << UART_CTRL_RXIE_Pos);
     UARTx->CTRL &= ~(0x01 << UART_CTRL_RXIE_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_INTRXThresholdStat()
-* 功能说明:	是否RX FIFO中数据个数 >= RXThreshold
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-* 输    出: uint32_t				1 RX FIFO中数据个数 >= RXThreshold		0 RX FIFO中数据个数 < RXThreshold
+/******************************************************************************************************************************************
+* 函数名称: UART_INTRXThresholdStat()
+* 功能说明: 是否RX FIFO中数据个数 >= RXThreshold
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+* 输    出: uint32_t              1 RX FIFO中数据个数 >= RXThreshold       0 RX FIFO中数据个数 < RXThreshold
 * 注意事项: RXIF = RXTHRF & RXIE
 * 注意事项: RXIF = RXTHRF & RXIE
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t UART_INTRXThresholdStat(UART_TypeDef *UARTx)
 uint32_t UART_INTRXThresholdStat(UART_TypeDef *UARTx)
@@ -458,10 +458,10 @@ uint32_t UART_INTRXThresholdStat(UART_TypeDef *UARTx)
     return (UARTx->BAUD & UART_BAUD_RXIF_Msk) ? 1 : 0;
     return (UARTx->BAUD & UART_BAUD_RXIF_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_INTTXThresholdEn()
-* 功能说明:	当TX FIFO中数据个数 <= TXThreshold时 触发中断
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+/******************************************************************************************************************************************
+* 函数名称: UART_INTTXThresholdEn()
+* 功能说明: 当TX FIFO中数据个数 <= TXThreshold时 触发中断
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -470,10 +470,10 @@ void UART_INTTXThresholdEn(UART_TypeDef *UARTx)
     UARTx->CTRL |= (0x01 << UART_CTRL_TXIE_Pos);
     UARTx->CTRL |= (0x01 << UART_CTRL_TXIE_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_INTTXThresholdDis()
-* 功能说明:	当TX FIFO中数据个数 <= TXThreshold时 不触发中断
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+/******************************************************************************************************************************************
+* 函数名称: UART_INTTXThresholdDis()
+* 功能说明: 当TX FIFO中数据个数 <= TXThreshold时 不触发中断
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -482,11 +482,11 @@ void UART_INTTXThresholdDis(UART_TypeDef *UARTx)
     UARTx->CTRL &= ~(0x01 << UART_CTRL_TXIE_Pos);
     UARTx->CTRL &= ~(0x01 << UART_CTRL_TXIE_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_INTTXThresholdStat()
-* 功能说明:	是否TX FIFO中数据个数 <= TXThreshold
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-* 输    出: uint32_t				1 TX FIFO中数据个数 <= TXThreshold		0 TX FIFO中数据个数 > TXThreshold
+/******************************************************************************************************************************************
+* 函数名称: UART_INTTXThresholdStat()
+* 功能说明: 是否TX FIFO中数据个数 <= TXThreshold
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+* 输    出: uint32_t              1 TX FIFO中数据个数 <= TXThreshold       0 TX FIFO中数据个数 > TXThreshold
 * 注意事项: TXIF = TXTHRF & TXIE
 * 注意事项: TXIF = TXTHRF & TXIE
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t UART_INTTXThresholdStat(UART_TypeDef *UARTx)
 uint32_t UART_INTTXThresholdStat(UART_TypeDef *UARTx)
@@ -494,10 +494,10 @@ uint32_t UART_INTTXThresholdStat(UART_TypeDef *UARTx)
     return (UARTx->BAUD & UART_BAUD_TXIF_Msk) ? 1 : 0;
     return (UARTx->BAUD & UART_BAUD_TXIF_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_INTTimeoutEn()
-* 功能说明:	接收发生超时时 触发中断
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+/******************************************************************************************************************************************
+* 函数名称: UART_INTTimeoutEn()
+* 功能说明: 接收发生超时时 触发中断
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -506,10 +506,10 @@ void UART_INTTimeoutEn(UART_TypeDef *UARTx)
     UARTx->CTRL |= (0x01 << UART_CTRL_TOIE_Pos);
     UARTx->CTRL |= (0x01 << UART_CTRL_TOIE_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_INTTimeoutDis()
-* 功能说明:	接收发生超时时 不触发中断
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+/******************************************************************************************************************************************
+* 函数名称: UART_INTTimeoutDis()
+* 功能说明: 接收发生超时时 不触发中断
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -518,11 +518,11 @@ void UART_INTTimeoutDis(UART_TypeDef *UARTx)
     UARTx->CTRL &= ~(0x01 << UART_CTRL_TOIE_Pos);
     UARTx->CTRL &= ~(0x01 << UART_CTRL_TOIE_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_INTTimeoutStat()
-* 功能说明:	是否发生了接收超时,即超过 TimeoutTime/(Baudrate/10) 秒没有在RX线上接收到数据时触发中断
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-* 输    出: uint32_t				1 发生了接收超时		0 未发生接收超时
+/******************************************************************************************************************************************
+* 函数名称: UART_INTTimeoutStat()
+* 功能说明: 是否发生了接收超时,即超过 TimeoutTime/(Baudrate/10) 秒没有在RX线上接收到数据时触发中断
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+* 输    出: uint32_t              1 发生了接收超时       0 未发生接收超时
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t UART_INTTimeoutStat(UART_TypeDef *UARTx)
 uint32_t UART_INTTimeoutStat(UART_TypeDef *UARTx)
@@ -530,10 +530,10 @@ uint32_t UART_INTTimeoutStat(UART_TypeDef *UARTx)
     return (UARTx->BAUD & UART_BAUD_TOIF_Msk) ? 1 : 0;
     return (UARTx->BAUD & UART_BAUD_TOIF_Msk) ? 1 : 0;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_INTTXDoneEn()
-* 功能说明:	发送FIFO空且发送移位寄存器空中断使能
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+/******************************************************************************************************************************************
+* 函数名称: UART_INTTXDoneEn()
+* 功能说明: 发送FIFO空且发送移位寄存器空中断使能
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -542,10 +542,10 @@ void UART_INTTXDoneEn(UART_TypeDef *UARTx)
     UARTx->CTRL |= (0x01 << UART_CTRL_TXDOIE_Pos);
     UARTx->CTRL |= (0x01 << UART_CTRL_TXDOIE_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_INTTXDoneDis()
-* 功能说明:	发送FIFO空且发送移位寄存器空中断禁止
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+/******************************************************************************************************************************************
+* 函数名称: UART_INTTXDoneDis()
+* 功能说明: 发送FIFO空且发送移位寄存器空中断禁止
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -554,11 +554,11 @@ void UART_INTTXDoneDis(UART_TypeDef *UARTx)
     UARTx->CTRL &= ~(0x01 << UART_CTRL_TXDOIE_Pos);
     UARTx->CTRL &= ~(0x01 << UART_CTRL_TXDOIE_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	UART_INTTXDoneStat()
-* 功能说明:	发送FIFO空且发送移位寄存器空中断状态
-* 输    入: UART_TypeDef * UARTx	指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
-* 输    出: uint32_t				1 发送FIFO空且发送移位寄存器空		0 发送FIFO或发送移位寄存器未空
+/******************************************************************************************************************************************
+* 函数名称: UART_INTTXDoneStat()
+* 功能说明: 发送FIFO空且发送移位寄存器空中断状态
+* 输    入: UART_TypeDef * UARTx  指定要被设置的UART串口,有效值包括UART0、UART1、UART2、UART3
+* 输    出: uint32_t              1 发送FIFO空且发送移位寄存器空      0 发送FIFO或发送移位寄存器未空
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t UART_INTTXDoneStat(UART_TypeDef *UARTx)
 uint32_t UART_INTTXDoneStat(UART_TypeDef *UARTx)

+ 45 - 43
bsp/swm320/libraries/SWM320_StdPeriph_Driver/SWM320_wdt.c

@@ -1,18 +1,18 @@
-/****************************************************************************************************************************************** 
+/******************************************************************************************************************************************
 * 文件名称: SWM320_wdt.c
 * 文件名称: SWM320_wdt.c
-* 功能说明:	SWM320单片机的WDT看门狗功能驱动库
-* 技术支持:	http://www.synwit.com.cn/e/tool/gbook/?bid=1
+* 功能说明: SWM320单片机的WDT看门狗功能驱动库
+* 技术支持: http://www.synwit.com.cn/e/tool/gbook/?bid=1
 * 注意事项:
 * 注意事项:
-* 版本日期:	V1.1.0		2017年10月25日
-* 升级记录:  
+* 版本日期: V1.1.0      2017年10月25日
+* 升级记录:
 *
 *
 *
 *
 *******************************************************************************************************************************************
 *******************************************************************************************************************************************
 * @attention
 * @attention
 *
 *
-* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION 
-* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE 
-* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT 
+* THE PRESENT FIRMWARE WHICH IS FOR GUIDANCE ONLY AIMS AT PROVIDING CUSTOMERS WITH CODING INFORMATION
+* REGARDING THEIR PRODUCTS IN ORDER FOR THEM TO SAVE TIME. AS A RESULT, SYNWIT SHALL NOT BE HELD LIABLE
+* FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGES WITH RESPECT TO ANY CLAIMS ARISING FROM THE CONTENT
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * OF SUCH FIRMWARE AND/OR THE USE MADE BY CUSTOMERS OF THE CODING INFORMATION CONTAINED HEREIN IN CONN-
 * -ECTION WITH THEIR PRODUCTS.
 * -ECTION WITH THEIR PRODUCTS.
 *
 *
@@ -21,14 +21,14 @@
 #include "SWM320.h"
 #include "SWM320.h"
 #include "SWM320_wdt.h"
 #include "SWM320_wdt.h"
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	WDT_Init()
-* 功能说明:	WDT看门狗初始化
-* 输    入: WDT_TypeDef * WDTx		指定要被设置的看门狗,有效值包括WDT
-*			uint32_t peroid			取值0--4294967295,单位为单片机系统时钟周期
-*			uint32_t mode			WDT_MODE_RESET 超时产生复位    WDT_MODE_INTERRUPT 超时产生中断
+/******************************************************************************************************************************************
+* 函数名称: WDT_Init()
+* 功能说明: WDT看门狗初始化
+* 输    入: WDT_TypeDef * WDTx        指定要被设置的看门狗,有效值包括WDT
+*           uint32_t peroid         取值0--4294967295,单位为单片机系统时钟周期
+*           uint32_t mode           WDT_MODE_RESET 超时产生复位    WDT_MODE_INTERRUPT 超时产生中断
 * 输    出: 无
 * 输    出: 无
-* 注意事项: 复位使能时中断不起作用,因为计数周期结束时芯片直接复位了,法响应中断
+* 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 void WDT_Init(WDT_TypeDef *WDTx, uint32_t peroid, uint32_t mode)
 void WDT_Init(WDT_TypeDef *WDTx, uint32_t peroid, uint32_t mode)
 {
 {
@@ -36,26 +36,28 @@ void WDT_Init(WDT_TypeDef *WDTx, uint32_t peroid, uint32_t mode)
 
 
     WDT_Stop(WDTx); //设置前先关闭
     WDT_Stop(WDTx); //设置前先关闭
 
 
-    WDTx->LOAD = peroid;
-
     if (mode == WDT_MODE_RESET)
     if (mode == WDT_MODE_RESET)
     {
     {
+        WDTx->LOAD = peroid / 2; //第一个计数周期置位中断标志、第二个计数周期将芯片复位
+
         NVIC_DisableIRQ(WDT_IRQn);
         NVIC_DisableIRQ(WDT_IRQn);
 
 
         WDTx->CR |= (1 << WDT_CR_RSTEN_Pos);
         WDTx->CR |= (1 << WDT_CR_RSTEN_Pos);
     }
     }
     else //mode == WDT_MODE_INTERRUPT
     else //mode == WDT_MODE_INTERRUPT
     {
     {
+        WDTx->LOAD = peroid;
+
         NVIC_EnableIRQ(WDT_IRQn);
         NVIC_EnableIRQ(WDT_IRQn);
 
 
         WDTx->CR &= ~(1 << WDT_CR_RSTEN_Pos);
         WDTx->CR &= ~(1 << WDT_CR_RSTEN_Pos);
     }
     }
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	WDT_Start()
-* 功能说明:	启动指定WDT,开始倒计时
-* 输    入: WDT_TypeDef * WDTx		指定要被设置的看门狗,有效值包括WDT
+/******************************************************************************************************************************************
+* 函数名称: WDT_Start()
+* 功能说明: 启动指定WDT,开始倒计时
+* 输    入: WDT_TypeDef * WDTx        指定要被设置的看门狗,有效值包括WDT
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -64,10 +66,10 @@ void WDT_Start(WDT_TypeDef *WDTx)
     WDTx->CR |= (0x01 << WDT_CR_EN_Pos);
     WDTx->CR |= (0x01 << WDT_CR_EN_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	WDT_Stop()
-* 功能说明:	关闭指定WDT,停止倒计时
-* 输    入: WDT_TypeDef * WDTx		指定要被设置的看门狗,有效值包括WDT
+/******************************************************************************************************************************************
+* 函数名称: WDT_Stop()
+* 功能说明: 关闭指定WDT,停止倒计时
+* 输    入: WDT_TypeDef * WDTx        指定要被设置的看门狗,有效值包括WDT
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -76,10 +78,10 @@ void WDT_Stop(WDT_TypeDef *WDTx)
     WDTx->CR &= ~(0x01 << WDT_CR_EN_Pos);
     WDTx->CR &= ~(0x01 << WDT_CR_EN_Pos);
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	WDT_Feed()
-* 功能说明:	喂狗,重新从装载值开始倒计时
-* 输    入: WDT_TypeDef * WDTx		指定要被设置的看门狗,有效值包括WDT
+/******************************************************************************************************************************************
+* 函数名称: WDT_Feed()
+* 功能说明: 喂狗,重新从装载值开始倒计时
+* 输    入: WDT_TypeDef * WDTx        指定要被设置的看门狗,有效值包括WDT
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -88,11 +90,11 @@ void WDT_Feed(WDT_TypeDef *WDTx)
     WDTx->FEED = 0x55;
     WDTx->FEED = 0x55;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	WDT_GetValue()
-* 功能说明:	获取指定看门狗定时器的当前倒计时值
-* 输    入: WDT_TypeDef * WDTx		指定要被设置的看门狗,有效值包括WDT
-* 输    出: int32_t					看门狗当前计数值
+/******************************************************************************************************************************************
+* 函数名称: WDT_GetValue()
+* 功能说明: 获取指定看门狗定时器的当前倒计时值
+* 输    入: WDT_TypeDef * WDTx        指定要被设置的看门狗,有效值包括WDT
+* 输    出: int32_t                   看门狗当前计数值
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 int32_t WDT_GetValue(WDT_TypeDef *WDTx)
 int32_t WDT_GetValue(WDT_TypeDef *WDTx)
@@ -100,10 +102,10 @@ int32_t WDT_GetValue(WDT_TypeDef *WDTx)
     return WDTx->VALUE;
     return WDTx->VALUE;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	WDT_INTClr()
-* 功能说明:	中断标志清除
-* 输    入: WDT_TypeDef * WDTx		指定要被设置的看门狗,有效值包括WDT
+/******************************************************************************************************************************************
+* 函数名称: WDT_INTClr()
+* 功能说明: 中断标志清除
+* 输    入: WDT_TypeDef * WDTx        指定要被设置的看门狗,有效值包括WDT
 * 输    出: 无
 * 输    出: 无
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
@@ -112,11 +114,11 @@ void WDT_INTClr(WDT_TypeDef *WDTx)
     WDTx->IF = 1;
     WDTx->IF = 1;
 }
 }
 
 
-/****************************************************************************************************************************************** 
-* 函数名称:	WDT_INTStat()
-* 功能说明:	中断状态查询
-* 输    入: WDT_TypeDef * WDTx		指定要被设置的看门狗,有效值包括WDT
-* 输    出: int32_t					1 发生中断溢出    0 未发生中断溢出
+/******************************************************************************************************************************************
+* 函数名称: WDT_INTStat()
+* 功能说明: 中断状态查询
+* 输    入: WDT_TypeDef * WDTx        指定要被设置的看门狗,有效值包括WDT
+* 输    出: int32_t                   1 发生中断溢出    0 未发生中断溢出
 * 注意事项: 无
 * 注意事项: 无
 ******************************************************************************************************************************************/
 ******************************************************************************************************************************************/
 uint32_t WDT_INTStat(WDT_TypeDef *WDTx)
 uint32_t WDT_INTStat(WDT_TypeDef *WDTx)

+ 142 - 262
bsp/swm320/project.uvoptx

@@ -207,8 +207,8 @@
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\libcpu\arm\common\backtrace.c</PathWithFileName>
-      <FilenameWithoutPath>backtrace.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\libcpu\arm\common\showmem.c</PathWithFileName>
+      <FilenameWithoutPath>showmem.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
@@ -231,8 +231,8 @@
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\libcpu\arm\common\showmem.c</PathWithFileName>
-      <FilenameWithoutPath>showmem.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\libcpu\arm\common\backtrace.c</PathWithFileName>
+      <FilenameWithoutPath>backtrace.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
@@ -311,8 +311,8 @@
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\drivers\src\dataqueue.c</PathWithFileName>
-      <FilenameWithoutPath>dataqueue.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\components\drivers\src\ringbuffer.c</PathWithFileName>
+      <FilenameWithoutPath>ringbuffer.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
@@ -323,8 +323,8 @@
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\drivers\src\pipe.c</PathWithFileName>
-      <FilenameWithoutPath>pipe.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\components\drivers\src\ringblk_buf.c</PathWithFileName>
+      <FilenameWithoutPath>ringblk_buf.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
@@ -335,8 +335,8 @@
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\drivers\src\ringblk_buf.c</PathWithFileName>
-      <FilenameWithoutPath>ringblk_buf.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\components\drivers\src\pipe.c</PathWithFileName>
+      <FilenameWithoutPath>pipe.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
@@ -347,8 +347,8 @@
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\drivers\src\ringbuffer.c</PathWithFileName>
-      <FilenameWithoutPath>ringbuffer.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\components\drivers\src\waitqueue.c</PathWithFileName>
+      <FilenameWithoutPath>waitqueue.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
@@ -359,8 +359,8 @@
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\drivers\src\waitqueue.c</PathWithFileName>
-      <FilenameWithoutPath>waitqueue.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\components\drivers\src\dataqueue.c</PathWithFileName>
+      <FilenameWithoutPath>dataqueue.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
@@ -391,8 +391,8 @@
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>drivers\board.c</PathWithFileName>
-      <FilenameWithoutPath>board.c</FilenameWithoutPath>
+      <PathWithFileName>drivers\drv_gpio.c</PathWithFileName>
+      <FilenameWithoutPath>drv_gpio.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
@@ -415,15 +415,15 @@
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>drivers\drv_gpio.c</PathWithFileName>
-      <FilenameWithoutPath>drv_gpio.c</FilenameWithoutPath>
+      <PathWithFileName>drivers\board.c</PathWithFileName>
+      <FilenameWithoutPath>board.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
   </Group>
   </Group>
 
 
   <Group>
   <Group>
-    <GroupName>finsh</GroupName>
+    <GroupName>Finsh</GroupName>
     <tvExp>0</tvExp>
     <tvExp>0</tvExp>
     <tvExpOptDlg>0</tvExpOptDlg>
     <tvExpOptDlg>0</tvExpOptDlg>
     <cbSel>0</cbSel>
     <cbSel>0</cbSel>
@@ -447,18 +447,6 @@
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\finsh\cmd.c</PathWithFileName>
-      <FilenameWithoutPath>cmd.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>21</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
       <PathWithFileName>..\..\components\finsh\msh.c</PathWithFileName>
       <PathWithFileName>..\..\components\finsh\msh.c</PathWithFileName>
       <FilenameWithoutPath>msh.c</FilenameWithoutPath>
       <FilenameWithoutPath>msh.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
@@ -466,121 +454,13 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>5</GroupNumber>
       <GroupNumber>5</GroupNumber>
-      <FileNumber>22</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\finsh\finsh_compiler.c</PathWithFileName>
-      <FilenameWithoutPath>finsh_compiler.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>23</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\finsh\finsh_error.c</PathWithFileName>
-      <FilenameWithoutPath>finsh_error.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>24</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\finsh\finsh_heap.c</PathWithFileName>
-      <FilenameWithoutPath>finsh_heap.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>25</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\finsh\finsh_init.c</PathWithFileName>
-      <FilenameWithoutPath>finsh_init.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>26</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\finsh\finsh_node.c</PathWithFileName>
-      <FilenameWithoutPath>finsh_node.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>27</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\finsh\finsh_ops.c</PathWithFileName>
-      <FilenameWithoutPath>finsh_ops.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>28</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\finsh\finsh_parser.c</PathWithFileName>
-      <FilenameWithoutPath>finsh_parser.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>29</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\finsh\finsh_var.c</PathWithFileName>
-      <FilenameWithoutPath>finsh_var.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>30</FileNumber>
-      <FileType>1</FileType>
-      <tvExp>0</tvExp>
-      <tvExpOptDlg>0</tvExpOptDlg>
-      <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\finsh\finsh_vm.c</PathWithFileName>
-      <FilenameWithoutPath>finsh_vm.c</FilenameWithoutPath>
-      <RteFlg>0</RteFlg>
-      <bShared>0</bShared>
-    </File>
-    <File>
-      <GroupNumber>5</GroupNumber>
-      <FileNumber>31</FileNumber>
+      <FileNumber>21</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\finsh\finsh_token.c</PathWithFileName>
-      <FilenameWithoutPath>finsh_token.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\components\finsh\cmd.c</PathWithFileName>
+      <FilenameWithoutPath>cmd.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
@@ -594,157 +474,157 @@
     <RteFlg>0</RteFlg>
     <RteFlg>0</RteFlg>
     <File>
     <File>
       <GroupNumber>6</GroupNumber>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>32</FileNumber>
+      <FileNumber>22</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\src\clock.c</PathWithFileName>
-      <FilenameWithoutPath>clock.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\src\mempool.c</PathWithFileName>
+      <FilenameWithoutPath>mempool.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>6</GroupNumber>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>33</FileNumber>
+      <FileNumber>23</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\src\components.c</PathWithFileName>
-      <FilenameWithoutPath>components.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\src\thread.c</PathWithFileName>
+      <FilenameWithoutPath>thread.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>6</GroupNumber>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>34</FileNumber>
+      <FileNumber>24</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\src\device.c</PathWithFileName>
-      <FilenameWithoutPath>device.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\src\idle.c</PathWithFileName>
+      <FilenameWithoutPath>idle.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>6</GroupNumber>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>35</FileNumber>
+      <FileNumber>25</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\src\idle.c</PathWithFileName>
-      <FilenameWithoutPath>idle.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\src\ipc.c</PathWithFileName>
+      <FilenameWithoutPath>ipc.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>6</GroupNumber>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>36</FileNumber>
+      <FileNumber>26</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\src\ipc.c</PathWithFileName>
-      <FilenameWithoutPath>ipc.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\src\irq.c</PathWithFileName>
+      <FilenameWithoutPath>irq.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>6</GroupNumber>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>37</FileNumber>
+      <FileNumber>27</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\src\irq.c</PathWithFileName>
-      <FilenameWithoutPath>irq.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\src\timer.c</PathWithFileName>
+      <FilenameWithoutPath>timer.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>6</GroupNumber>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>38</FileNumber>
+      <FileNumber>28</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\src\kservice.c</PathWithFileName>
-      <FilenameWithoutPath>kservice.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\src\device.c</PathWithFileName>
+      <FilenameWithoutPath>device.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>6</GroupNumber>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>39</FileNumber>
+      <FileNumber>29</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\src\memheap.c</PathWithFileName>
-      <FilenameWithoutPath>memheap.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\src\kservice.c</PathWithFileName>
+      <FilenameWithoutPath>kservice.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>6</GroupNumber>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>40</FileNumber>
+      <FileNumber>30</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\src\mempool.c</PathWithFileName>
-      <FilenameWithoutPath>mempool.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\src\components.c</PathWithFileName>
+      <FilenameWithoutPath>components.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>6</GroupNumber>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>41</FileNumber>
+      <FileNumber>31</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\src\object.c</PathWithFileName>
-      <FilenameWithoutPath>object.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\src\scheduler.c</PathWithFileName>
+      <FilenameWithoutPath>scheduler.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>6</GroupNumber>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>42</FileNumber>
+      <FileNumber>32</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\src\scheduler.c</PathWithFileName>
-      <FilenameWithoutPath>scheduler.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\src\object.c</PathWithFileName>
+      <FilenameWithoutPath>object.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>6</GroupNumber>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>43</FileNumber>
+      <FileNumber>33</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\src\thread.c</PathWithFileName>
-      <FilenameWithoutPath>thread.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\src\memheap.c</PathWithFileName>
+      <FilenameWithoutPath>memheap.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>6</GroupNumber>
       <GroupNumber>6</GroupNumber>
-      <FileNumber>44</FileNumber>
+      <FileNumber>34</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\src\timer.c</PathWithFileName>
-      <FilenameWithoutPath>timer.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\src\clock.c</PathWithFileName>
+      <FilenameWithoutPath>clock.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
@@ -758,61 +638,61 @@
     <RteFlg>0</RteFlg>
     <RteFlg>0</RteFlg>
     <File>
     <File>
       <GroupNumber>7</GroupNumber>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>45</FileNumber>
+      <FileNumber>35</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\libc\compilers\armlibc\libc.c</PathWithFileName>
-      <FilenameWithoutPath>libc.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\components\libc\compilers\armlibc\mem_std.c</PathWithFileName>
+      <FilenameWithoutPath>mem_std.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>7</GroupNumber>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>46</FileNumber>
+      <FileNumber>36</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\libc\compilers\armlibc\mem_std.c</PathWithFileName>
-      <FilenameWithoutPath>mem_std.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\components\libc\compilers\armlibc\syscalls.c</PathWithFileName>
+      <FilenameWithoutPath>syscalls.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>7</GroupNumber>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>47</FileNumber>
+      <FileNumber>37</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\libc\compilers\armlibc\syscalls.c</PathWithFileName>
-      <FilenameWithoutPath>syscalls.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\components\libc\compilers\armlibc\libc.c</PathWithFileName>
+      <FilenameWithoutPath>libc.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>7</GroupNumber>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>48</FileNumber>
+      <FileNumber>38</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\libc\compilers\common\stdlib.c</PathWithFileName>
-      <FilenameWithoutPath>stdlib.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\components\libc\compilers\common\time.c</PathWithFileName>
+      <FilenameWithoutPath>time.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>7</GroupNumber>
       <GroupNumber>7</GroupNumber>
-      <FileNumber>49</FileNumber>
+      <FileNumber>39</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>..\..\components\libc\compilers\common\time.c</PathWithFileName>
-      <FilenameWithoutPath>time.c</FilenameWithoutPath>
+      <PathWithFileName>..\..\components\libc\compilers\common\stdlib.c</PathWithFileName>
+      <FilenameWithoutPath>stdlib.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
@@ -826,127 +706,127 @@
     <RteFlg>0</RteFlg>
     <RteFlg>0</RteFlg>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>50</FileNumber>
+      <FileNumber>40</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\CMSIS\DeviceSupport\system_SWM320.c</PathWithFileName>
-      <FilenameWithoutPath>system_SWM320.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_wdt.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_wdt.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>51</FileNumber>
+      <FileNumber>41</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_adc.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_adc.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\CMSIS\DeviceSupport\system_SWM320.c</PathWithFileName>
+      <FilenameWithoutPath>system_SWM320.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>52</FileNumber>
+      <FileNumber>42</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_can.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_can.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_spi.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_spi.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>53</FileNumber>
+      <FileNumber>43</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_crc.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_crc.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_flash.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_flash.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>54</FileNumber>
+      <FileNumber>44</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_dma.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_dma.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_sdram.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_sdram.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>55</FileNumber>
+      <FileNumber>45</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_exti.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_exti.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_pwm.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_pwm.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>56</FileNumber>
+      <FileNumber>46</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_flash.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_flash.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_sram.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_sram.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>57</FileNumber>
+      <FileNumber>47</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_gpio.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_gpio.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_lcd.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_lcd.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>58</FileNumber>
+      <FileNumber>48</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_i2c.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_i2c.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_gpio.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_gpio.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>59</FileNumber>
+      <FileNumber>49</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_lcd.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_lcd.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_timr.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_timr.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>60</FileNumber>
+      <FileNumber>50</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
@@ -958,133 +838,133 @@
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>61</FileNumber>
-      <FileType>1</FileType>
+      <FileNumber>51</FileNumber>
+      <FileType>2</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_port.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_port.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\CMSIS\DeviceSupport\startup\arm\startup_SWM320.s</PathWithFileName>
+      <FilenameWithoutPath>startup_SWM320.s</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>62</FileNumber>
+      <FileNumber>52</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_pwm.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_pwm.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_can.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_can.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>63</FileNumber>
+      <FileNumber>53</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_rtc.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_rtc.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_i2c.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_i2c.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>64</FileNumber>
+      <FileNumber>54</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_sdio.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_sdio.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_port.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_port.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>65</FileNumber>
+      <FileNumber>55</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_sdram.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_sdram.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_uart.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_uart.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>66</FileNumber>
+      <FileNumber>56</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_spi.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_spi.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_dma.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_dma.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>67</FileNumber>
+      <FileNumber>57</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_sram.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_sram.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_crc.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_crc.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>68</FileNumber>
+      <FileNumber>58</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_timr.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_timr.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_sdio.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_sdio.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>69</FileNumber>
+      <FileNumber>59</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_uart.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_uart.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_rtc.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_rtc.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>70</FileNumber>
+      <FileNumber>60</FileNumber>
       <FileType>1</FileType>
       <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_wdt.c</PathWithFileName>
-      <FilenameWithoutPath>SWM320_wdt.c</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_exti.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_exti.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>
     <File>
     <File>
       <GroupNumber>8</GroupNumber>
       <GroupNumber>8</GroupNumber>
-      <FileNumber>71</FileNumber>
-      <FileType>2</FileType>
+      <FileNumber>61</FileNumber>
+      <FileType>1</FileType>
       <tvExp>0</tvExp>
       <tvExp>0</tvExp>
       <tvExpOptDlg>0</tvExpOptDlg>
       <tvExpOptDlg>0</tvExpOptDlg>
       <bDave2>0</bDave2>
       <bDave2>0</bDave2>
-      <PathWithFileName>libraries\CMSIS\DeviceSupport\startup\arm\startup_SWM320.s</PathWithFileName>
-      <FilenameWithoutPath>startup_SWM320.s</FilenameWithoutPath>
+      <PathWithFileName>libraries\SWM320_StdPeriph_Driver\SWM320_adc.c</PathWithFileName>
+      <FilenameWithoutPath>SWM320_adc.c</FilenameWithoutPath>
       <RteFlg>0</RteFlg>
       <RteFlg>0</RteFlg>
       <bShared>0</bShared>
       <bShared>0</bShared>
     </File>
     </File>

+ 94 - 144
bsp/swm320/project.uvprojx

@@ -10,13 +10,13 @@
       <TargetName>rtthread</TargetName>
       <TargetName>rtthread</TargetName>
       <ToolsetNumber>0x4</ToolsetNumber>
       <ToolsetNumber>0x4</ToolsetNumber>
       <ToolsetName>ARM-ADS</ToolsetName>
       <ToolsetName>ARM-ADS</ToolsetName>
-      <pCCUsed>5060960::V5.06 update 7 (build 960)::.\ARMCC</pCCUsed>
+      <pCCUsed>5060750::V5.06 update 6 (build 750)::ARMCC</pCCUsed>
       <uAC6>0</uAC6>
       <uAC6>0</uAC6>
       <TargetOption>
       <TargetOption>
         <TargetCommonOption>
         <TargetCommonOption>
           <Device>SWM320xE</Device>
           <Device>SWM320xE</Device>
           <Vendor>Synwit</Vendor>
           <Vendor>Synwit</Vendor>
-          <PackID>Synwit.SWM32_DFP.1.11.3</PackID>
+          <PackID>Synwit.SWM32_DFP.1.16.6</PackID>
           <PackURL>http://www.synwit.com/pack</PackURL>
           <PackURL>http://www.synwit.com/pack</PackURL>
           <Cpu>IRAM(0x20000000,0x20000) IROM(0x00000000,0x80000) CPUTYPE("Cortex-M4") CLOCK(12000000) ELITTLE</Cpu>
           <Cpu>IRAM(0x20000000,0x20000) IROM(0x00000000,0x80000) CPUTYPE("Cortex-M4") CLOCK(12000000) ELITTLE</Cpu>
           <FlashUtilSpec></FlashUtilSpec>
           <FlashUtilSpec></FlashUtilSpec>
@@ -339,7 +339,7 @@
               <MiscControls></MiscControls>
               <MiscControls></MiscControls>
               <Define>RT_USING_ARM_LIBC, __RTTHREAD__, __CLK_TCK=RT_TICK_PER_SECOND</Define>
               <Define>RT_USING_ARM_LIBC, __RTTHREAD__, __CLK_TCK=RT_TICK_PER_SECOND</Define>
               <Undefine></Undefine>
               <Undefine></Undefine>
-              <IncludePath>applications;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m4;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;drivers;..\..\components\finsh;.;..\..\include;..\..\components\libc\compilers\armlibc;..\..\components\libc\compilers\common;libraries\CMSIS\CoreSupport;libraries\CMSIS\DeviceSupport;libraries\SWM320_StdPeriph_Driver</IncludePath>
+              <IncludePath>applications;..\..\libcpu\arm\common;..\..\libcpu\arm\cortex-m4;..\..\components\drivers\include;..\..\components\drivers\include;..\..\components\drivers\include;drivers;..\..\components\finsh;.;..\..\include;..\..\components\libc\compilers\armlibc;..\..\components\libc\compilers\common;..\..\components\libc\compilers\common\none-gcc;libraries\CMSIS\CoreSupport;libraries\CMSIS\DeviceSupport;libraries\SWM320_StdPeriph_Driver;..\..\examples\utest\testcases\kernel</IncludePath>
             </VariousControls>
             </VariousControls>
           </Cads>
           </Cads>
           <Aads>
           <Aads>
@@ -394,9 +394,9 @@
           <GroupName>CPU</GroupName>
           <GroupName>CPU</GroupName>
           <Files>
           <Files>
             <File>
             <File>
-              <FileName>backtrace.c</FileName>
+              <FileName>showmem.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>..\..\libcpu\arm\common\backtrace.c</FilePath>
+              <FilePath>..\..\libcpu\arm\common\showmem.c</FilePath>
             </File>
             </File>
             <File>
             <File>
               <FileName>div0.c</FileName>
               <FileName>div0.c</FileName>
@@ -404,9 +404,9 @@
               <FilePath>..\..\libcpu\arm\common\div0.c</FilePath>
               <FilePath>..\..\libcpu\arm\common\div0.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>showmem.c</FileName>
+              <FileName>backtrace.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>..\..\libcpu\arm\common\showmem.c</FilePath>
+              <FilePath>..\..\libcpu\arm\common\backtrace.c</FilePath>
             </File>
             </File>
             <File>
             <File>
               <FileName>cpuport.c</FileName>
               <FileName>cpuport.c</FileName>
@@ -439,14 +439,9 @@
               <FilePath>..\..\components\drivers\src\completion.c</FilePath>
               <FilePath>..\..\components\drivers\src\completion.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>dataqueue.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\components\drivers\src\dataqueue.c</FilePath>
-            </File>
-            <File>
-              <FileName>pipe.c</FileName>
+              <FileName>ringbuffer.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>..\..\components\drivers\src\pipe.c</FilePath>
+              <FilePath>..\..\components\drivers\src\ringbuffer.c</FilePath>
             </File>
             </File>
             <File>
             <File>
               <FileName>ringblk_buf.c</FileName>
               <FileName>ringblk_buf.c</FileName>
@@ -454,15 +449,20 @@
               <FilePath>..\..\components\drivers\src\ringblk_buf.c</FilePath>
               <FilePath>..\..\components\drivers\src\ringblk_buf.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>ringbuffer.c</FileName>
+              <FileName>pipe.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>..\..\components\drivers\src\ringbuffer.c</FilePath>
+              <FilePath>..\..\components\drivers\src\pipe.c</FilePath>
             </File>
             </File>
             <File>
             <File>
               <FileName>waitqueue.c</FileName>
               <FileName>waitqueue.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
               <FilePath>..\..\components\drivers\src\waitqueue.c</FilePath>
               <FilePath>..\..\components\drivers\src\waitqueue.c</FilePath>
             </File>
             </File>
+            <File>
+              <FileName>dataqueue.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\components\drivers\src\dataqueue.c</FilePath>
+            </File>
             <File>
             <File>
               <FileName>workqueue.c</FileName>
               <FileName>workqueue.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
@@ -474,9 +474,9 @@
           <GroupName>Drivers</GroupName>
           <GroupName>Drivers</GroupName>
           <Files>
           <Files>
             <File>
             <File>
-              <FileName>board.c</FileName>
+              <FileName>drv_gpio.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>drivers\board.c</FilePath>
+              <FilePath>drivers\drv_gpio.c</FilePath>
             </File>
             </File>
             <File>
             <File>
               <FileName>drv_uart.c</FileName>
               <FileName>drv_uart.c</FileName>
@@ -484,79 +484,29 @@
               <FilePath>drivers\drv_uart.c</FilePath>
               <FilePath>drivers\drv_uart.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>drv_gpio.c</FileName>
+              <FileName>board.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>drivers\drv_gpio.c</FilePath>
+              <FilePath>drivers\board.c</FilePath>
             </File>
             </File>
           </Files>
           </Files>
         </Group>
         </Group>
         <Group>
         <Group>
-          <GroupName>finsh</GroupName>
+          <GroupName>Finsh</GroupName>
           <Files>
           <Files>
             <File>
             <File>
               <FileName>shell.c</FileName>
               <FileName>shell.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
               <FilePath>..\..\components\finsh\shell.c</FilePath>
               <FilePath>..\..\components\finsh\shell.c</FilePath>
             </File>
             </File>
-            <File>
-              <FileName>cmd.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\components\finsh\cmd.c</FilePath>
-            </File>
             <File>
             <File>
               <FileName>msh.c</FileName>
               <FileName>msh.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
               <FilePath>..\..\components\finsh\msh.c</FilePath>
               <FilePath>..\..\components\finsh\msh.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>finsh_compiler.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\components\finsh\finsh_compiler.c</FilePath>
-            </File>
-            <File>
-              <FileName>finsh_error.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\components\finsh\finsh_error.c</FilePath>
-            </File>
-            <File>
-              <FileName>finsh_heap.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\components\finsh\finsh_heap.c</FilePath>
-            </File>
-            <File>
-              <FileName>finsh_init.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\components\finsh\finsh_init.c</FilePath>
-            </File>
-            <File>
-              <FileName>finsh_node.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\components\finsh\finsh_node.c</FilePath>
-            </File>
-            <File>
-              <FileName>finsh_ops.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\components\finsh\finsh_ops.c</FilePath>
-            </File>
-            <File>
-              <FileName>finsh_parser.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\components\finsh\finsh_parser.c</FilePath>
-            </File>
-            <File>
-              <FileName>finsh_var.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\components\finsh\finsh_var.c</FilePath>
-            </File>
-            <File>
-              <FileName>finsh_vm.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\components\finsh\finsh_vm.c</FilePath>
-            </File>
-            <File>
-              <FileName>finsh_token.c</FileName>
+              <FileName>cmd.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>..\..\components\finsh\finsh_token.c</FilePath>
+              <FilePath>..\..\components\finsh\cmd.c</FilePath>
             </File>
             </File>
           </Files>
           </Files>
         </Group>
         </Group>
@@ -564,19 +514,14 @@
           <GroupName>Kernel</GroupName>
           <GroupName>Kernel</GroupName>
           <Files>
           <Files>
             <File>
             <File>
-              <FileName>clock.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\src\clock.c</FilePath>
-            </File>
-            <File>
-              <FileName>components.c</FileName>
+              <FileName>mempool.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>..\..\src\components.c</FilePath>
+              <FilePath>..\..\src\mempool.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>device.c</FileName>
+              <FileName>thread.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>..\..\src\device.c</FilePath>
+              <FilePath>..\..\src\thread.c</FilePath>
             </File>
             </File>
             <File>
             <File>
               <FileName>idle.c</FileName>
               <FileName>idle.c</FileName>
@@ -594,24 +539,24 @@
               <FilePath>..\..\src\irq.c</FilePath>
               <FilePath>..\..\src\irq.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>kservice.c</FileName>
+              <FileName>timer.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>..\..\src\kservice.c</FilePath>
+              <FilePath>..\..\src\timer.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>memheap.c</FileName>
+              <FileName>device.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>..\..\src\memheap.c</FilePath>
+              <FilePath>..\..\src\device.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>mempool.c</FileName>
+              <FileName>kservice.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>..\..\src\mempool.c</FilePath>
+              <FilePath>..\..\src\kservice.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>object.c</FileName>
+              <FileName>components.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>..\..\src\object.c</FilePath>
+              <FilePath>..\..\src\components.c</FilePath>
             </File>
             </File>
             <File>
             <File>
               <FileName>scheduler.c</FileName>
               <FileName>scheduler.c</FileName>
@@ -619,25 +564,25 @@
               <FilePath>..\..\src\scheduler.c</FilePath>
               <FilePath>..\..\src\scheduler.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>thread.c</FileName>
+              <FileName>object.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>..\..\src\thread.c</FilePath>
+              <FilePath>..\..\src\object.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>timer.c</FileName>
+              <FileName>memheap.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>..\..\src\timer.c</FilePath>
+              <FilePath>..\..\src\memheap.c</FilePath>
+            </File>
+            <File>
+              <FileName>clock.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\src\clock.c</FilePath>
             </File>
             </File>
           </Files>
           </Files>
         </Group>
         </Group>
         <Group>
         <Group>
           <GroupName>libc</GroupName>
           <GroupName>libc</GroupName>
           <Files>
           <Files>
-            <File>
-              <FileName>libc.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>..\..\components\libc\compilers\armlibc\libc.c</FilePath>
-            </File>
             <File>
             <File>
               <FileName>mem_std.c</FileName>
               <FileName>mem_std.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
@@ -649,54 +594,64 @@
               <FilePath>..\..\components\libc\compilers\armlibc\syscalls.c</FilePath>
               <FilePath>..\..\components\libc\compilers\armlibc\syscalls.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>stdlib.c</FileName>
+              <FileName>libc.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>..\..\components\libc\compilers\common\stdlib.c</FilePath>
+              <FilePath>..\..\components\libc\compilers\armlibc\libc.c</FilePath>
             </File>
             </File>
             <File>
             <File>
               <FileName>time.c</FileName>
               <FileName>time.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
               <FilePath>..\..\components\libc\compilers\common\time.c</FilePath>
               <FilePath>..\..\components\libc\compilers\common\time.c</FilePath>
             </File>
             </File>
+            <File>
+              <FileName>stdlib.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>..\..\components\libc\compilers\common\stdlib.c</FilePath>
+            </File>
           </Files>
           </Files>
         </Group>
         </Group>
         <Group>
         <Group>
           <GroupName>Libraries</GroupName>
           <GroupName>Libraries</GroupName>
           <Files>
           <Files>
+            <File>
+              <FileName>SWM320_wdt.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_wdt.c</FilePath>
+            </File>
             <File>
             <File>
               <FileName>system_SWM320.c</FileName>
               <FileName>system_SWM320.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
               <FilePath>libraries\CMSIS\DeviceSupport\system_SWM320.c</FilePath>
               <FilePath>libraries\CMSIS\DeviceSupport\system_SWM320.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>SWM320_adc.c</FileName>
+              <FileName>SWM320_spi.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_adc.c</FilePath>
+              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_spi.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>SWM320_can.c</FileName>
+              <FileName>SWM320_flash.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_can.c</FilePath>
+              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_flash.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>SWM320_crc.c</FileName>
+              <FileName>SWM320_sdram.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_crc.c</FilePath>
+              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_sdram.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>SWM320_dma.c</FileName>
+              <FileName>SWM320_pwm.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_dma.c</FilePath>
+              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_pwm.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>SWM320_exti.c</FileName>
+              <FileName>SWM320_sram.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_exti.c</FilePath>
+              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_sram.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>SWM320_flash.c</FileName>
+              <FileName>SWM320_lcd.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_flash.c</FilePath>
+              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_lcd.c</FilePath>
             </File>
             </File>
             <File>
             <File>
               <FileName>SWM320_gpio.c</FileName>
               <FileName>SWM320_gpio.c</FileName>
@@ -704,14 +659,9 @@
               <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_gpio.c</FilePath>
               <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_gpio.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>SWM320_i2c.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_i2c.c</FilePath>
-            </File>
-            <File>
-              <FileName>SWM320_lcd.c</FileName>
+              <FileName>SWM320_timr.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_lcd.c</FilePath>
+              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_timr.c</FilePath>
             </File>
             </File>
             <File>
             <File>
               <FileName>SWM320_norflash.c</FileName>
               <FileName>SWM320_norflash.c</FileName>
@@ -719,59 +669,59 @@
               <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_norflash.c</FilePath>
               <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_norflash.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>SWM320_port.c</FileName>
-              <FileType>1</FileType>
-              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_port.c</FilePath>
+              <FileName>startup_SWM320.s</FileName>
+              <FileType>2</FileType>
+              <FilePath>libraries\CMSIS\DeviceSupport\startup\arm\startup_SWM320.s</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>SWM320_pwm.c</FileName>
+              <FileName>SWM320_can.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_pwm.c</FilePath>
+              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_can.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>SWM320_rtc.c</FileName>
+              <FileName>SWM320_i2c.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_rtc.c</FilePath>
+              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_i2c.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>SWM320_sdio.c</FileName>
+              <FileName>SWM320_port.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_sdio.c</FilePath>
+              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_port.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>SWM320_sdram.c</FileName>
+              <FileName>SWM320_uart.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_sdram.c</FilePath>
+              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_uart.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>SWM320_spi.c</FileName>
+              <FileName>SWM320_dma.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_spi.c</FilePath>
+              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_dma.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>SWM320_sram.c</FileName>
+              <FileName>SWM320_crc.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_sram.c</FilePath>
+              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_crc.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>SWM320_timr.c</FileName>
+              <FileName>SWM320_sdio.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_timr.c</FilePath>
+              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_sdio.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>SWM320_uart.c</FileName>
+              <FileName>SWM320_rtc.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_uart.c</FilePath>
+              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_rtc.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>SWM320_wdt.c</FileName>
+              <FileName>SWM320_exti.c</FileName>
               <FileType>1</FileType>
               <FileType>1</FileType>
-              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_wdt.c</FilePath>
+              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_exti.c</FilePath>
             </File>
             </File>
             <File>
             <File>
-              <FileName>startup_SWM320.s</FileName>
-              <FileType>2</FileType>
-              <FilePath>libraries\CMSIS\DeviceSupport\startup\arm\startup_SWM320.s</FilePath>
+              <FileName>SWM320_adc.c</FileName>
+              <FileType>1</FileType>
+              <FilePath>libraries\SWM320_StdPeriph_Driver\SWM320_adc.c</FilePath>
             </File>
             </File>
           </Files>
           </Files>
         </Group>
         </Group>

+ 23 - 10
bsp/swm320/rtconfig.h

@@ -16,6 +16,9 @@
 #define RT_USING_IDLE_HOOK
 #define RT_USING_IDLE_HOOK
 #define RT_IDLE_HOOK_LIST_SIZE 4
 #define RT_IDLE_HOOK_LIST_SIZE 4
 #define IDLE_THREAD_STACK_SIZE 256
 #define IDLE_THREAD_STACK_SIZE 256
+
+/* kservice optimization */
+
 #define RT_DEBUG
 #define RT_DEBUG
 #define RT_DEBUG_COLOR
 #define RT_DEBUG_COLOR
 
 
@@ -39,8 +42,8 @@
 #define RT_USING_DEVICE
 #define RT_USING_DEVICE
 #define RT_USING_CONSOLE
 #define RT_USING_CONSOLE
 #define RT_CONSOLEBUF_SIZE 128
 #define RT_CONSOLEBUF_SIZE 128
-#define RT_CONSOLE_DEVICE_NAME "uart0"
-#define RT_VER_NUM 0x40003
+#define RT_CONSOLE_DEVICE_NAME "uart1"
+#define RT_VER_NUM 0x40004
 #define ARCH_ARM
 #define ARCH_ARM
 #define RT_USING_CPU_FFS
 #define RT_USING_CPU_FFS
 #define ARCH_ARM_CORTEX_M
 #define ARCH_ARM_CORTEX_M
@@ -59,16 +62,17 @@
 /* Command shell */
 /* Command shell */
 
 
 #define RT_USING_FINSH
 #define RT_USING_FINSH
+#define RT_USING_MSH
+#define FINSH_USING_MSH
 #define FINSH_THREAD_NAME "tshell"
 #define FINSH_THREAD_NAME "tshell"
+#define FINSH_THREAD_PRIORITY 20
+#define FINSH_THREAD_STACK_SIZE 4096
 #define FINSH_USING_HISTORY
 #define FINSH_USING_HISTORY
 #define FINSH_HISTORY_LINES 5
 #define FINSH_HISTORY_LINES 5
 #define FINSH_USING_SYMTAB
 #define FINSH_USING_SYMTAB
-#define FINSH_USING_DESCRIPTION
-#define FINSH_THREAD_PRIORITY 20
-#define FINSH_THREAD_STACK_SIZE 4096
 #define FINSH_CMD_SIZE 80
 #define FINSH_CMD_SIZE 80
-#define FINSH_USING_MSH
-#define FINSH_USING_MSH_DEFAULT
+#define MSH_USING_BUILT_IN_COMMANDS
+#define FINSH_USING_DESCRIPTION
 #define FINSH_ARG_MAX 10
 #define FINSH_ARG_MAX 10
 
 
 /* Device virtual file system */
 /* Device virtual file system */
@@ -79,6 +83,7 @@
 #define RT_USING_DEVICE_IPC
 #define RT_USING_DEVICE_IPC
 #define RT_PIPE_BUFSZ 512
 #define RT_PIPE_BUFSZ 512
 #define RT_USING_SERIAL
 #define RT_USING_SERIAL
+#define RT_USING_SERIAL_V1
 #define RT_SERIAL_RB_BUFSZ 64
 #define RT_SERIAL_RB_BUFSZ 64
 #define RT_USING_PIN
 #define RT_USING_PIN
 
 
@@ -88,6 +93,7 @@
 /* POSIX layer and C standard library */
 /* POSIX layer and C standard library */
 
 
 #define RT_USING_LIBC
 #define RT_USING_LIBC
+#define RT_LIBC_DEFAULT_TIMEZONE 8
 
 
 /* Network */
 /* Network */
 
 
@@ -109,6 +115,9 @@
 /* Utilities */
 /* Utilities */
 
 
 
 
+/* RT-Thread Utestcases */
+
+
 /* RT-Thread online packages */
 /* RT-Thread online packages */
 
 
 /* IoT - internet of things */
 /* IoT - internet of things */
@@ -139,6 +148,8 @@
 
 
 /* system packages */
 /* system packages */
 
 
+/* acceleration: Assembly language or algorithmic acceleration packages */
+
 
 
 /* Micrium: Micrium software products porting for RT-Thread */
 /* Micrium: Micrium software products porting for RT-Thread */
 
 
@@ -146,13 +157,15 @@
 /* peripheral libraries and drivers */
 /* peripheral libraries and drivers */
 
 
 
 
-/* miscellaneous packages */
+/* AI packages */
 
 
 
 
+/* miscellaneous packages */
+
 /* samples: kernel and components samples */
 /* samples: kernel and components samples */
 
 
 
 
-/* games: games run on RT-Thread console */
+/* entertainment: terminal games and other interesting software packages */
 
 
 
 
 /* Hardware Drivers Config */
 /* Hardware Drivers Config */
@@ -162,7 +175,7 @@
 /* On-chip Peripheral Drivers */
 /* On-chip Peripheral Drivers */
 
 
 #define BSP_USING_UART
 #define BSP_USING_UART
-#define BSP_USING_UART0
+#define BSP_USING_UART1
 #define BSP_USING_GPIO
 #define BSP_USING_GPIO
 
 
 /* Onboard Peripheral Drivers */
 /* Onboard Peripheral Drivers */

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff