From aa38e5c1f48e31213ee349aa5cd6f06c85bda70d Mon Sep 17 00:00:00 2001
From: android <android@lingyun.com>
Date: Tue, 25 Jun 2024 21:49:39 +0800
Subject: [PATCH] Add GD32F103RCT6 ADC converter board SDK source code
---
mcu_sdk/gd32f103/rk_eFire/Utiles/Utilities/utilities.h | 193 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 193 insertions(+), 0 deletions(-)
diff --git a/mcu_sdk/gd32f103/rk_eFire/Utiles/Utilities/utilities.h b/mcu_sdk/gd32f103/rk_eFire/Utiles/Utilities/utilities.h
new file mode 100644
index 0000000..a33b1e0
--- /dev/null
+++ b/mcu_sdk/gd32f103/rk_eFire/Utiles/Utilities/utilities.h
@@ -0,0 +1,193 @@
+ /******************************************************************************
+ * @file utilities.h
+ * @author MCD Application Team
+ * @version V1.1.4
+ * @date 08-January-2018
+ * @brief Header for driver utilities.c module
+ ******************************************************************************
+ * @attention
+ *
+ * <h2><center>© Copyright (c) 2017 STMicroelectronics International N.V.
+ * All rights reserved.</center></h2>
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted, provided that the following conditions are met:
+ *
+ * 1. Redistribution of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * 3. Neither the name of STMicroelectronics nor the names of other
+ * contributors to this software may be used to endorse or promote products
+ * derived from this software without specific written permission.
+ * 4. This software, including modifications and/or derivative works of this
+ * software, must execute solely and exclusively on microcontroller or
+ * microprocessor devices manufactured by or for STMicroelectronics.
+ * 5. Redistribution and use of this software other than as permitted under
+ * this license is void and will automatically terminate your rights under
+ * this license.
+ *
+ * THIS SOFTWARE IS PROVIDED BY STMICROELECTRONICS AND CONTRIBUTORS "AS IS"
+ * AND ANY EXPRESS, IMPLIED OR STATUTORY WARRANTIES, INCLUDING, BUT NOT
+ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
+ * PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY INTELLECTUAL PROPERTY
+ * RIGHTS ARE DISCLAIMED TO THE FULLEST EXTENT PERMITTED BY LAW. IN NO EVENT
+ * SHALL STMICROELECTRONICS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+ * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+ * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ ******************************************************************************
+ */
+#ifndef __UTILITIES_H__
+#define __UTILITIES_H__
+#include <stdint.h>
+
+
+/* BACKUP_PRIMASK MUST be implemented at the begining of the funtion
+ that implement a critical section
+ PRIMASK is saved on STACK and recovered at the end of the funtion
+ That way RESTORE_PRIMASK ensures that no irq would be triggered in case of
+ unbalanced enable/disable, reentrant code etc...*/
+#define BACKUP_PRIMASK() uint32_t primask_bit= __get_PRIMASK()
+#define DISABLE_IRQ() __disable_irq()
+#define ENABLE_IRQ() __enable_irq()
+#define RESTORE_PRIMASK() __set_PRIMASK(primask_bit)
+
+/*!
+ * \brief Returns the minimum value between a and b
+ *
+ * \param [IN] a 1st value
+ * \param [IN] b 2nd value
+ * \retval minValue Minimum value
+ */
+#define MIN( a, b ) ( ( ( a ) < ( b ) ) ? ( a ) : ( b ) )
+
+/*!
+ * \brief Returns the maximum value between a and b
+ *
+ * \param [IN] a 1st value
+ * \param [IN] b 2nd value
+ * \retval maxValue Maximum value
+ */
+#define MAX( a, b ) ( ( ( a ) > ( b ) ) ? ( a ) : ( b ) )
+
+/* prepocessor directive to align buffer*/
+#define ALIGN(n) __attribute__((aligned(n)))
+
+/*low power manager configuration*/
+typedef enum
+{
+ LPM_APPLI_Id = (1 << 0),
+ LPM_LIB_Id = (1 << 1),
+ LPM_RTC_Id = (1 << 2),
+ LPM_GPS_Id = (1 << 3),
+ LPM_UART_RX_Id = (1 << 4),
+ LPM_UART_TX_Id = (1 << 5),
+} LPM_Id_t;
+
+/*!
+ * Version
+ */
+typedef union Version_u
+{
+ struct Version_s
+ {
+ uint8_t Rfu;
+ uint8_t Revision;
+ uint8_t Minor;
+ uint8_t Major;
+ }Fields;
+ uint32_t Value;
+}Version_t;
+
+/*!
+ * \brief Initializes the pseudo random generator initial value
+ *
+ * \param [IN] seed Pseudo random generator initial value
+ */
+void srand1( uint32_t seed );
+
+/*!
+ * \brief Computes a random number between min and max
+ *
+ * \param [IN] min range minimum value
+ * \param [IN] max range maximum value
+ * \retval random random value in range min..max
+ */
+int32_t randr( int32_t min, int32_t max );
+
+/*!
+ * \brief Copies size elements of src array to dst array
+ *
+ * \remark STM32 Standard memcpy function only works on pointers that are aligned
+ *
+ * \param [OUT] dst Destination array
+ * \param [IN] src Source array
+ * \param [IN] size Number of bytes to be copied
+ */
+void memcpy1( uint8_t *dst, const uint8_t *src, uint16_t size );
+
+/*!
+ * \brief Copies size elements of src array to dst array reversing the byte order
+ *
+ * \param [OUT] dst Destination array
+ * \param [IN] src Source array
+ * \param [IN] size Number of bytes to be copied
+ */
+void memcpyr( uint8_t *dst, const uint8_t *src, uint16_t size );
+
+/*!
+ * \brief Set size elements of dst array with value
+ *
+ * \remark STM32 Standard memset function only works on pointers that are aligned
+ *
+ * \param [OUT] dst Destination array
+ * \param [IN] value Default value
+ * \param [IN] size Number of bytes to be copied
+ */
+void memset1( uint8_t *dst, uint8_t value, uint16_t size );
+
+/*!
+ * \brief Converts a nibble to an hexadecimal character
+ *
+ * \param [IN] a Nibble to be converted
+ * \retval hexChar Converted hexadecimal character
+ */
+int8_t Nibble2HexChar( uint8_t a );
+
+/*!
+ * Begins critical section
+ */
+#define CRITICAL_SECTION_BEGIN( ) uint32_t mask; BoardCriticalSectionBegin( &mask )
+
+/*!
+ * Ends critical section
+ */
+#define CRITICAL_SECTION_END( ) BoardCriticalSectionEnd( &mask )
+
+/*
+ * ============================================================================
+ * Following functions must be implemented inside the specific platform
+ * board.c file.
+ * ============================================================================
+ */
+/*!
+ * Disable interrupts, begins critical section
+ *
+ * \param [IN] mask Pointer to a variable where to store the CPU IRQ mask
+ */
+void BoardCriticalSectionBegin( uint32_t *mask );
+
+/*!
+ * Ends critical section
+ *
+ * \param [IN] mask Pointer to a variable where the CPU IRQ mask was stored
+ */
+void BoardCriticalSectionEnd( uint32_t *mask );
+
+#endif // __UTILITIES_H__
--
Gitblit v1.9.1