diff --git a/CMSIS/DoxyGen/Core_A/src/Overview.txt b/CMSIS/DoxyGen/Core_A/src/Overview.txt
index 48811ad..6deac40 100644
--- a/CMSIS/DoxyGen/Core_A/src/Overview.txt
+++ b/CMSIS/DoxyGen/Core_A/src/Overview.txt
@@ -61,7 +61,7 @@
 /**
 \page rev_histCoreA Revision History of CMSIS-Core (Cortex-A)
 
-<table class="cmtable" summary="Core Exception Name">
+<table class="cmtable" summary="Revision History">
     <tr>
       <th>Version</th>
       <th>Description</th>
diff --git a/CMSIS/DoxyGen/DAP/src/dap.txt b/CMSIS/DoxyGen/DAP/src/dap.txt
index 811f5a2..4a83d9f 100644
--- a/CMSIS/DoxyGen/DAP/src/dap.txt
+++ b/CMSIS/DoxyGen/DAP/src/dap.txt
@@ -76,7 +76,7 @@
 /** 
 \page dap_revisionHistory Revision History of CMSIS-DAP
 
-<table>
+<table class="cmtable" summary="Revision History">
     <tr>
       <th>Version</th>
       <th>Description</th>
@@ -86,7 +86,7 @@
       <td>
          Changed: Communication via WinUSB to achieve high-speed transfer rates\n
          Added: Streaming SWO via separate \ref WinUSB "WinUSB" endpoint\n
-		 Added: \ref DAP_SWO_Transport extended with transport mode 2 - Send trace data via separate \ref WinUSB "WinUSB" endpoint 
+     Added: \ref DAP_SWO_Transport extended with transport mode 2 - Send trace data via separate \ref WinUSB "WinUSB" endpoint 
       </td>
     </tr>
     <tr>
diff --git a/CMSIS/DoxyGen/DSP/dsp.dxy b/CMSIS/DoxyGen/DSP/dsp.dxy
index f1ff40a..8c79e41 100644
--- a/CMSIS/DoxyGen/DSP/dsp.dxy
+++ b/CMSIS/DoxyGen/DSP/dsp.dxy
@@ -749,10 +749,9 @@
 # spaces.
 # Note: If this tag is empty the current directory is searched.
 
-INPUT                  = "src/Change Log.txt" \
-                         . \
-                         ../../DSP/Examples/ARM \
-                         ../../DSP/Include/ \
+INPUT                  = ./src/history.txt       \
+                         ../../DSP/Examples/ARM  \
+                         ../../DSP/Include/      \
                          ../../DSP/Source/
 
 # This tag can be used to specify the character encoding of the source files
diff --git a/CMSIS/DoxyGen/DSP/src/Change Log.txt b/CMSIS/DoxyGen/DSP/src/Change Log.txt
deleted file mode 100644
index 47b9557..0000000
--- a/CMSIS/DoxyGen/DSP/src/Change Log.txt
+++ /dev/null
@@ -1,423 +0,0 @@
-/**
-\page ChangeLog_pg  Change Log
-
-<hr>
-<b>Version 1.5.2</b>
-
-Modified arm_math.h
- - fixed GNU Compiler specific diagnostics.
- - moved __SSAT and __USAT to CMSIS-Core
-
-<hr>
-<b>Version 1.5.1</b>
-
-Changed copyright note.
-
-Added ARMv8M DSP libraries.
-
-<hr>
-<b>Version 1.5.0</b>
-
-Modified arm_math.h
-- removed macro TABLE_SIZE.
-- changed preprocessor conditions to select functions instead of SIMD instruction for Cortex-M3.
-
-Modified arm_const_structs.c
-- Added structure instances for the RFFT functions (equivalent to CFFT structures).
-
-<hr>
-<b>Version 1.4.10 (no source code change [still labeled 1.4.5])</b>
-
-Modified arm_sin_cos_f32.c
-- corrected \ref arm_sin_cos_f32() for negative numbers smaller than e-4f.
-
-Modified arm_var_f32.c
-- improved  numerical stability for \ref arm_var_f32().
-
-
-<hr>
-<b>Version 1.4.9 (no source code change [still labeled 1.4.5]) 2016/09/26</b>
-
-Modified arm_mat_mult_fast_q15.c, arm_mat_mult_fast_q31.c
-- performance optimizations for \ref arm_mat_mult_fast_q15() and \ref arm_mat_mult_fast_q31().
-
-Modified arm_conv_partial_q15.c
-- corrected \ref arm_conv_partial_q15() for Cortex-M7 based cores.
-
-Modified arm_conv_q15.c
-- corrected \ref arm_conv_q15() for Cortex-M7 based cores.
-
-Modified arm_correlate_q15.c
-- corrected \ref arm_correlate_q15() for Cortex-M7 based cores.
-
-
-<hr>
-<b>Version 1.4.8 (no source code change [still labeled 1.4.5]) 2015/12/18</b>
-
-Modified arm_math.h, arm_bitreversal2.S
-- corrected arm_sin_f32() for very small negative input values.
-
-Modified arm_sin_f32.c
-- Updated Texas Instruments Arm Compiler support.
-
-Updated documentation
-- function \ref arm_rfft_fast_f32.
-
-
-<hr>
-<b>Version 1.4.7 (no source code change [still labeled 1.4.5]) 2015/10/20</b>
-
-Modified arm_math.h
-- Added explicit type casts to remove compiler warnings.
-- Supressed irrelevant warnings for toolchain GCC.
-
-Updated documentation
-- functions \ref arm_cos_f32, \ref arm_sin_f32 use table lookup combined with linear interpolation (since V1.4.2). This is now documented.
-
-
-<hr>
-<b>Version 1.4.6 (no source code change [still labeled 1.4.5]) 2015/08/26</b>
-
-Modified arm_math.h
-- Updated function \ref arm_sqrt_f32 for use with IAR.
-
-
-<hr>
-<b>Version 1.4.5 2015/03/19</b>
-
-   Added support for the Cortex-M7 processor
-
-   Fixed bug in arm_mat_inverse_f32.c and arm_mat_inverse_f64.c.
-   They weren't properly handling diagonal matrices.
-
-   arm_cfft_f32.c - help documentation updated
-
-   Updated documentation to show deprecated functions
-
-
-<hr>
-<b>Version 1.4.4 2014/07/31</b>
-
-Added the following new files:
-- arm_biquad_cascade_stereo_df2T_f32.c
-- arm_biquad_cascade_stereo_df2T_init_f32.c
-- arm_biquad_cascade_df2T_f64.c
-- arm_biquad_cascade_df2T_init_f64.c
-- arm_mat_inverse_f64.c
-- arm_cfft_q15.c
-- arm_cfft_q31.c
-
-Optimizations to the following files:
-- arm_biquad_cascade_df2T_f32.c
-- arm_fir_f32.c
-- arm_fir_fast_q31.c
-- arm_fir_q7.c
-- arm_cfft_f32.c
-- arm_cfft_radix4_q31.c
-- arm_cfft_radix4_q15.c
-- arm_rfft_q31.c
-- arm_rfft_q15.c
-
-
-<hr>
-<b>Version 1.4.3 2014/03/12</b>
-
-   Undid changes to arm_biquad_cascade_df1_q31.c
-
-   Added support for COSMIC
-
-   Changed 'short' to 'q15_t' where appropriate
-
-   Fixed arm_conv_partial_fast_q15.c for UNALIGNED_SUPPORT_DISABLE
-
-   Fixed arm_mat_cmplx_mult_q15.c for UNALIGNED_SUPPORT_DISABLE
-
-   Fixed arm_conv_partial_opt_q7.c for UNALIGNED_SUPPORT_DISABLE
-
-   Restored the internal fftlen of 16 to arm_rfft_fast_init_f32.c
-
-   Updated core_xxx.h files to newer versions from ARM
-
-<hr>
-<b>Version 1.4.2 2013/10/16</b>
-
-   Moved const structures from arm_const_structs.h to arm_const_structs.c
-
-   Rfft_fast_f32 no longer allows fft length of 16 as it wouldn't have worked anyways
-
-   Partial convolution was producing the wrong results in some cases
-
-   arm_lms_q31 and q15 now saturate the results in the M0 code to match the M3 & M4 code
-
-   Rfft_q15 and q31 had potential overflow issues resolved
-
-   arm_biquad_cascade_df1_q31.c had a typo which resulted in incorrect outputs
-
-   fast math sine and cosine now use linear interpolation
-
-   controller sin/cos now uses a more accurate interpolation algorithm
-
-   arm_mat_inverse was reading outside its input array
-
-   arm_cmplx_dot_prod was incorrect
-
-   switched some incorrect usages of __ssat to clip_q63_to_q31
-
-   changed var & std q31 to downshift input data by 8
-
-   var q31 & q15 no longer output larger data types
-
-   arm_mat_cmplx_mult_q15.c was done incorrectly for big vs little endian
-
-   arm_mat_mult_q31.c was inconsistent with the other multiplies, so added saturation
-
-   arm_conv_partial_q15 had an incorrect comparison between signed & unsigned values
-
-<hr>
-<b>Version 1.4.1 2013/02/20</b>
-
-   Updated licenses in headers to 2013
-
-   Fixed ALIGN4 macro in arm_math.h
-
-   Added files to Cortex-M0 projects so that all projects have same file list
-
-   Fixed bugs in
-     - arm_biquad_cascade_d2fT_f32.c
-     - arm_cfft_radix2_q31
-     - arm_cfft_radix2_f32
-     - arm_math.h (arm_pid functions)
-     - arm_iir_lattice_q31.c
-
-<hr>
-<b>Version 1.4.0 2013/01/09</b>
-
-   Updated with more optimizations, bug fixes and new license information in headers
-
-   Optimized functions:
-     - arm_biquad_cascade_df2T_f32
-     - arm_biquad_cascade_df1_q31
-     - arm_fir_f32
-     - arm_fir_fast_q31
-     - arm_cfft_f32
-     - arm_cfft_radix2_q31
-     - arm_rfft_fast_f32 (new function)
-
-   Fixed compiler warnings in arm_math.h for comparing signed and unsigned ints
-
-   Fixed a saturation bug in arm_rms_q15
-
-   Simplified the code in arm_sin_cos_q31
-
-   Added a preprocessor directive to treat the Cortex M0+ just like the Cortex M0
-
-   The following functions were deprecated and will be removed in a future version
-     - arm_cfft_radix2_f32
-     - arm_cfft_radix2_init_f32
-     - arm_cfft_radix4_f32
-     - arm_cfft_radix4_init_f32
-
-<hr>
-<b>Version 1.3.0</b>
-
-   Added CMSIS DSP Software Library
-
-   The CMSIS DSP Software Library is a suite of common signal processing functions targeted to Cortex-M processor based microcontrollers.
-   Even though the code has been specifically optimized towards using the extended DSP instruction set of the Cortex-M4 processor,
-   the library can be compiled for any Cortex-M processor.
-
-   For more information please see CMSIS DSP Library documentation.
-   Added Cortex-M4 Core Support
-
-   Additional folder CM4, containing the Cortex-M4 core support files, has been added.
-       CM0
-       CM3
-       CM4
-           CoreSupport
-           DeviceSupport
-
-   New naming for Core Support Files
-
-   The new Core Support Files are:
-      - core_cm#.h (# = 0, 3, 4)
-      - core_cmFunc.h (Cortex-M Core Register access functions)
-      - core_cmInstr.h (Cortex-M Core instructions)
-      - core_cm4_simd.h (Cortex-M4 SIMD instructions)
-
-<hr>
-<b>Version 1.2.0</b>
-
-   Removed CMSIS Middelware packages
-
-   CMSIS Middleware is on hold from ARM side until a agreement between all CMSIS partners is found.
-   SystemFrequency renamed to SystemCoreClock
-
-   The variable name SystemCoreClock is more precise than SystemFrequency because the variable holds the clock value at which the core is running.
-   Changed startup concept
-
-   The old startup concept (calling SystemInit_ExtMemCtl from startup file and calling SystemInit from main)
-   has the weakness that it does not work for controllers which need a already configuerd clock system to configure
-   the external memory controller.
-
-   Changed startup concept
-      - SystemInit() is called from startup file before premain.
-      - SystemInit() configures the clock system and also configures an existing external memory controller.
-      - SystemInit() must not use global variables.
-      - SystemCoreClock is initialized with a correct predefined value.
-      - Additional function void SystemCoreClockUpdate (void) is provided.
-      - SystemCoreClockUpdate() updates the variable SystemCoreClock and must be called whenever the core clock is changed.
-      - SystemCoreClockUpdate() evaluates the clock register settings and calculates the current core clock.
-
-   Advanced Debug Functions
-
-   ITM communication channel is only capable for OUT direction.
-   To allow also communication for IN direction a simple concept is provided.
-      - Global variable volatile int ITM_RxBuffer used for IN data.
-      - Function int ITM_CheckChar (void) checks if a new character is available.
-      - Function int ITM_ReceiveChar (void) retrieves the new character.
-
-   For detailed explanation see file CMSIS debug support.htm.
-
-   Core Register Bit Definitions
-
-   Files core_cm3.h and core_cm0.h contain now bit definitions for Core Registers. The name for the defines
-   correspond with the Cortex-M Technical Reference Manual.
-
-   e.g. SysTick structure with bit definitions
-
-\code
-   /** @addtogroup CMSIS_CM3_SysTick CMSIS CM3 SysTick
-     memory mapped structure for SysTick
-     @{
-    */
-   typedef struct
-   {
-     __IO uint32_t CTRL;                         /*!< Offset: 0x00  SysTick Control and Status Register */
-     __IO uint32_t LOAD;                         /*!< Offset: 0x04  SysTick Reload Value Register       */
-     __IO uint32_t VAL;                          /*!< Offset: 0x08  SysTick Current Value Register      */
-     __I  uint32_t CALIB;                        /*!< Offset: 0x0C  SysTick Calibration Register        */
-   } SysTick_Type;
-
-   /* 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_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_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 */
-   #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 */
-   #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 */
-   #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_TENMS_Pos         0                                      /*!< SysTick CALIB: TENMS Position */
-   #define SysTick_CALIB_TENMS_Msk        (0xFFFFFFul << SysTick_VAL_CURRENT_Pos) /*!< SysTick CALIB: TENMS Mask */
-   /*@}*/ /* end of group CMSIS_CM3_SysTick */
-\endcode
-
-   DoxyGen Tags
-
-   DoxyGen tags in files core_cm3.[c,h] and core_cm0.[c,h] are reworked to create proper documentation using DoxyGen.
-   Folder Structure
-
-   The folder structure is changed to differentiate the single support packages.
-
-       CM0
-       CM3
-           CoreSupport
-           DeviceSupport
-               Vendor
-                   Device
-                       Startup
-                           Toolchain
-                           Toolchain
-                           ...
-                   Device
-                   ...
-               Vendor
-               ...
-           Example (optional)
-               Toolchain
-                   Device
-                   Device
-                   ...
-               Toolchain
-               ...
-       Documentation
-
-<hr>
-<b>Version 1.1.0 2012/02/15</b>
-
-   Updated with more optimizations, bug fixes and minor API changes.
-
-<hr>
-<b>Version 1.0.11 2011/10/18</b>
-
-   Bug Fix in conv, correlation, partial convolution.
-
-<hr>
-<b>Version 1.0.10 2011/7/15</b>
-
-   Big Endian support added and Merged M0 and M3/M4 Source code.
-
-<hr>
-<b>Version 1.0.3 2010/11/29</b>
-
-   Re-organized the CMSIS folders and updated documentation.
-
-<hr>
-<b>Version 1.0.2 2010/11/11</b>
-
-   Documentation updated.
-
-<hr>
-<b>Version 1.0.1 2010/10/05</b>
-
-   Production release and review comments incorporated.
-
-<hr>
-<b>Version 1.0.0 2010/09/20</b>
-
-   Production release and review comments incorporated.
-
-<hr>
-<b>Version 0.0.9  2010/08/27</b>
-
-   Added files:
-      arm_biquad_cascade_df1_fast_q15.c
-      arm_biquad_cascade_df1_fast_q31.c
-      arm_fir_fast_q31.c
-      arm_fir_fast_q15.c
-
-<hr>
-<b>Version 0.0.7  2010/06/10</b>
-
-   Misra-C changes done
-
-<hr>
-<b>Version 0.0.5  2010/04/26</b>
-
-   incorporated review comments and updated with latest CMSIS layer
-
-<hr>
-<b>Version 0.0.3  2010/03/10 DP</b>
-
-   Initial version
-
-*/
diff --git a/CMSIS/DoxyGen/DSP/src/history.txt b/CMSIS/DoxyGen/DSP/src/history.txt
new file mode 100644
index 0000000..80859a8
--- /dev/null
+++ b/CMSIS/DoxyGen/DSP/src/history.txt
@@ -0,0 +1,450 @@
+/**
+\page ChangeLog_pg  Revision History of CMSIS-DSP
+
+<table class="cmtable" summary="Revision History">
+  <tr>
+    <th>Version</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td>V1.5.2</td>
+    <td>
+      Modified arm_math.h
+       - fixed GNU Compiler specific diagnostics.
+       - moved __SSAT and __USAT to CMSIS-Core
+    </td>
+  </tr>
+  <tr>
+    <td>V1.5.1</td>
+    <td>
+      Changed copyright note.
+      
+      Added ARMv8M DSP libraries.
+    </td>
+  </tr>
+  <tr>
+    <td>V1.5.0</td>
+    <td>
+      Modified arm_math.h
+      - removed macro TABLE_SIZE.
+      - changed preprocessor conditions to select functions instead of SIMD instruction for Cortex-M3.
+      
+      Modified arm_const_structs.c
+      - Added structure instances for the RFFT functions (equivalent to CFFT structures).
+    </td>
+  </tr>
+  <tr>
+    <td>V1.4.10 (no source code change [still labeled 1.4.5])</td>
+    <td>
+      Modified arm_sin_cos_f32.c
+      - corrected \ref arm_sin_cos_f32() for negative numbers smaller than e-4f.
+      
+      Modified arm_var_f32.c
+      - improved  numerical stability for \ref arm_var_f32().
+    </td>
+  </tr>
+  <tr>
+    <td>V1.4.9 (no source code change [still labeled 1.4.5]) 2016/09/26</td>
+    <td>
+      Modified arm_mat_mult_fast_q15.c, arm_mat_mult_fast_q31.c
+      - performance optimizations for \ref arm_mat_mult_fast_q15() and \ref arm_mat_mult_fast_q31().
+      
+      Modified arm_conv_partial_q15.c
+      - corrected \ref arm_conv_partial_q15() for Cortex-M7 based cores.
+      
+      Modified arm_conv_q15.c
+      - corrected \ref arm_conv_q15() for Cortex-M7 based cores.
+      
+      Modified arm_correlate_q15.c
+      - corrected \ref arm_correlate_q15() for Cortex-M7 based cores.
+    </td>
+  </tr>
+  <tr>
+    <td>V1.4.8 (no source code change [still labeled 1.4.5]) 2015/12/18</td>
+    <td>
+      Modified arm_math.h, arm_bitreversal2.S
+      - corrected arm_sin_f32() for very small negative input values.
+      
+      Modified arm_sin_f32.c
+      - Updated Texas Instruments Arm Compiler support.
+      
+      Updated documentation
+      - function \ref arm_rfft_fast_f32.
+    </td>
+  </tr>
+  <tr>
+    <td>V1.4.7 (no source code change [still labeled 1.4.5]) 2015/10/20</td>
+    <td>
+      Modified arm_math.h
+      - Added explicit type casts to remove compiler warnings.
+      - Supressed irrelevant warnings for toolchain GCC.
+      
+      Updated documentation
+      - functions \ref arm_cos_f32, \ref arm_sin_f32 use table lookup combined with linear interpolation (since V1.4.2). This is now documented.
+    </td>
+  </tr>
+  <tr>
+    <td>V1.4.6 (no source code change [still labeled 1.4.5]) 2015/08/26</td>
+    <td>
+      Modified arm_math.h
+      - Updated function \ref arm_sqrt_f32 for use with IAR.
+    </td>
+  </tr>
+  <tr>
+    <td>V1.4.5 2015/03/19</td>
+    <td>
+      Added support for the Cortex-M7 processor
+    
+      Fixed bug in arm_mat_inverse_f32.c and arm_mat_inverse_f64.c.
+      They weren't properly handling diagonal matrices.
+    
+      arm_cfft_f32.c - help documentation updated
+    
+      Updated documentation to show deprecated functions
+    </td>
+  </tr>
+  <tr>
+    <td>V1.4.4 2014/07/31</td>
+    <td>
+      Added the following new files:
+      - arm_biquad_cascade_stereo_df2T_f32.c
+      - arm_biquad_cascade_stereo_df2T_init_f32.c
+      - arm_biquad_cascade_df2T_f64.c
+      - arm_biquad_cascade_df2T_init_f64.c
+      - arm_mat_inverse_f64.c
+      - arm_cfft_q15.c
+      - arm_cfft_q31.c
+      
+      Optimizations to the following files:
+      - arm_biquad_cascade_df2T_f32.c
+      - arm_fir_f32.c
+      - arm_fir_fast_q31.c
+      - arm_fir_q7.c
+      - arm_cfft_f32.c
+      - arm_cfft_radix4_q31.c
+      - arm_cfft_radix4_q15.c
+      - arm_rfft_q31.c
+      - arm_rfft_q15.c
+    </td>
+  </tr>
+  <tr>
+    <td>V1.4.3 2014/03/12</td>
+    <td>
+      Undid changes to arm_biquad_cascade_df1_q31.c
+    
+      Added support for COSMIC
+    
+      Changed 'short' to 'q15_t' where appropriate
+    
+      Fixed arm_conv_partial_fast_q15.c for UNALIGNED_SUPPORT_DISABLE
+    
+      Fixed arm_mat_cmplx_mult_q15.c for UNALIGNED_SUPPORT_DISABLE
+    
+      Fixed arm_conv_partial_opt_q7.c for UNALIGNED_SUPPORT_DISABLE
+    
+      Restored the internal fftlen of 16 to arm_rfft_fast_init_f32.c
+    
+      Updated core_xxx.h files to newer versions from ARM
+    </td>
+  </tr>
+  <tr>
+    <td>V1.4.2 2013/10/16</td>
+    <td>
+      Moved const structures from arm_const_structs.h to arm_const_structs.c
+    
+      Rfft_fast_f32 no longer allows fft length of 16 as it wouldn't have worked anyways
+    
+      Partial convolution was producing the wrong results in some cases
+    
+      arm_lms_q31 and q15 now saturate the results in the M0 code to match the M3 &amp; M4 code
+    
+      Rfft_q15 and q31 had potential overflow issues resolved
+    
+      arm_biquad_cascade_df1_q31.c had a typo which resulted in incorrect outputs
+    
+      fast math sine and cosine now use linear interpolation
+    
+      controller sin/cos now uses a more accurate interpolation algorithm
+    
+      arm_mat_inverse was reading outside its input array
+    
+      arm_cmplx_dot_prod was incorrect
+    
+      switched some incorrect usages of __ssat to clip_q63_to_q31
+    
+      changed var &amp; std q31 to downshift input data by 8
+    
+      var q31 &amp; q15 no longer output larger data types
+    
+      arm_mat_cmplx_mult_q15.c was done incorrectly for big vs little endian
+    
+      arm_mat_mult_q31.c was inconsistent with the other multiplies, so added saturation
+    
+      arm_conv_partial_q15 had an incorrect comparison between signed &amp; unsigned values
+    </td>
+  </tr>
+  <tr>
+    <td>V1.4.1 2013/02/20</td>
+    <td>
+      Updated licenses in headers to 2013
+    
+      Fixed ALIGN4 macro in arm_math.h
+    
+      Added files to Cortex-M0 projects so that all projects have same file list
+    
+      Fixed bugs in
+        - arm_biquad_cascade_d2fT_f32.c
+        - arm_cfft_radix2_q31
+        - arm_cfft_radix2_f32
+        - arm_math.h (arm_pid functions)
+        - arm_iir_lattice_q31.c
+    </td>
+  </tr>
+  <tr>
+    <td>V1.4.0 2013/01/09</td>
+    <td>
+      Updated with more optimizations, bug fixes and new license information in headers
+    
+      Optimized functions:
+        - arm_biquad_cascade_df2T_f32
+        - arm_biquad_cascade_df1_q31
+        - arm_fir_f32
+        - arm_fir_fast_q31
+        - arm_cfft_f32
+        - arm_cfft_radix2_q31
+        - arm_rfft_fast_f32 (new function)
+    
+      Fixed compiler warnings in arm_math.h for comparing signed and unsigned ints
+    
+      Fixed a saturation bug in arm_rms_q15
+    
+      Simplified the code in arm_sin_cos_q31
+    
+      Added a preprocessor directive to treat the Cortex M0+ just like the Cortex M0
+    
+      The following functions were deprecated and will be removed in a future version
+        - arm_cfft_radix2_f32
+        - arm_cfft_radix2_init_f32
+        - arm_cfft_radix4_f32
+        - arm_cfft_radix4_init_f32
+    </td>
+  </tr>
+  <tr>
+    <td>V1.3.0</td>
+    <td>
+      Added CMSIS DSP Software Library
+    
+      The CMSIS DSP Software Library is a suite of common signal processing functions targeted to Cortex-M processor based microcontrollers.
+      Even though the code has been specifically optimized towards using the extended DSP instruction set of the Cortex-M4 processor,
+      the library can be compiled for any Cortex-M processor.
+    
+      For more information please see CMSIS DSP Library documentation.
+      Added Cortex-M4 Core Support
+    
+      Additional folder CM4, containing the Cortex-M4 core support files, has been added.
+          CM0
+          CM3
+          CM4
+              CoreSupport
+              DeviceSupport
+    
+      New naming for Core Support Files
+    
+      The new Core Support Files are:
+          - core_cm#.h (# = 0, 3, 4)
+          - core_cmFunc.h (Cortex-M Core Register access functions)
+          - core_cmInstr.h (Cortex-M Core instructions)
+          - core_cm4_simd.h (Cortex-M4 SIMD instructions)
+    </td>
+  </tr>
+  <tr>
+    <td>V1.2.0</td>
+    <td>
+      Removed CMSIS Middelware packages
+    
+      CMSIS Middleware is on hold from ARM side until a agreement between all CMSIS partners is found.
+      SystemFrequency renamed to SystemCoreClock
+    
+      The variable name SystemCoreClock is more precise than SystemFrequency because the variable holds the clock value at which the core is running.
+      Changed startup concept
+    
+      The old startup concept (calling SystemInit_ExtMemCtl from startup file and calling SystemInit from main)
+      has the weakness that it does not work for controllers which need a already configuerd clock system to configure
+      the external memory controller.
+    
+      Changed startup concept
+        - SystemInit() is called from startup file before premain.
+        - SystemInit() configures the clock system and also configures an existing external memory controller.
+        - SystemInit() must not use global variables.
+        - SystemCoreClock is initialized with a correct predefined value.
+        - Additional function void SystemCoreClockUpdate (void) is provided.
+        - SystemCoreClockUpdate() updates the variable SystemCoreClock and must be called whenever the core clock is changed.
+        - SystemCoreClockUpdate() evaluates the clock register settings and calculates the current core clock.
+    
+      Advanced Debug Functions
+    
+      ITM communication channel is only capable for OUT direction.
+      To allow also communication for IN direction a simple concept is provided.
+        - Global variable volatile int ITM_RxBuffer used for IN data.
+        - Function int ITM_CheckChar (void) checks if a new character is available.
+        - Function int ITM_ReceiveChar (void) retrieves the new character.
+    
+      For detailed explanation see file CMSIS debug support.htm.
+    
+      Core Register Bit Definitions
+    
+      Files core_cm3.h and core_cm0.h contain now bit definitions for Core Registers. The name for the defines
+      correspond with the Cortex-M Technical Reference Manual.
+    
+      e.g. SysTick structure with bit definitions
+    
+      \code
+        /** @addtogroup CMSIS_CM3_SysTick CMSIS CM3 SysTick
+          memory mapped structure for SysTick
+          @{
+        */
+        typedef struct
+        {
+          __IO uint32_t CTRL;                         /*!&lt; Offset: 0x00  SysTick Control and Status Register */
+          __IO uint32_t LOAD;                         /*!&lt; Offset: 0x04  SysTick Reload Value Register       */
+          __IO uint32_t VAL;                          /*!&lt; Offset: 0x08  SysTick Current Value Register      */
+          __I  uint32_t CALIB;                        /*!&lt; Offset: 0x0C  SysTick Calibration Register        */
+        } SysTick_Type;
+      
+        /* SysTick Control / Status Register Definitions */
+        #define SysTick_CTRL_COUNTFLAG_Pos     16                                      /*!&lt; SysTick CTRL: COUNTFLAG Position */
+        #define SysTick_CTRL_COUNTFLAG_Msk    (1ul &lt;&lt; SysTick_CTRL_COUNTFLAG_Pos)      /*!&lt; SysTick CTRL: COUNTFLAG Mask */
+      
+        #define SysTick_CTRL_CLKSOURCE_Pos      2                                      /*!&lt; SysTick CTRL: CLKSOURCE Position */
+        #define SysTick_CTRL_CLKSOURCE_Msk     (1ul &lt;&lt; SysTick_CTRL_CLKSOURCE_Pos)     /*!&lt; SysTick CTRL: CLKSOURCE Mask */
+      
+        #define SysTick_CTRL_TICKINT_Pos        1                                      /*!&lt; SysTick CTRL: TICKINT Position */
+        #define SysTick_CTRL_TICKINT_Msk       (1ul &lt;&lt; SysTick_CTRL_TICKINT_Pos)       /*!&lt; SysTick CTRL: TICKINT Mask */
+      
+        #define SysTick_CTRL_ENABLE_Pos         0                                      /*!&lt; SysTick CTRL: ENABLE Position */
+        #define SysTick_CTRL_ENABLE_Msk        (1ul &lt;&lt; SysTick_CTRL_ENABLE_Pos)        /*!&lt; SysTick CTRL: ENABLE Mask */
+      
+        /* SysTick Reload Register Definitions */
+        #define SysTick_LOAD_RELOAD_Pos         0                                      /*!&lt; SysTick LOAD: RELOAD Position */
+        #define SysTick_LOAD_RELOAD_Msk        (0xFFFFFFul &lt;&lt; SysTick_LOAD_RELOAD_Pos) /*!&lt; SysTick LOAD: RELOAD Mask */
+      
+        /* SysTick Current Register Definitions */
+        #define SysTick_VAL_CURRENT_Pos         0                                      /*!&lt; SysTick VAL: CURRENT Position */
+        #define SysTick_VAL_CURRENT_Msk        (0xFFFFFFul &lt;&lt; SysTick_VAL_CURRENT_Pos) /*!&lt; SysTick VAL: CURRENT Mask */
+      
+        /* SysTick Calibration Register Definitions */
+        #define SysTick_CALIB_NOREF_Pos        31                                      /*!&lt; SysTick CALIB: NOREF Position */
+        #define SysTick_CALIB_NOREF_Msk       (1ul &lt;&lt; SysTick_CALIB_NOREF_Pos)         /*!&lt; SysTick CALIB: NOREF Mask */
+      
+        #define SysTick_CALIB_SKEW_Pos         30                                      /*!&lt; SysTick CALIB: SKEW Position */
+        #define SysTick_CALIB_SKEW_Msk        (1ul &lt;&lt; SysTick_CALIB_SKEW_Pos)          /*!&lt; SysTick CALIB: SKEW Mask */
+      
+        #define SysTick_CALIB_TENMS_Pos         0                                      /*!&lt; SysTick CALIB: TENMS Position */
+        #define SysTick_CALIB_TENMS_Msk        (0xFFFFFFul &lt;&lt; SysTick_VAL_CURRENT_Pos) /*!&lt; SysTick CALIB: TENMS Mask */
+        /*@}*/ /* end of group CMSIS_CM3_SysTick */
+      \endcode
+    
+      DoxyGen Tags
+    
+      DoxyGen tags in files core_cm3.[c,h] and core_cm0.[c,h] are reworked to create proper documentation using DoxyGen.
+      Folder Structure
+    
+      The folder structure is changed to differentiate the single support packages.
+    
+          CM0
+          CM3
+              CoreSupport
+              DeviceSupport
+                  Vendor
+                      Device
+                          Startup
+                              Toolchain
+                              Toolchain
+                              ...
+                      Device
+                      ...
+                  Vendor
+                  ...
+              Example (optional)
+                  Toolchain
+                      Device
+                      Device
+                      ...
+                  Toolchain
+                  ...
+          Documentation
+    </td>
+  </tr>
+  <tr>
+    <td>V1.1.0 2012/02/15</td>
+    <td>
+      Updated with more optimizations, bug fixes and minor API changes.
+    </td>
+  </tr>
+  <tr>
+    <td>V1.0.11 2011/10/18</td>
+    <td>
+      Bug Fix in conv, correlation, partial convolution.
+    </td>
+  </tr>
+  <tr>
+    <td>V1.0.10 2011/7/15</td>
+    <td>
+      Big Endian support added and Merged M0 and M3/M4 Source code.
+    </td>
+  </tr>
+  <tr>
+    <td>V1.0.3 2010/11/29</td>
+    <td>
+      Re-organized the CMSIS folders and updated documentation.
+    </td>
+  </tr>
+  <tr>
+    <td>V1.0.2 2010/11/11</td>
+    <td>
+      Documentation updated.
+    </td>
+  </tr>
+  <tr>
+    <td>V1.0.1 2010/10/05</td>
+    <td>
+      Production release and review comments incorporated.
+    </td>
+  </tr>
+  <tr>
+    <td>V1.0.0 2010/09/20</td>
+    <td>
+      Production release and review comments incorporated.
+    </td>
+  </tr>
+  <tr>
+    <td>V0.0.9  2010/08/27</td>
+    <td>
+      Added files:
+          - arm_biquad_cascade_df1_fast_q15.c
+          - arm_biquad_cascade_df1_fast_q31.c
+          - arm_fir_fast_q31.c
+          - arm_fir_fast_q15.c
+    </td>
+  </tr>
+  <tr>
+    <td>V0.0.7  2010/06/10</td>
+    <td>
+      Misra-C changes done
+    </td>
+  </tr>
+  <tr>
+    <td>V0.0.5  2010/04/26</td>
+    <td>
+      incorporated review comments and updated with latest CMSIS layer
+    </td>
+  </tr>
+  <tr>
+    <td>V0.0.3  2010/03/10 DP</td>
+    <td>
+      Initial version
+    </td>
+  </tr>
+</table>
+
+*/
diff --git a/CMSIS/DoxyGen/NN/nn.dxy b/CMSIS/DoxyGen/NN/nn.dxy
index dbcac57..36e93e8 100644
--- a/CMSIS/DoxyGen/NN/nn.dxy
+++ b/CMSIS/DoxyGen/NN/nn.dxy
@@ -749,10 +749,9 @@
 # spaces.
 # Note: If this tag is empty the current directory is searched.
 
-INPUT                  = "src/Change Log.txt" \
-                         . \
-                         ../../NN/Examples/ARM \
-                         ../../NN/Include/ \
+INPUT                  = ./src/history.txt      \
+                         ../../NN/Examples/ARM  \
+                         ../../NN/Include/      \
                          ../../NN/Source/
 
 # This tag can be used to specify the character encoding of the source files
diff --git a/CMSIS/DoxyGen/NN/src/Change Log.txt b/CMSIS/DoxyGen/NN/src/Change Log.txt
deleted file mode 100644
index 63dcaa8..0000000
--- a/CMSIS/DoxyGen/NN/src/Change Log.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-/**
-\page ChangeLog_pg  Change Log
-
-<hr>
-<b>Version 1.0.0</b>
-
-   Initial version
-
-*/
diff --git a/CMSIS/DoxyGen/NN/src/history.txt b/CMSIS/DoxyGen/NN/src/history.txt
new file mode 100644
index 0000000..4954224
--- /dev/null
+++ b/CMSIS/DoxyGen/NN/src/history.txt
@@ -0,0 +1,17 @@
+/**
+\page ChangeLog_pg  Revision History of CMSIS-NN
+
+<table class="cmtable" summary="Revision History">
+  <tr>
+    <th>Version</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td>V1.0.0</td>
+    <td>
+      Initial version
+    </td>
+  </tr>
+</table>
+
+*/
diff --git a/CMSIS/DoxyGen/Pack/src/General.txt b/CMSIS/DoxyGen/Pack/src/General.txt
index 3038e9c..6d99232 100644
--- a/CMSIS/DoxyGen/Pack/src/General.txt
+++ b/CMSIS/DoxyGen/Pack/src/General.txt
@@ -5,10 +5,10 @@
 <b>CMSIS-Pack</b> describes a delivery mechanism for software components, device parameters, and evaluation board
 support. The XML-based package description (PDSC) file describes the content of a \ref cp_SWComponents "Software Pack"
 (file collection) that includes:
- -	Source code, header files, and software libraries
- -	Documentation and source code templates
- -	Device parameters along with startup code and programming algorithms
- -	Example projects
+ -  Source code, header files, and software libraries
+ -  Documentation and source code templates
+ -  Device parameters along with startup code and programming algorithms
+ -  Example projects
 
 The complete file collection along with the PDSC file is shipped in ZIP-format as a Software Pack. The PDSC file is designed
 for software development environments and describes the user and device relevant context for the files supplied within such
@@ -32,7 +32,7 @@
   - <b>Board Support Pack (BSP):</b> contains documentation, schematics, and drivers for a certain development board.
   - <b>In-house Software Packs:</b> usually contain software components that can be distributed within a
     company or engineering group.
-	
+  
 \note A Software Pack can address multiple use cases at the same time!
 
 The following sections give you more details on the basics:
@@ -106,9 +106,9 @@
     <td>1.4.7</td>
     <td>Modifications compared to Version 1.4.6
 - added multiple version types to tighten the schema checking depending on context
-- added new generator sections for exe, web and eclipse based generators in \<generator>
+- added new generator sections for exe, web and eclipse based generators in &lt;generator&gt;
 - added new processor attributes Dtz = Trustzone and Ddsp = DSP instructions for Armv8-M
-- added new attributes Dtz, Ddsp, Dsecure to conditions \<require>, \<deny>, \<accept>
+- added new attributes Dtz, Ddsp, Dsecure to conditions &lt;require&gt;, &lt;deny&gt;, &lt;accept&gt;
 - added new processors Cortex-M23 and Cortex-M33 and other in DcoreEnum
 - added new attribute public to books and images to indicate public use of documents and board images
     </td>
@@ -130,18 +130,18 @@
     <td>1.4.4</td>
     <td>Modifications compared to Version 1.4.3
 - added: attribute defaultResetSequence to DebugType.
-- added: \<requirements> section:
-    - \<packages> defining dependencies between packs
-    - \<languages> defining required language support e.g. C99
-    - \<compiler> defining required toolchains
-- added: \<create> section used for tool independent project description
+- added: &lt;requirements&gt; section:
+    - &lt;packages&gt; defining dependencies between packs
+    - &lt;languages&gt; defining required language support e.g. C99
+    - &lt;compiler&gt; defining required toolchains
+- added: &lt;create&gt; section used for tool independent project description
     - attributes: name, documentation, condition
-    - \<target> specifies the board and device targeted by the project 
-    - \<options> 
-    - \<files> specifies the grouped files 
-- updated: \<algorith> element
+    - &lt;target&gt; specifies the board and device targeted by the project 
+    - &lt;options&gt; 
+    - &lt;files&gt; specifies the grouped files 
+- updated: &lt;algorith&gt; element
     - added attributes: style, parameter and endian
-- updated: \<memory> element
+- updated: &lt;memory&gt; element
     - added attributes: name, access and alias
     - deprecating attribute: id (replaced by name + access)
     </td>
@@ -149,23 +149,26 @@
   <tr>
     <td>1.4.3</td>
     <td>Modifications compared to Version 1.4.1
-- Adding attribute "sdf" to debugconfig element within section \<devices>
+- Adding attribute "sdf" to debugconfig element within section &lt;devices&gt;
+    </td>
   </tr>
-	<tr>
+  <tr>
     <td>1.4.1</td>
     <td>Modifications compared to Version 1.4.0
 - pName, Dname, Dvariant type changed from xs:string to RestrictedString 
     </td>
   </tr>
   <tr>
-	  <td>1.4.0</td>
-	  <td>Modifications compared to Version 1.3.3:
+    <td>1.4.0</td>
+    <td>Modifications compared to Version 1.3.3:
 - device section <em>memory</em> specification redefined, deprecating <em>id</em> attribute
 - device section <em>algorithm</em> support multiple flash programming algorithm styles
 - device section <em>debug</em> adding CJTAG debug port type
-    <tr>
-      <td>1.3.3</td>
-      <td>Modifications compared to Version 1.3.1:
+    </td>
+  </tr>
+  <tr>
+    <td>1.3.3</td>
+    <td>Modifications compared to Version 1.3.1:
 - Schema Version remains unchanged, since no incompatible update
 - <em>Added</em> generator section can specify a target GPDSC file that it will generate
 - <em>Added</em> A component can be linked to a generator and the generator's GPDSC file will be
@@ -179,54 +182,54 @@
   - check for duplicate device definitions
   - check for 
   - minor bug fixes
-      </td>
-    </tr> 
-    <tr>
-      <td>1.3.1</td>
-      <td>Modifications compared to Version 1.3:
+    </td>
+  </tr> 
+  <tr>
+    <td>1.3.1</td>
+    <td>Modifications compared to Version 1.3:
 - Schema Version remains unchanged, since no incompatible update
 - <em>Added</em> Cortex-M7 to the predefined list of processors
 - <em>Updated</em> Vendor list
 - <em>Added</em> File version attribute to debugvars element of device description
 - <em>Updated</em> XML file header encoding tag set to capital "UTF8"
-- <em>Deprecated</em> init attribute of \<memory> element in \<devices> section deprecated
-      </td>
-    </tr> 
-    <tr>
-      <td>1.3</td>
-      <td>Modifications compared to Version 1.2:
+- <em>Deprecated</em> init attribute of &lt;memory&gt; element in &lt;devices&gt; section deprecated
+    </td>
+  </tr> 
+  <tr>
+    <td>1.3</td>
+    <td>Modifications compared to Version 1.2:
  - <em>Added</em> attributes to release tag for managing deprecation and changing Pack IDs
  - <em>Removed</em> external RAMn and ROMn memory IDs in memory tag
- - <em>Added</em> FileCategoryTypes in \<file> element for C, C++, Assembler, Linker
- - <em>Extended</em> specification of \<require>, \<accept> and \<deny> with Cversion and Capiversion ranges
+ - <em>Added</em> FileCategoryTypes in &lt;file&gt; element for C, C++, Assembler, Linker
+ - <em>Extended</em> specification of &lt;require&gt;, &lt;accept&gt; and &lt;deny&gt; with Cversion and Capiversion ranges
  - <em>Added</em> \ref createPackUtil and \ref packChk for Pack validation
  - <em>Added</em> documentation for the Example Pack based on LPC1800 Device Family
- - <em>Refined</em> \<debug> element description
+ - <em>Refined</em> &lt;debug&gt; element description
  - Many clarifications in the documentation along with examples
-      </td>
-    </tr>
-    <tr>
-      <td>1.2</td>
-      <td>Clarifications for release.</td>
-    </tr>
-    <tr>
-      <td>1.1 - Preliminary</td>
-      <td>Update release for review:
+    </td>
+  </tr>
+  <tr>
+    <td>1.2</td>
+    <td>Clarifications for release.</td>
+  </tr>
+  <tr>
+    <td>1.1 - Preliminary</td>
+    <td>Update release for review:
  - <em>new</em> Boards description
  - <em>new</em> Debug description
  - <em>revised</em> Device Feature capture
  - <em>new</em> Generator description
  - <em>new</em> Flash Algorithm Specification 
  - <em>new</em> Configuration Wizard Annotation Specification</td>
-    </tr>
-    <tr>
-      <td>1.0 - Preliminary</td>
-      <td>Preliminary release for review</td>
-    </tr>
-    <tr>
-      <td>0.10</td>
-      <td>Release for beta review</td>
-    </tr>
+  </tr>
+  <tr>
+    <td>1.0 - Preliminary</td>
+    <td>Preliminary release for review</td>
+  </tr>
+  <tr>
+    <td>0.10</td>
+    <td>Release for beta review</td>
+  </tr>
 </table>
 */
 
