reformatting doxygen comment markup (#1660)

diff --git a/src/common/boot_picoboot/include/boot/picoboot.h b/src/common/boot_picoboot/include/boot/picoboot.h
index ddfa0aa..fa9d463 100644
--- a/src/common/boot_picoboot/include/boot/picoboot.h
+++ b/src/common/boot_picoboot/include/boot/picoboot.h
@@ -18,7 +18,7 @@
 /** \file picoboot.h
 *  \defgroup boot_picoboot boot_picoboot
 *
-* Header file for the PICOBOOT USB interface exposed by an RP2040 in BOOTSEL mode.
+* \brief Header file for the PICOBOOT USB interface exposed by an RP2040 in BOOTSEL mode.
 */
 
 #define PICOBOOT_MAGIC 0x431fd10bu
diff --git a/src/common/boot_uf2/include/boot/uf2.h b/src/common/boot_uf2/include/boot/uf2.h
index a040242..e360cf4 100644
--- a/src/common/boot_uf2/include/boot/uf2.h
+++ b/src/common/boot_uf2/include/boot/uf2.h
@@ -13,7 +13,7 @@
 /** \file uf2.h
 *  \defgroup boot_uf2 boot_uf2
 *
-* Header file for the UF2 format supported by an RP2040 in BOOTSEL mode.
+* \brief Header file for the UF2 format supported by an RP2040 in BOOTSEL mode.
 */
 
 #define UF2_MAGIC_START0 0x0A324655u
diff --git a/src/common/pico_base/include/pico.h b/src/common/pico_base/include/pico.h
index 9c2081a..5b7dbe9 100644
--- a/src/common/pico_base/include/pico.h
+++ b/src/common/pico_base/include/pico.h
@@ -10,7 +10,7 @@
 /** \file pico.h
  *  \defgroup pico_base pico_base
  *
- * Core types and macros for the Raspberry Pi Pico SDK. This header is intended to be included by all source code
+ * \brief Core types and macros for the Raspberry Pi Pico SDK. This header is intended to be included by all source code
  * as it includes configuration headers and overrides in the correct order
  *
  * This header may be included by assembly code
diff --git a/src/common/pico_binary_info/include/pico/binary_info.h b/src/common/pico_binary_info/include/pico/binary_info.h
index b5c08e7..58fb4c7 100644
--- a/src/common/pico_binary_info/include/pico/binary_info.h
+++ b/src/common/pico_binary_info/include/pico/binary_info.h
@@ -10,7 +10,7 @@
 /** \file binary_info.h
  *  \defgroup pico_binary_info pico_binary_info
  *
- * Binary info is intended for embedding machine readable information with the binary in FLASH.
+ * \brief Binary info is intended for embedding machine readable information with the binary in FLASH.
  *
  * Example uses include:
  *
diff --git a/src/common/pico_binary_info/include/pico/binary_info/code.h b/src/common/pico_binary_info/include/pico/binary_info/code.h
index a1b13d9..bd72edf 100644
--- a/src/common/pico_binary_info/include/pico/binary_info/code.h
+++ b/src/common/pico_binary_info/include/pico/binary_info/code.h
@@ -29,12 +29,12 @@
 #define __bi_enclosure_check(x) (x)
 #endif
 /**
- * Declare some binary information that will be included if the contain source file/line is compiled into the binary
+ * \brief Declare some binary information that will be included if the contain source file/line is compiled into the binary
  * \ingroup pico_binary_info
  */
 #define bi_decl(_decl) __bi_mark_enclosure _decl; __bi_decl(__bi_ptr_lineno_var_name, &__bi_lineno_var_name.core, ".binary_info.keep.", __used);
 /**
- * Declare some binary information that will be included if the function containing the decl is linked into the binary.
+ * \brief Declare some binary information that will be included if the function containing the decl is linked into the binary.
  * The SDK uses --gc-sections, so functions that are never called will be removed by the linker, and any associated
  * binary information declared this way will also be stripped
  * \ingroup pico_binary_info
diff --git a/src/common/pico_bit_ops/include/pico/bit_ops.h b/src/common/pico_bit_ops/include/pico/bit_ops.h
index 7b63c1d..d3a1dd5 100644
--- a/src/common/pico_bit_ops/include/pico/bit_ops.h
+++ b/src/common/pico_bit_ops/include/pico/bit_ops.h
@@ -16,7 +16,7 @@
 /** \file bit_ops.h
 *  \defgroup pico_bit_ops pico_bit_ops
 *
-* Optimized bit manipulation functions.
+* \brief Optimized bit manipulation functions.
 * Additionally provides  replacement implementations of the compiler built-ins __builtin_popcount, __builtin_clz
 * and __bulitin_ctz
 */
diff --git a/src/common/pico_divider/include/pico/divider.h b/src/common/pico_divider/include/pico/divider.h
index 4c71301..574ad38 100644
--- a/src/common/pico_divider/include/pico/divider.h
+++ b/src/common/pico_divider/include/pico/divider.h
@@ -16,7 +16,7 @@
 
 /**
  * \defgroup pico_divider pico_divider
- * Optimized 32 and 64 bit division functions accelerated by the RP2040 hardware divider.
+ * \brief Optimized 32 and 64 bit division functions accelerated by the RP2040 hardware divider.
  * Additionally provides integration with the C `/` and `%` operators
  */
 
diff --git a/src/common/pico_stdlib/include/pico/stdlib.h b/src/common/pico_stdlib/include/pico/stdlib.h
index bae744a..1de172a 100644
--- a/src/common/pico_stdlib/include/pico/stdlib.h
+++ b/src/common/pico_stdlib/include/pico/stdlib.h
@@ -20,7 +20,7 @@
 /** \file stdlib.h
  *  \defgroup pico_stdlib pico_stdlib
  *
- * Aggregation of a core subset of Raspberry Pi Pico SDK libraries used by most executables along with some additional
+ * \brief Aggregation of a core subset of Raspberry Pi Pico SDK libraries used by most executables along with some additional
  * utility methods. Including pico_stdlib gives you everything you need to get a basic program running
  * which prints to stdout or flashes a LED
  *
diff --git a/src/common/pico_sync/include/pico/lock_core.h b/src/common/pico_sync/include/pico/lock_core.h
index bf8bee7..fbfa7cb 100644
--- a/src/common/pico_sync/include/pico/lock_core.h
+++ b/src/common/pico_sync/include/pico/lock_core.h
@@ -74,6 +74,7 @@
 #ifndef lock_owner_id_t
 /*! \brief  type to use to store the 'owner' of a lock.
  *  \ingroup lock_core
+ *
  * By default this is int8_t as it only needs to store the core number or -1, however it may be
  * overridden if a larger type is required (e.g. for an RTOS task id)
  */
@@ -90,6 +91,7 @@
 #ifndef lock_get_caller_owner_id
 /*! \brief  return the owner id for the caller
  *  \ingroup lock_core
+ *
  * By default this returns the calling core number, but may be overridden (e.g. to return an RTOS task id)
  */
 #define lock_get_caller_owner_id() ((lock_owner_id_t)get_core_num())
diff --git a/src/common/pico_sync/include/pico/sync.h b/src/common/pico_sync/include/pico/sync.h
index 041bfd7..3ee97bb 100644
--- a/src/common/pico_sync/include/pico/sync.h
+++ b/src/common/pico_sync/include/pico/sync.h
@@ -9,7 +9,7 @@
 
 /** \file pico/sync.h
  *  \defgroup pico_sync pico_sync
- * Synchronization primitives and mutual exclusion
+ * \brief Synchronization primitives and mutual exclusion
  */
 
 #include "pico/sem.h"
diff --git a/src/common/pico_time/include/pico/time.h b/src/common/pico_time/include/pico/time.h
index f6b2a2d..050cdcc 100644
--- a/src/common/pico_time/include/pico/time.h
+++ b/src/common/pico_time/include/pico/time.h
@@ -17,7 +17,7 @@
 /** \file time.h
  *  \defgroup pico_time pico_time
  *
- * API for accurate timestamps, sleeping, and time based callbacks
+ * \brief API for accurate timestamps, sleeping, and time based callbacks
  *
  * \note The functions defined here provide a much more powerful and user friendly wrapping around the
  * low level hardware timer functionality. For these functions (and any other SDK functionality
diff --git a/src/common/pico_usb_reset_interface/include/pico/usb_reset_interface.h b/src/common/pico_usb_reset_interface/include/pico/usb_reset_interface.h
index 153acf8..908ec0c 100644
--- a/src/common/pico_usb_reset_interface/include/pico/usb_reset_interface.h
+++ b/src/common/pico_usb_reset_interface/include/pico/usb_reset_interface.h
@@ -10,7 +10,7 @@
 /** \file usb_reset_interface.h
  *  \defgroup pico_usb_reset_interface pico_usb_reset_interface
  *
- * Definition for the reset interface that may be exposed by the pico_stdio_usb library
+ * \brief Definition for the reset interface that may be exposed by the pico_stdio_usb library
  */
 
 // VENDOR sub-class for the reset interface
diff --git a/src/common/pico_util/include/pico/util/pheap.h b/src/common/pico_util/include/pico/util/pheap.h
index 2e0d778..d51804c 100644
--- a/src/common/pico_util/include/pico/util/pheap.h
+++ b/src/common/pico_util/include/pico/util/pheap.h
@@ -21,7 +21,7 @@
 /**
  * \file pheap.h
  * \defgroup util_pheap pheap
- * Pairing Heap Implementation
+ * \brief Pairing Heap Implementation
  * \ingroup pico_util
  *
  * pheap defines a simple pairing heap. The implementation simply tracks array indexes, it is up to
@@ -53,7 +53,7 @@
 } pheap_node_t;
 
 /**
- * A user comparator function for nodes in a pairing heap.
+ * \brief A user comparator function for nodes in a pairing heap.
  *
  * \return true if a < b in natural order. Note this relative ordering must be stable from call to call.
  */
@@ -71,7 +71,7 @@
 } pheap_t;
 
 /**
- * Create a pairing heap, which effectively maintains an efficient sorted ordering
+ * \brief Create a pairing heap, which effectively maintains an efficient sorted ordering
  * of nodes. The heap itself stores no user per-node state, it is expected
  * that the user maintains a companion array. A comparator function must
  * be provided so that the heap implementation can determine the relative ordering of nodes
@@ -86,13 +86,13 @@
 pheap_t *ph_create(uint max_nodes, pheap_comparator comparator, void *user_data);
 
 /**
- * Removes all nodes from the pairing heap
+ * \brief Removes all nodes from the pairing heap
  * \param heap the heap
  */
 void ph_clear(pheap_t *heap);
 
 /**
- * De-allocates a pairing heap
+ * \brief De-allocates a pairing heap
  *
  * Note this method must *ONLY* be called on heaps created by ph_create()
  * \param heap the heap
@@ -135,7 +135,7 @@
 }
 
 /**
- * Allocate a new node from the unused space in the heap
+ * \brief Allocate a new node from the unused space in the heap
  *
  * \param heap the heap
  * \return an identifier for the node, or 0 if the heap is full
@@ -151,7 +151,7 @@
 }
 
 /**
- * Inserts a node into the heap.
+ * \brief Inserts a node into the heap.
  *
  * This method inserts a node (previously allocated by ph_new_node())
  * into the heap, determining the correct order by calling
@@ -170,7 +170,7 @@
 }
 
 /**
- * Returns the head node in the heap, i.e. the node
+ * \brief Returns the head node in the heap, i.e. the node
  * which compares first, but without removing it from the heap.
  *
  * \param heap the heap
@@ -181,7 +181,7 @@
 }
 
 /**
- * Remove the head node from the pairing heap. This head node is
+ * \brief Remove the head node from the pairing heap. This head node is
  * the node which compares first in the logical ordering provided
  * by the comparator.
  *
@@ -198,7 +198,7 @@
 pheap_node_id_t ph_remove_head(pheap_t *heap, bool free);
 
 /**
- * Remove the head node from the pairing heap. This head node is
+ * \brief Remove the head node from the pairing heap. This head node is
  * the node which compares first in the logical ordering provided
  * by the comparator.
  *
@@ -214,7 +214,7 @@
 }
 
 /**
- * Remove and free an arbitrary node from the pairing heap. This is a more
+ * \brief Remove and free an arbitrary node from the pairing heap. This is a more
  * costly operation than removing the head via ph_remove_and_free_head()
  *
  * @param heap the heap
@@ -224,7 +224,7 @@
 bool ph_remove_and_free_node(pheap_t *heap, pheap_node_id_t id);
 
 /**
- * Determine if the heap contains a given node. Note containment refers
+ * \brief Determine if the heap contains a given node. Note containment refers
  * to whether the node is inserted (ph_insert_node()) vs allocated (ph_new_node())
  *
  * @param heap the heap
@@ -237,7 +237,7 @@
 
 
 /**
- * Free a node that is not currently in the heap, but has been allocated
+ * \brief Free a node that is not currently in the heap, but has been allocated
  *
  * @param heap the heap
  * @param id the id of the node
@@ -255,7 +255,7 @@
 }
 
 /**
- * Print a representation of the heap for debugging
+ * \brief Print a representation of the heap for debugging
  *
  * @param heap the heap
  * @param dump_key a method to print a node value
@@ -264,7 +264,7 @@
 void ph_dump(pheap_t *heap, void (*dump_key)(pheap_node_id_t id, void *user_data), void *user_data);
 
 /**
- * Initialize a statically allocated heap (ph_create() using the C heap).
+ * \brief Initialize a statically allocated heap (ph_create() using the C heap).
  * The heap member `nodes` must be allocated of size max_nodes.
  *
  * @param heap the heap
@@ -275,7 +275,7 @@
 void ph_post_alloc_init(pheap_t *heap, uint max_nodes, pheap_comparator comparator, void *user_data);
 
 /**
- * Define a statically allocated pairing heap. This must be initialized
+ * \brief Define a statically allocated pairing heap. This must be initialized
  * by ph_post_alloc_init
  */
 #define PHEAP_DEFINE_STATIC(name, _max_nodes) \
diff --git a/src/common/pico_util/include/pico/util/queue.h b/src/common/pico_util/include/pico/util/queue.h
index 80e5a92..2822985 100644
--- a/src/common/pico_util/include/pico/util/queue.h
+++ b/src/common/pico_util/include/pico/util/queue.h
@@ -17,7 +17,7 @@
 
 /** \file queue.h
  * \defgroup queue queue
- * Multi-core and IRQ safe queue implementation.
+ * \brief Multi-core and IRQ safe queue implementation.
  *
  * Note that this queue stores values of a specified size, and pushed values are copied into the queue
  * \ingroup pico_util
diff --git a/src/rp2_common/cmsis/stub/CMSIS/Core/Include/mpu_armv7.h b/src/rp2_common/cmsis/stub/CMSIS/Core/Include/mpu_armv7.h
index 791a8da..6e27fe3 100644
--- a/src/rp2_common/cmsis/stub/CMSIS/Core/Include/mpu_armv7.h
+++ b/src/rp2_common/cmsis/stub/CMSIS/Core/Include/mpu_armv7.h
@@ -78,7 +78,7 @@
    (MPU_RBAR_VALID_Msk))
 
 /**
-* MPU Memory Access Attributes
+* \brief MPU Memory Access Attributes
 * 
 * \param TypeExtField      Type extension field, allows you to configure memory access type, for example strongly ordered, peripheral.
 * \param IsShareable       Region is shareable between multiple bus masters.
@@ -92,7 +92,7 @@
    (((IsBufferable) << MPU_RASR_B_Pos)   & MPU_RASR_B_Msk))
 
 /**
-* MPU Region Attribute and Size Register Value
+* \brief MPU Region Attribute and Size Register Value
 * 
 * \param DisableExec       Instruction access disable bit, 1= disable instruction fetches.
 * \param AccessPermission  Data access permissions, allows you to configure read/write access for User and Privileged mode.
@@ -109,7 +109,7 @@
    (((MPU_RASR_ENABLE_Msk))))
 
 /**
-* MPU Region Attribute and Size Register Value
+* \brief MPU Region Attribute and Size Register Value
 * 
 * \param DisableExec       Instruction access disable bit, 1= disable instruction fetches.
 * \param AccessPermission  Data access permissions, allows you to configure read/write access for User and Privileged mode.
@@ -124,7 +124,7 @@
   ARM_MPU_RASR_EX(DisableExec, AccessPermission, ARM_MPU_ACCESS_(TypeExtField, IsShareable, IsCacheable, IsBufferable), SubRegionDisable, Size)
 
 /**
-* MPU Memory Access Attribute for strongly ordered memory.
+* \brief MPU Memory Access Attribute for strongly ordered memory.
 *  - TEX: 000b
 *  - Shareable
 *  - Non-cacheable
@@ -133,7 +133,7 @@
 #define ARM_MPU_ACCESS_ORDERED ARM_MPU_ACCESS_(0U, 1U, 0U, 0U)
 
 /**
-* MPU Memory Access Attribute for device memory.
+* \brief MPU Memory Access Attribute for device memory.
 *  - TEX: 000b (if shareable) or 010b (if non-shareable)
 *  - Shareable or non-shareable
 *  - Non-cacheable
@@ -144,7 +144,7 @@
 #define ARM_MPU_ACCESS_DEVICE(IsShareable) ((IsShareable) ? ARM_MPU_ACCESS_(0U, 1U, 0U, 1U) : ARM_MPU_ACCESS_(2U, 0U, 0U, 0U))
 
 /**
-* MPU Memory Access Attribute for normal memory.
+* \brief MPU Memory Access Attribute for normal memory.
 *  - TEX: 1BBb (reflecting outer cacheability rules)
 *  - Shareable or non-shareable
 *  - Cacheable or non-cacheable (reflecting inner cacheability rules)
@@ -157,28 +157,28 @@
 #define ARM_MPU_ACCESS_NORMAL(OuterCp, InnerCp, IsShareable) ARM_MPU_ACCESS_((4U | (OuterCp)), IsShareable, ((InnerCp) >> 1U), ((InnerCp) & 1U))
 
 /**
-* MPU Memory Access Attribute non-cacheable policy.
+* \brief MPU Memory Access Attribute non-cacheable policy.
 */
 #define ARM_MPU_CACHEP_NOCACHE 0U
 
 /**
-* MPU Memory Access Attribute write-back, write and read allocate policy.
+* \brief MPU Memory Access Attribute write-back, write and read allocate policy.
 */
 #define ARM_MPU_CACHEP_WB_WRA 1U
 
 /**
-* MPU Memory Access Attribute write-through, no write allocate policy.
+* \brief MPU Memory Access Attribute write-through, no write allocate policy.
 */
 #define ARM_MPU_CACHEP_WT_NWA 2U
 
 /**
-* MPU Memory Access Attribute write-back, no write allocate policy.
+* \brief MPU Memory Access Attribute write-back, no write allocate policy.
 */
 #define ARM_MPU_CACHEP_WB_NWA 3U
 
 
 /**
-* Struct for a single MPU Region
+* \brief Struct for a single MPU Region
 */
 typedef struct {
   uint32_t RBAR; //!< The region base address register value (RBAR)
diff --git a/src/rp2_common/hardware_adc/include/hardware/adc.h b/src/rp2_common/hardware_adc/include/hardware/adc.h
index 372930f..0df5a72 100644
--- a/src/rp2_common/hardware_adc/include/hardware/adc.h
+++ b/src/rp2_common/hardware_adc/include/hardware/adc.h
@@ -14,7 +14,7 @@
 /** \file hardware/adc.h
  *  \defgroup hardware_adc hardware_adc
  *
- * Analog to Digital Converter (ADC) API
+ * \brief Analog to Digital Converter (ADC) API
  *
  * The RP2040 has an internal analogue-digital converter (ADC) with the following features:
  * - SAR ADC
diff --git a/src/rp2_common/hardware_base/include/hardware/address_mapped.h b/src/rp2_common/hardware_base/include/hardware/address_mapped.h
index 8e92d8b..9ffb749 100644
--- a/src/rp2_common/hardware_base/include/hardware/address_mapped.h
+++ b/src/rp2_common/hardware_base/include/hardware/address_mapped.h
@@ -13,7 +13,7 @@
 /** \file address_mapped.h
  *  \defgroup hardware_base hardware_base
  *
- *  Low-level types and (atomic) accessors for memory-mapped hardware registers
+ *  \brief Low-level types and (atomic) accessors for memory-mapped hardware registers
  *
  *  `hardware_base` defines the low level types and access functions for memory mapped hardware registers. It is included
  *  by default by all other hardware libraries.
diff --git a/src/rp2_common/hardware_claim/include/hardware/claim.h b/src/rp2_common/hardware_claim/include/hardware/claim.h
index 5c93453..9d69691 100644
--- a/src/rp2_common/hardware_claim/include/hardware/claim.h
+++ b/src/rp2_common/hardware_claim/include/hardware/claim.h
@@ -13,7 +13,7 @@
 /** \file claim.h
  *  \defgroup hardware_claim hardware_claim
  *
- *  Lightweight hardware resource management
+ *  \brief Lightweight hardware resource management
  *
  * `hardware_claim` provides a simple API for management of hardware resources at runtime.
  *
diff --git a/src/rp2_common/hardware_clocks/include/hardware/clocks.h b/src/rp2_common/hardware_clocks/include/hardware/clocks.h
index 66adefc..efba30b 100644
--- a/src/rp2_common/hardware_clocks/include/hardware/clocks.h
+++ b/src/rp2_common/hardware_clocks/include/hardware/clocks.h
@@ -17,7 +17,7 @@
 /** \file hardware/clocks.h
  *  \defgroup hardware_clocks hardware_clocks
  *
- * Clock Management API
+ * \brief Clock Management API
  *
  * This API provides a high level interface to the clock functions.
  *
diff --git a/src/rp2_common/hardware_divider/include/hardware/divider.h b/src/rp2_common/hardware_divider/include/hardware/divider.h
index 081034a..c321515 100644
--- a/src/rp2_common/hardware_divider/include/hardware/divider.h
+++ b/src/rp2_common/hardware_divider/include/hardware/divider.h
@@ -13,7 +13,7 @@
 /** \file hardware/divider.h
  *  \defgroup hardware_divider hardware_divider
  *
- * Low-level hardware-divider access
+ * \brief Low-level hardware-divider access
  *
  * The SIO contains an 8-cycle signed/unsigned divide/modulo circuit, per core. Calculation is started by writing a dividend
  * and divisor to the two argument registers, DIVIDEND and DIVISOR. The divider calculates the quotient / and remainder % of
diff --git a/src/rp2_common/hardware_dma/include/hardware/dma.h b/src/rp2_common/hardware_dma/include/hardware/dma.h
index 65c357e..1b2d6f5 100644
--- a/src/rp2_common/hardware_dma/include/hardware/dma.h
+++ b/src/rp2_common/hardware_dma/include/hardware/dma.h
@@ -19,7 +19,7 @@
 /** \file hardware/dma.h
  *  \defgroup hardware_dma hardware_dma
  *
- * DMA Controller API
+ * \brief DMA Controller API
  *
  * The RP2040 Direct Memory Access (DMA) master performs bulk data transfers on a processor’s
  * behalf. This leaves processors free to attend to other tasks, or enter low-power sleep states. The
diff --git a/src/rp2_common/hardware_exception/include/hardware/exception.h b/src/rp2_common/hardware_exception/include/hardware/exception.h
index 63af843..92cd264 100644
--- a/src/rp2_common/hardware_exception/include/hardware/exception.h
+++ b/src/rp2_common/hardware_exception/include/hardware/exception.h
@@ -13,7 +13,7 @@
 /** \file exception.h
  *  \defgroup hardware_exception hardware_exception
  *
- * Methods for setting processor exception handlers
+ * \brief Methods for setting processor exception handlers
  *
  * Exceptions are identified by a \ref exception_number which is a number from -15 to -1; these are the numbers relative to
  * the index of the first IRQ vector in the vector table. (i.e. vector table index is exception_num plus 16)
diff --git a/src/rp2_common/hardware_flash/include/hardware/flash.h b/src/rp2_common/hardware_flash/include/hardware/flash.h
index a4870b6..5fbf0c7 100644
--- a/src/rp2_common/hardware_flash/include/hardware/flash.h
+++ b/src/rp2_common/hardware_flash/include/hardware/flash.h
@@ -12,7 +12,7 @@
 /** \file flash.h
  *  \defgroup hardware_flash hardware_flash
  *
- * Low level flash programming and erase API
+ * \brief Low level flash programming and erase API
  *
  * Note these functions are *unsafe* if you are using both cores, and the other 
  * is executing from flash concurrently with the operation. In this could be the 
diff --git a/src/rp2_common/hardware_gpio/include/hardware/gpio.h b/src/rp2_common/hardware_gpio/include/hardware/gpio.h
index a709c92..43997db 100644
--- a/src/rp2_common/hardware_gpio/include/hardware/gpio.h
+++ b/src/rp2_common/hardware_gpio/include/hardware/gpio.h
@@ -25,7 +25,7 @@
 /** \file gpio.h
  *  \defgroup hardware_gpio hardware_gpio
  *
- * General Purpose Input/Output (GPIO) API
+ * \brief General Purpose Input/Output (GPIO) API
  *
  * RP2040 has 36 multi-functional General Purpose Input / Output (GPIO) pins, divided into two banks. In a typical use case,
  * the pins in the QSPI bank (QSPI_SS, QSPI_SCLK and QSPI_SD0 to QSPI_SD3) are used to execute code from an external
diff --git a/src/rp2_common/hardware_i2c/include/hardware/i2c.h b/src/rp2_common/hardware_i2c/include/hardware/i2c.h
index 33454f0..26fb292 100644
--- a/src/rp2_common/hardware_i2c/include/hardware/i2c.h
+++ b/src/rp2_common/hardware_i2c/include/hardware/i2c.h
@@ -24,7 +24,7 @@
 /** \file hardware/i2c.h
  *  \defgroup hardware_i2c hardware_i2c
  *
- * I2C Controller API
+ * \brief I2C Controller API
  *
  * The I2C bus is a two-wire serial interface, consisting of a serial data line SDA and a serial clock SCL. These wires carry
  * information between the devices connected to the bus. Each device is recognized by a unique 7-bit address and can operate as
diff --git a/src/rp2_common/hardware_interp/include/hardware/interp.h b/src/rp2_common/hardware_interp/include/hardware/interp.h
index 8b9922a..01b5449 100644
--- a/src/rp2_common/hardware_interp/include/hardware/interp.h
+++ b/src/rp2_common/hardware_interp/include/hardware/interp.h
@@ -23,7 +23,7 @@
 /** \file hardware/interp.h
  *  \defgroup hardware_interp hardware_interp
  *
- * Hardware Interpolator API
+ * \brief Hardware Interpolator API
  *
  * Each core is equipped with two interpolators (INTERP0 and INTERP1) which can be used to accelerate
  * tasks by combining certain pre-configured simple operations into a single processor cycle. Intended
diff --git a/src/rp2_common/hardware_irq/include/hardware/irq.h b/src/rp2_common/hardware_irq/include/hardware/irq.h
index 85caf67..44b6f79 100644
--- a/src/rp2_common/hardware_irq/include/hardware/irq.h
+++ b/src/rp2_common/hardware_irq/include/hardware/irq.h
@@ -33,7 +33,7 @@
 /** \file irq.h
  *  \defgroup hardware_irq hardware_irq
  *
- * Hardware interrupt handling
+ * \brief Hardware interrupt handling
  *
  * The RP2040 uses the standard ARM nested vectored interrupt controller (NVIC).
  *
diff --git a/src/rp2_common/hardware_pio/include/hardware/pio.h b/src/rp2_common/hardware_pio/include/hardware/pio.h
index 762c3be..f25d036 100644
--- a/src/rp2_common/hardware_pio/include/hardware/pio.h
+++ b/src/rp2_common/hardware_pio/include/hardware/pio.h
@@ -22,7 +22,7 @@
 /** \file hardware/pio.h
  *  \defgroup hardware_pio hardware_pio
  *
- * Programmable I/O (PIO) API
+ * \brief Programmable I/O (PIO) API
  *
  * A programmable input/output block (PIO) is a versatile hardware interface which
  * can support a number of different IO standards. There are two PIO blocks in the RP2040.
diff --git a/src/rp2_common/hardware_pll/include/hardware/pll.h b/src/rp2_common/hardware_pll/include/hardware/pll.h
index 001af6e..6b8e14b 100644
--- a/src/rp2_common/hardware_pll/include/hardware/pll.h
+++ b/src/rp2_common/hardware_pll/include/hardware/pll.h
@@ -17,7 +17,7 @@
 /** \file hardware/pll.h
  *  \defgroup hardware_pll hardware_pll
  *
- * Phase Locked Loop control APIs
+ * \brief Phase Locked Loop control APIs
  *
  * There are two PLLs in RP2040. They are:
  *   - pll_sys - Used to generate up to a 133MHz system clock
diff --git a/src/rp2_common/hardware_pwm/include/hardware/pwm.h b/src/rp2_common/hardware_pwm/include/hardware/pwm.h
index 839b8f0..50569ee 100644
--- a/src/rp2_common/hardware_pwm/include/hardware/pwm.h
+++ b/src/rp2_common/hardware_pwm/include/hardware/pwm.h
@@ -23,7 +23,7 @@
 /** \file hardware/pwm.h
  *  \defgroup hardware_pwm hardware_pwm
  *
- * Hardware Pulse Width Modulation (PWM) API
+ * \brief Hardware Pulse Width Modulation (PWM) API
  *
  * The RP2040 PWM block has 8 identical slices. Each slice can drive two PWM output signals, or
  * measure the frequency or duty cycle of an input signal. This gives a total of up to 16 controllable
diff --git a/src/rp2_common/hardware_resets/include/hardware/resets.h b/src/rp2_common/hardware_resets/include/hardware/resets.h
index a3f7014..a5bdb64 100644
--- a/src/rp2_common/hardware_resets/include/hardware/resets.h
+++ b/src/rp2_common/hardware_resets/include/hardware/resets.h
@@ -13,7 +13,7 @@
 /** \file hardware/resets.h
  *  \defgroup hardware_resets hardware_resets
  *
- * Hardware Reset API
+ * \brief Hardware Reset API
  *
  * The reset controller allows software control of the resets to all of the peripherals that are not
  * critical to boot the processor in the RP2040.
diff --git a/src/rp2_common/hardware_rtc/include/hardware/rtc.h b/src/rp2_common/hardware_rtc/include/hardware/rtc.h
index 2a72a8e..bc671b2 100644
--- a/src/rp2_common/hardware_rtc/include/hardware/rtc.h
+++ b/src/rp2_common/hardware_rtc/include/hardware/rtc.h
@@ -13,7 +13,7 @@
 /** \file hardware/rtc.h
  *  \defgroup hardware_rtc hardware_rtc
  *
- * Hardware Real Time Clock API
+ * \brief Hardware Real Time Clock API
  *
  * The RTC keeps track of time in human readable format and generates events when the time is equal
  * to a preset value. Think of a digital clock, not epoch time used by most computers. There are seven
diff --git a/src/rp2_common/hardware_spi/include/hardware/spi.h b/src/rp2_common/hardware_spi/include/hardware/spi.h
index 41a70e4..9b799fc 100644
--- a/src/rp2_common/hardware_spi/include/hardware/spi.h
+++ b/src/rp2_common/hardware_spi/include/hardware/spi.h
@@ -23,7 +23,7 @@
 /** \file hardware/spi.h
  *  \defgroup hardware_spi hardware_spi
  *
- * Hardware SPI API
+ * \brief Hardware SPI API
  *
  * RP2040 has 2 identical instances of the Serial Peripheral Interface (SPI) controller.
  *
@@ -42,7 +42,7 @@
 // PICO_CONFIG: PICO_DEFAULT_SPI_CSN_PIN, Define the default SPI CSN pin, min=0, max=29, group=hardware_spi
 
 /**
- * Opaque type representing an SPI instance.
+ * \brief Opaque type representing an SPI instance.
  */
 typedef struct spi_inst spi_inst_t;
 
@@ -99,6 +99,7 @@
 
 /*! \brief Initialise SPI instances
  *  \ingroup hardware_spi
+ *
  * Puts the SPI into a known state, and enable it. Must be called before other
  * functions.
  *
@@ -113,6 +114,7 @@
 
 /*! \brief Deinitialise SPI instances
  *  \ingroup hardware_spi
+ *
  * Puts the SPI into a disabled state. Init will need to be called to reenable the device
  * functions.
  *
diff --git a/src/rp2_common/hardware_sync/include/hardware/sync.h b/src/rp2_common/hardware_sync/include/hardware/sync.h
index 35bd783..91af27f 100644
--- a/src/rp2_common/hardware_sync/include/hardware/sync.h
+++ b/src/rp2_common/hardware_sync/include/hardware/sync.h
@@ -18,7 +18,7 @@
 /** \file hardware/sync.h
  *  \defgroup hardware_sync hardware_sync
  *
- * Low level hardware spin locks, barrier and processor event APIs
+ * \brief Low level hardware spin locks, barrier and processor event APIs
  *
  * Spin Locks
  * ----------
diff --git a/src/rp2_common/hardware_timer/include/hardware/timer.h b/src/rp2_common/hardware_timer/include/hardware/timer.h
index c615c8d..8a63585 100644
--- a/src/rp2_common/hardware_timer/include/hardware/timer.h
+++ b/src/rp2_common/hardware_timer/include/hardware/timer.h
@@ -17,7 +17,7 @@
 /** \file hardware/timer.h
  *  \defgroup hardware_timer hardware_timer
  *
- * Low-level hardware timer API
+ * \brief Low-level hardware timer API
  *
  * This API provides medium level access to the timer HW.
  * See also \ref pico_time which provides higher levels functionality using the hardware timer.
diff --git a/src/rp2_common/hardware_uart/include/hardware/uart.h b/src/rp2_common/hardware_uart/include/hardware/uart.h
index 9be44d6..12d6a14 100644
--- a/src/rp2_common/hardware_uart/include/hardware/uart.h
+++ b/src/rp2_common/hardware_uart/include/hardware/uart.h
@@ -42,7 +42,7 @@
 /** \file hardware/uart.h
  *  \defgroup hardware_uart hardware_uart
  *
- * Hardware UART API
+ * \brief Hardware UART API
  *
  * RP2040 has 2 identical instances of a UART peripheral, based on the ARM PL011. Each UART can be connected to a number
  * of GPIO pins as defined in the GPIO muxing.
diff --git a/src/rp2_common/hardware_vreg/include/hardware/vreg.h b/src/rp2_common/hardware_vreg/include/hardware/vreg.h
index b488000..cf45123 100644
--- a/src/rp2_common/hardware_vreg/include/hardware/vreg.h
+++ b/src/rp2_common/hardware_vreg/include/hardware/vreg.h
@@ -17,7 +17,7 @@
 /** \file vreg.h
  *  \defgroup hardware_vreg hardware_vreg
  *
- * Voltage Regulation API
+ * \brief Voltage Regulation API
  *
  */
 
diff --git a/src/rp2_common/hardware_watchdog/include/hardware/watchdog.h b/src/rp2_common/hardware_watchdog/include/hardware/watchdog.h
index 7c56f4e..86e6963 100644
--- a/src/rp2_common/hardware_watchdog/include/hardware/watchdog.h
+++ b/src/rp2_common/hardware_watchdog/include/hardware/watchdog.h
@@ -13,7 +13,7 @@
 /** \file hardware/watchdog.h
  *  \defgroup hardware_watchdog hardware_watchdog
  *
- * Hardware Watchdog Timer API
+ * \brief Hardware Watchdog Timer API
  *
  * Supporting functions for the Pico hardware watchdog timer.
  *
@@ -111,7 +111,7 @@
 bool watchdog_enable_caused_reboot(void);
 
 /**
- * @brief Returns the number of microseconds before the watchdog will reboot the chip.
+ * \brief Returns the number of microseconds before the watchdog will reboot the chip.
  * \ingroup hardware_watchdog
  *
  * @return The number of microseconds before the watchdog will reboot the chip.
diff --git a/src/rp2_common/hardware_xosc/include/hardware/xosc.h b/src/rp2_common/hardware_xosc/include/hardware/xosc.h
index d49de4e..1153b93 100644
--- a/src/rp2_common/hardware_xosc/include/hardware/xosc.h
+++ b/src/rp2_common/hardware_xosc/include/hardware/xosc.h
@@ -26,7 +26,7 @@
 /** \file hardware/xosc.h
  *  \defgroup hardware_xosc hardware_xosc
  *
- * Crystal Oscillator (XOSC) API
+ * \brief Crystal Oscillator (XOSC) API
  */
 
 /*! \brief  Initialise the crystal oscillator system
diff --git a/src/rp2_common/pico_async_context/include/pico/async_context.h b/src/rp2_common/pico_async_context/include/pico/async_context.h
index bbf5e4a..32b1bad 100644
--- a/src/rp2_common/pico_async_context/include/pico/async_context.h
+++ b/src/rp2_common/pico_async_context/include/pico/async_context.h
@@ -7,7 +7,7 @@
 /** \file pico/async_context.h
  *  \defgroup pico_async_context pico_async_context
  *
- * An \ref async_context provides a logically single-threaded context for performing work, and responding
+ * \brief An \ref async_context provides a logically single-threaded context for performing work, and responding
  * to asynchronous events. Thus an async_context instance is suitable for servicing third-party libraries
  * that are not re-entrant.
  *
@@ -89,11 +89,11 @@
  */
 typedef struct async_work_on_timeout {
     /*!
-     * private link list pointer
+     * \brief private link list pointer
      */
     struct async_work_on_timeout *next;
     /*!
-     * Method called when the timeout is reached; may not be NULL
+     * \brief Method called when the timeout is reached; may not be NULL
      *
      * Note, that when this method is called, the timeout has been removed from the async_context, so
      * if you want the timeout to repeat, you should re-add it during this callback
@@ -102,12 +102,12 @@
      */
     void (*do_work)(async_context_t *context, struct async_work_on_timeout *timeout);
     /*!
-     * The next timeout time; this should only be modified during the above methods
+     * \brief The next timeout time; this should only be modified during the above methods
      * or via async_context methods
      */
     absolute_time_t next_time;
     /*!
-     * User data associated with the timeout instance
+     * \brief User data associated with the timeout instance
      */
     void *user_data;
 } async_at_time_worker_t;
@@ -124,22 +124,22 @@
  */
 typedef struct async_when_pending_worker {
     /*!
-     * private link list pointer
+     * \brief private link list pointer
      */
     struct async_when_pending_worker *next;
     /*!
-     * Called by the async_context when the worker has been marked as having "work pending"
+     * \brief Called by the async_context when the worker has been marked as having "work pending"
      *
      * @param context the async_context
      * @param worker the function to be called when work is pending
      */
     void (*do_work)(async_context_t *context, struct async_when_pending_worker *worker);
     /**
-     * True if the worker need do_work called
+     * \brief True if the worker need do_work called
      */
     bool work_pending;
     /*!
-     * User data associated with the worker instance
+     * \brief User data associated with the worker instance
      */
     void *user_data;
 } async_when_pending_worker_t;
diff --git a/src/rp2_common/pico_async_context/include/pico/async_context_freertos.h b/src/rp2_common/pico_async_context/include/pico/async_context_freertos.h
index 670a05c..f560de4 100644
--- a/src/rp2_common/pico_async_context/include/pico/async_context_freertos.h
+++ b/src/rp2_common/pico_async_context/include/pico/async_context_freertos.h
@@ -11,7 +11,7 @@
  *  \defgroup async_context_freertos async_context_freertos
  *  \ingroup pico_async_context
  *  
- * async_context_freertos provides an implementation of \ref async_context that handles asynchronous
+ * \brief async_context_freertos provides an implementation of \ref async_context that handles asynchronous
  * work in a separate FreeRTOS task.
  */
 #include "pico/async_context.h"
@@ -40,15 +40,15 @@
  */
 typedef struct async_context_freertos_config {
     /**
-     * Task priority for the async_context task
+     * \brief Task priority for the async_context task
      */
     UBaseType_t task_priority;
     /**
-     * Stack size for the async_context task
+     * \brief Stack size for the async_context task
      */
     configSTACK_DEPTH_TYPE task_stack_size;
     /**
-     * the core ID (see \ref portGET_CORE_ID()) to pin the task to.
+     * \brief the core ID (see \ref portGET_CORE_ID()) to pin the task to.
      * This is only relevant in SMP mode.
      */
 #if configUSE_CORE_AFFINITY && configNUM_CORES > 1
diff --git a/src/rp2_common/pico_async_context/include/pico/async_context_poll.h b/src/rp2_common/pico_async_context/include/pico/async_context_poll.h
index 2e0fbcf..2274576 100644
--- a/src/rp2_common/pico_async_context/include/pico/async_context_poll.h
+++ b/src/rp2_common/pico_async_context/include/pico/async_context_poll.h
@@ -11,7 +11,7 @@
  *  \defgroup async_context_poll async_context_poll
  *  \ingroup pico_async_context
  *
- * async_context_poll provides an implementation of \ref async_context that is intended for use with a simple
+ * \brief async_context_poll provides an implementation of \ref async_context that is intended for use with a simple
  * polling loop on one core. It is not thread safe.
  *
  * The \ref async_context_poll() method must be called periodically to handle asynchronous work that may now be
diff --git a/src/rp2_common/pico_async_context/include/pico/async_context_threadsafe_background.h b/src/rp2_common/pico_async_context/include/pico/async_context_threadsafe_background.h
index e16ec56..394a9fd 100644
--- a/src/rp2_common/pico_async_context/include/pico/async_context_threadsafe_background.h
+++ b/src/rp2_common/pico_async_context/include/pico/async_context_threadsafe_background.h
@@ -11,7 +11,7 @@
  *  \defgroup async_context_threadsafe_background async_context_threadsafe_background
  *  \ingroup pico_async_context
  *  
- * async_context_threadsafe_background provides an implementation of \ref async_context that handles asynchronous
+ * \brief async_context_threadsafe_background provides an implementation of \ref async_context that handles asynchronous
  * work in a low priority IRQ, and there is no need for the user to poll for work.
  *
  * \note The workers used with this async_context MUST be safe to call from an IRQ.
@@ -37,11 +37,11 @@
  */
 typedef struct async_context_threadsafe_background_config {
 /**
- * the priority of the low priority IRQ
+ * \brief the priority of the low priority IRQ
  */
     uint8_t low_priority_irq_handler_priority;
     /**
-     * a specific alarm pool to use (or NULL to use ta default)
+     * \brief a specific alarm pool to use (or NULL to use ta default)
      *
      * \note this alarm pool MUST be on the same core as the async_context
      *
diff --git a/src/rp2_common/pico_bootrom/include/pico/bootrom.h b/src/rp2_common/pico_bootrom/include/pico/bootrom.h
index 100ae23..e731ffe 100644
--- a/src/rp2_common/pico_bootrom/include/pico/bootrom.h
+++ b/src/rp2_common/pico_bootrom/include/pico/bootrom.h
@@ -11,7 +11,7 @@
 
 /** \file bootrom.h
  * \defgroup pico_bootrom pico_bootrom
- * Access to functions and data in the RP2040 bootrom
+ * \brief Access to functions and data in the RP2040 bootrom
  *
  * This header may be included by assembly code
  */
diff --git a/src/rp2_common/pico_bootsel_via_double_reset/pico_bootsel_via_double_reset.c b/src/rp2_common/pico_bootsel_via_double_reset/pico_bootsel_via_double_reset.c
index d333ab2..3febe31 100644
--- a/src/rp2_common/pico_bootsel_via_double_reset/pico_bootsel_via_double_reset.c
+++ b/src/rp2_common/pico_bootsel_via_double_reset/pico_bootsel_via_double_reset.c
@@ -23,7 +23,7 @@
 
 /** \defgroup pico_bootsel_via_double_reset pico_bootsel_via_double_reset
  *
- * When the 'pico_bootsel_via_double_reset' library is linked, a function is
+ * \brief When the 'pico_bootsel_via_double_reset' library is linked, a function is
  * injected before main() which will detect when the system has been reset
  * twice in quick succession, and enter the USB ROM bootloader (BOOTSEL mode)
  * when this happens. This allows a double tap of a reset button on a
diff --git a/src/rp2_common/pico_cyw43_arch/include/pico/cyw43_arch.h b/src/rp2_common/pico_cyw43_arch/include/pico/cyw43_arch.h
index bae2112..1806ea4 100644
--- a/src/rp2_common/pico_cyw43_arch/include/pico/cyw43_arch.h
+++ b/src/rp2_common/pico_cyw43_arch/include/pico/cyw43_arch.h
@@ -46,7 +46,7 @@
 /** \file pico/cyw43_arch.h
  *  \defgroup pico_cyw43_arch pico_cyw43_arch
  *
- * Architecture for integrating the CYW43 driver (for the wireless on Pico W) and lwIP (for TCP/IP stack) into the SDK. It is also necessary for accessing the on-board LED on Pico W
+ * \brief Architecture for integrating the CYW43 driver (for the wireless on Pico W) and lwIP (for TCP/IP stack) into the SDK. It is also necessary for accessing the on-board LED on Pico W
  *
  * Both the low level \c cyw43_driver and the lwIP stack require periodic servicing, and have limitations
  * on whether they can be called from multiple cores/threads.
diff --git a/src/rp2_common/pico_cyw43_driver/include/pico/cyw43_driver.h b/src/rp2_common/pico_cyw43_driver/include/pico/cyw43_driver.h
index bfef3f7..4ab39b8 100644
--- a/src/rp2_common/pico_cyw43_driver/include/pico/cyw43_driver.h
+++ b/src/rp2_common/pico_cyw43_driver/include/pico/cyw43_driver.h
@@ -10,7 +10,7 @@
 /** \file pico/cyw43_driver.h
  *  \defgroup pico_cyw43_driver pico_cyw43_driver
  *
- * A wrapper around the lower level cyw43_driver, that integrates it with \ref pico_async_context
+ * \brief A wrapper around the lower level cyw43_driver, that integrates it with \ref pico_async_context
  * for handling background work.
  */
 
diff --git a/src/rp2_common/pico_double/include/pico/double.h b/src/rp2_common/pico_double/include/pico/double.h
index c9a278c..e3e8b75 100644
--- a/src/rp2_common/pico_double/include/pico/double.h
+++ b/src/rp2_common/pico_double/include/pico/double.h
@@ -18,7 +18,7 @@
 /** \file double.h
 *  \defgroup pico_double pico_double
 *
-* Optimized double-precision floating point functions
+* \brief Optimized double-precision floating point functions
 *
 * (Replacement) optimized implementations are provided of the following compiler built-ins
 * and math library functions:
diff --git a/src/rp2_common/pico_flash/include/pico/flash.h b/src/rp2_common/pico_flash/include/pico/flash.h
index 320221e..bcc99d2 100644
--- a/src/rp2_common/pico_flash/include/pico/flash.h
+++ b/src/rp2_common/pico_flash/include/pico/flash.h
@@ -15,7 +15,7 @@
 /** \file pico/flash.h
  *  \defgroup pico_flash pico_flash
  *
- * High level flash API
+ * \brief High level flash API
  *
  * Flash cannot be erased or written to when in XIP mode. However the system cannot directly access memory in the flash
  * address space when not in XIP mode.
@@ -57,7 +57,7 @@
 #endif
 
 /**
- * Initialize a core such that the other core can lock it out during \ref flash_safe_execute.
+ * \brief Initialize a core such that the other core can lock it out during \ref flash_safe_execute.
  * \ingroup pico_flash
  *
  * \note This is not necessary for FreeRTOS SMP, but should be used when launching via \ref multicore_launch_core1
@@ -66,14 +66,14 @@
 bool flash_safe_execute_core_init(void);
 
 /**
- * De-initialize work done by \ref flash_safe_execute_core_init
+ * \brief De-initialize work done by \ref flash_safe_execute_core_init
  * \ingroup pico_flash
  * \return true on success
  */
 bool flash_safe_execute_core_deinit(void);
 
 /**
- * Execute a function with IRQs disabled and with the other core also not executing/reading flash
+ * \brief Execute a function with IRQs disabled and with the other core also not executing/reading flash
  * \ingroup pico_flash
  *
  * \param func the function to call
@@ -125,7 +125,7 @@
 } flash_safety_helper_t;
 
 /**
- * Internal method to return the flash safety helper implementation.
+ * \brief Internal method to return the flash safety helper implementation.
  * \ingroup pico_flash
  *
  * Advanced users can provide their own implementation of this function to perform
diff --git a/src/rp2_common/pico_float/include/pico/float.h b/src/rp2_common/pico_float/include/pico/float.h
index 0621ffc..cbfc724 100644
--- a/src/rp2_common/pico_float/include/pico/float.h
+++ b/src/rp2_common/pico_float/include/pico/float.h
@@ -19,7 +19,7 @@
 /** \file float.h
 * \defgroup pico_float pico_float
 *
-* Optimized single-precision floating point functions
+* \brief Optimized single-precision floating point functions
 *
 * (Replacement) optimized implementations are provided of the following compiler built-ins
 * and math library functions:
diff --git a/src/rp2_common/pico_i2c_slave/include/pico/i2c_slave.h b/src/rp2_common/pico_i2c_slave/include/pico/i2c_slave.h
index 576a421..a1c3825 100644
--- a/src/rp2_common/pico_i2c_slave/include/pico/i2c_slave.h
+++ b/src/rp2_common/pico_i2c_slave/include/pico/i2c_slave.h
@@ -17,7 +17,7 @@
 /** \file pico/i2c_slave.h
  * \defgroup pico_i2c_slave pico_i2c_slave
  *
- * Functions providing an interrupt driven I2C slave interface.
+ * \brief Functions providing an interrupt driven I2C slave interface.
  *
  * This I2C slave helper library configures slave mode and hooks the relevant I2C IRQ
  * so that a user supplied handler is called with enumerated I2C events.
@@ -32,9 +32,9 @@
  */
 typedef enum i2c_slave_event_t
 {
-    I2C_SLAVE_RECEIVE, /**< Data from master is available for reading. Slave must read from Rx FIFO. */
-    I2C_SLAVE_REQUEST, /**< Master is requesting data. Slave must write into Tx FIFO. */
-    I2C_SLAVE_FINISH, /**< Master has sent a Stop or Restart signal. Slave may prepare for the next transfer. */
+    I2C_SLAVE_RECEIVE, ///< Data from master is available for reading. Slave must read from Rx FIFO.
+    I2C_SLAVE_REQUEST, ///< Master is requesting data. Slave must write into Tx FIFO.
+    I2C_SLAVE_FINISH, ///< Master has sent a Stop or Restart signal. Slave may prepare for the next transfer.
 } i2c_slave_event_t;
 
 /**
diff --git a/src/rp2_common/pico_int64_ops/include/pico/int64_ops.h b/src/rp2_common/pico_int64_ops/include/pico/int64_ops.h
index 401c5ab..794b768 100644
--- a/src/rp2_common/pico_int64_ops/include/pico/int64_ops.h
+++ b/src/rp2_common/pico_int64_ops/include/pico/int64_ops.h
@@ -12,7 +12,7 @@
 /** \file int64_ops.h
  *  \defgroup pico_int64_ops pico_int64_ops
  *
- * Optimized replacement implementations of the compiler built-in 64 bit multiplication
+ * \brief Optimized replacement implementations of the compiler built-in 64 bit multiplication
  *
  * This library does not provide any additional functions
 */
diff --git a/src/rp2_common/pico_malloc/include/pico/malloc.h b/src/rp2_common/pico_malloc/include/pico/malloc.h
index b4ae2b6..c498ea0 100644
--- a/src/rp2_common/pico_malloc/include/pico/malloc.h
+++ b/src/rp2_common/pico_malloc/include/pico/malloc.h
@@ -10,7 +10,7 @@
 /** \file malloc.h
 *  \defgroup pico_malloc pico_malloc
 *
-* Multi-core safety for malloc, calloc and free
+* \brief Multi-core safety for malloc, calloc and free
 *
 * This library does not provide any additional functions
 */
diff --git a/src/rp2_common/pico_mem_ops/include/pico/mem_ops.h b/src/rp2_common/pico_mem_ops/include/pico/mem_ops.h
index 2f8d55f..9f13d6a 100644
--- a/src/rp2_common/pico_mem_ops/include/pico/mem_ops.h
+++ b/src/rp2_common/pico_mem_ops/include/pico/mem_ops.h
@@ -12,7 +12,7 @@
 /** \file mem_ops.h
  *  \defgroup pico_mem_ops pico_mem_ops
  *
- * Provides optimized replacement implementations of the compiler built-in memcpy, memset and related functions:
+ * \brief Provides optimized replacement implementations of the compiler built-in memcpy, memset and related functions:
  *
  * - memset, memcpy
  * - __aeabi_memset, __aeabi_memset4, __aeabi_memset8, __aeabi_memcpy, __aeabi_memcpy4, __aeabi_memcpy8
diff --git a/src/rp2_common/pico_multicore/include/pico/multicore.h b/src/rp2_common/pico_multicore/include/pico/multicore.h
index 8a9a2a8..ae62428 100644
--- a/src/rp2_common/pico_multicore/include/pico/multicore.h
+++ b/src/rp2_common/pico_multicore/include/pico/multicore.h
@@ -17,7 +17,7 @@
 
 /** \file multicore.h
  *  \defgroup pico_multicore pico_multicore
- * Adds support for running code on the second processor core (core 1)
+ * \brief Adds support for running code on the second processor core (core 1)
  *
  * \subsection multicore_example Example
  * \addtogroup pico_multicore
diff --git a/src/rp2_common/pico_platform/include/pico/platform.h b/src/rp2_common/pico_platform/include/pico/platform.h
index 64b5e96..7fe20aa 100644
--- a/src/rp2_common/pico_platform/include/pico/platform.h
+++ b/src/rp2_common/pico_platform/include/pico/platform.h
@@ -10,7 +10,7 @@
 /** \file platform.h
  *  \defgroup pico_platform pico_platform
  *
- * Macros and definitions (and functions when included by non assembly code) for the RP2 family device / architecture
+ * \brief Macros and definitions (and functions when included by non assembly code) for the RP2 family device / architecture
  * to provide a common abstraction over low level compiler / platform specifics.
  *
  * This header may be included by assembly code
diff --git a/src/rp2_common/pico_printf/include/pico/printf.h b/src/rp2_common/pico_printf/include/pico/printf.h
index 2a40119..c047eb6 100644
--- a/src/rp2_common/pico_printf/include/pico/printf.h
+++ b/src/rp2_common/pico_printf/include/pico/printf.h
@@ -35,7 +35,7 @@
 /** \file printf.h
  *  \defgroup pico_printf pico_printf
  *
- * Compact replacement for printf by Marco Paland (info@paland.com)
+ * \brief Compact replacement for printf by Marco Paland (info@paland.com)
  */
 
 #ifdef __cplusplus
@@ -70,7 +70,7 @@
 #endif
 
 /**
- * printf with output function
+ * \brief printf with output function
  * You may use this as dynamic alternative to printf() with its fixed _putchar() output
  * \param out An output function which takes one character and an argument pointer
  * \param arg An argument pointer for user data passed to output function
diff --git a/src/rp2_common/pico_rand/include/pico/rand.h b/src/rp2_common/pico_rand/include/pico/rand.h
index b41ec1e..02a6e4a 100644
--- a/src/rp2_common/pico_rand/include/pico/rand.h
+++ b/src/rp2_common/pico_rand/include/pico/rand.h
@@ -16,7 +16,7 @@
 /** \file pico/rand.h
  *  \defgroup pico_rand pico_rand
  *
- * Random Number Generator API
+ * \brief Random Number Generator API
  *
  * This module generates random numbers at runtime utilizing a number of possible entropy
  * sources and uses those sources to modify the state of a 128-bit 'Pseudo
diff --git a/src/rp2_common/pico_runtime/include/pico/runtime.h b/src/rp2_common/pico_runtime/include/pico/runtime.h
index 752ec6c..3706399 100644
--- a/src/rp2_common/pico_runtime/include/pico/runtime.h
+++ b/src/rp2_common/pico_runtime/include/pico/runtime.h
@@ -13,7 +13,7 @@
 
 /** \file runtime.h
 *  \defgroup pico_runtime pico_runtime
-* Aggregate runtime support including @ref pico_bit_ops, @ref pico_divider, @ref pico_double, @ref pico_int64_ops, @ref pico_float, @ref pico_malloc, @ref pico_mem_ops and @ref pico_standard_link
+* \brief Aggregate runtime support including @ref pico_bit_ops, @ref pico_divider, @ref pico_double, @ref pico_int64_ops, @ref pico_float, @ref pico_malloc, @ref pico_mem_ops and @ref pico_standard_link
 */
 
 
diff --git a/src/rp2_common/pico_stdio/include/pico/stdio.h b/src/rp2_common/pico_stdio/include/pico/stdio.h
index 430be36..7a0ca27 100644
--- a/src/rp2_common/pico_stdio/include/pico/stdio.h
+++ b/src/rp2_common/pico_stdio/include/pico/stdio.h
@@ -9,7 +9,7 @@
 
 /** \file stdio.h
 *  \defgroup pico_stdio pico_stdio
-* Customized stdio support allowing for input and output from UART, USB, semi-hosting etc.
+* \brief Customized stdio support allowing for input and output from UART, USB, semi-hosting etc.
 *
 * Note the API for adding additional input output devices is not yet considered stable
 */
diff --git a/src/rp2_common/pico_unique_id/include/pico/unique_id.h b/src/rp2_common/pico_unique_id/include/pico/unique_id.h
index f62f037..bf32a86 100644
--- a/src/rp2_common/pico_unique_id/include/pico/unique_id.h
+++ b/src/rp2_common/pico_unique_id/include/pico/unique_id.h
@@ -16,7 +16,7 @@
 /** \file pico/unique_id.h
  *  \defgroup pico_unique_id pico_unique_id
  *
- * Unique device ID access API
+ * \brief Unique device ID access API
  *
  * RP2040 does not have an on-board unique identifier (all instances of RP2040
  * silicon are identical and have no persistent state). However, RP2040 boots
diff --git a/src/rp2_common/tinyusb/doc.h b/src/rp2_common/tinyusb/doc.h
index a9d8da5..8dc0d8f 100644
--- a/src/rp2_common/tinyusb/doc.h
+++ b/src/rp2_common/tinyusb/doc.h
@@ -1,7 +1,7 @@
 /**
  * \defgroup tinyusb_device tinyusb_device
- * <a href="https://github.com/hathach/tinyusb">TinyUSB</a> Device-mode support for the RP2040. The TinyUSB documentation site can be found <a href="https://docs.tinyusb.org/en/latest/">here</a>.
+ * \brief <a href="https://github.com/hathach/tinyusb">TinyUSB</a> Device-mode support for the RP2040. The TinyUSB documentation site can be found <a href="https://docs.tinyusb.org/en/latest/">here</a>.
  *
  * \defgroup tinyusb_host tinyusb_host
- * <a href="https://github.com/hathach/tinyusb">TinyUSB</a> Host-mode support for the RP2040.
+ * \brief <a href="https://github.com/hathach/tinyusb">TinyUSB</a> Host-mode support for the RP2040.
  */