ON Semiconductor / mbed-os

Dependents:   mbed-TFT-example-NCS36510 mbed-Accelerometer-example-NCS36510 mbed-Accelerometer-example-NCS36510

Committer:
jacobjohnson
Date:
Mon Feb 27 17:45:05 2017 +0000
Revision:
1:f30bdcd2b33b
Parent:
0:098463de4c5d
changed the inputscale from 1 to 7 in analogin_api.c.  This will need to be changed later, and accessed from the main level, but for now this allows the  adc to read a value from 0 to 3.7V, instead of just up to 1V.;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
group-onsemi 0:098463de4c5d 1 /**
group-onsemi 0:098463de4c5d 2 ******************************************************************************
group-onsemi 0:098463de4c5d 3 * @file stm32f7xx_hal_def.h
group-onsemi 0:098463de4c5d 4 * @author MCD Application Team
group-onsemi 0:098463de4c5d 5 * @version V1.1.2
group-onsemi 0:098463de4c5d 6 * @date 23-September-2016
group-onsemi 0:098463de4c5d 7 * @brief This file contains HAL common defines, enumeration, macros and
group-onsemi 0:098463de4c5d 8 * structures definitions.
group-onsemi 0:098463de4c5d 9 ******************************************************************************
group-onsemi 0:098463de4c5d 10 * @attention
group-onsemi 0:098463de4c5d 11 *
group-onsemi 0:098463de4c5d 12 * <h2><center>&copy; COPYRIGHT(c) 2016 STMicroelectronics</center></h2>
group-onsemi 0:098463de4c5d 13 *
group-onsemi 0:098463de4c5d 14 * Redistribution and use in source and binary forms, with or without modification,
group-onsemi 0:098463de4c5d 15 * are permitted provided that the following conditions are met:
group-onsemi 0:098463de4c5d 16 * 1. Redistributions of source code must retain the above copyright notice,
group-onsemi 0:098463de4c5d 17 * this list of conditions and the following disclaimer.
group-onsemi 0:098463de4c5d 18 * 2. Redistributions in binary form must reproduce the above copyright notice,
group-onsemi 0:098463de4c5d 19 * this list of conditions and the following disclaimer in the documentation
group-onsemi 0:098463de4c5d 20 * and/or other materials provided with the distribution.
group-onsemi 0:098463de4c5d 21 * 3. Neither the name of STMicroelectronics nor the names of its contributors
group-onsemi 0:098463de4c5d 22 * may be used to endorse or promote products derived from this software
group-onsemi 0:098463de4c5d 23 * without specific prior written permission.
group-onsemi 0:098463de4c5d 24 *
group-onsemi 0:098463de4c5d 25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
group-onsemi 0:098463de4c5d 26 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
group-onsemi 0:098463de4c5d 27 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
group-onsemi 0:098463de4c5d 28 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
group-onsemi 0:098463de4c5d 29 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
group-onsemi 0:098463de4c5d 30 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
group-onsemi 0:098463de4c5d 31 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
group-onsemi 0:098463de4c5d 32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
group-onsemi 0:098463de4c5d 33 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
group-onsemi 0:098463de4c5d 34 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
group-onsemi 0:098463de4c5d 35 *
group-onsemi 0:098463de4c5d 36 ******************************************************************************
group-onsemi 0:098463de4c5d 37 */
group-onsemi 0:098463de4c5d 38
group-onsemi 0:098463de4c5d 39 /* Define to prevent recursive inclusion -------------------------------------*/
group-onsemi 0:098463de4c5d 40 #ifndef __STM32F7xx_HAL_DEF
group-onsemi 0:098463de4c5d 41 #define __STM32F7xx_HAL_DEF
group-onsemi 0:098463de4c5d 42
group-onsemi 0:098463de4c5d 43 #ifdef __cplusplus
group-onsemi 0:098463de4c5d 44 extern "C" {
group-onsemi 0:098463de4c5d 45 #endif
group-onsemi 0:098463de4c5d 46
group-onsemi 0:098463de4c5d 47 /* Includes ------------------------------------------------------------------*/
group-onsemi 0:098463de4c5d 48 #include "stm32f7xx.h"
group-onsemi 0:098463de4c5d 49 #include "stm32_hal_legacy.h"
group-onsemi 0:098463de4c5d 50 #include <stdio.h>
group-onsemi 0:098463de4c5d 51 /* Exported types ------------------------------------------------------------*/
group-onsemi 0:098463de4c5d 52
group-onsemi 0:098463de4c5d 53 /**
group-onsemi 0:098463de4c5d 54 * @brief HAL Status structures definition
group-onsemi 0:098463de4c5d 55 */
group-onsemi 0:098463de4c5d 56 typedef enum
group-onsemi 0:098463de4c5d 57 {
group-onsemi 0:098463de4c5d 58 HAL_OK = 0x00U,
group-onsemi 0:098463de4c5d 59 HAL_ERROR = 0x01U,
group-onsemi 0:098463de4c5d 60 HAL_BUSY = 0x02U,
group-onsemi 0:098463de4c5d 61 HAL_TIMEOUT = 0x03U
group-onsemi 0:098463de4c5d 62 } HAL_StatusTypeDef;
group-onsemi 0:098463de4c5d 63
group-onsemi 0:098463de4c5d 64 /**
group-onsemi 0:098463de4c5d 65 * @brief HAL Lock structures definition
group-onsemi 0:098463de4c5d 66 */
group-onsemi 0:098463de4c5d 67 typedef enum
group-onsemi 0:098463de4c5d 68 {
group-onsemi 0:098463de4c5d 69 HAL_UNLOCKED = 0x00,
group-onsemi 0:098463de4c5d 70 HAL_LOCKED = 0x01
group-onsemi 0:098463de4c5d 71 } HAL_LockTypeDef;
group-onsemi 0:098463de4c5d 72
group-onsemi 0:098463de4c5d 73 /* Exported macro ------------------------------------------------------------*/
group-onsemi 0:098463de4c5d 74 #define HAL_MAX_DELAY 0xFFFFFFFFU
group-onsemi 0:098463de4c5d 75
group-onsemi 0:098463de4c5d 76 #define HAL_IS_BIT_SET(REG, BIT) (((REG) & (BIT)) != RESET)
group-onsemi 0:098463de4c5d 77 #define HAL_IS_BIT_CLR(REG, BIT) (((REG) & (BIT)) == RESET)
group-onsemi 0:098463de4c5d 78
group-onsemi 0:098463de4c5d 79 #define __HAL_LINKDMA(__HANDLE__, __PPP_DMA_FIELD__, __DMA_HANDLE__) \
group-onsemi 0:098463de4c5d 80 do{ \
group-onsemi 0:098463de4c5d 81 (__HANDLE__)->__PPP_DMA_FIELD__ = &(__DMA_HANDLE__); \
group-onsemi 0:098463de4c5d 82 (__DMA_HANDLE__).Parent = (__HANDLE__); \
group-onsemi 0:098463de4c5d 83 } while(0)
group-onsemi 0:098463de4c5d 84
group-onsemi 0:098463de4c5d 85 #define UNUSED(x) ((void)(x))
group-onsemi 0:098463de4c5d 86
group-onsemi 0:098463de4c5d 87 /** @brief Reset the Handle's State field.
group-onsemi 0:098463de4c5d 88 * @param __HANDLE__: specifies the Peripheral Handle.
group-onsemi 0:098463de4c5d 89 * @note This macro can be used for the following purpose:
group-onsemi 0:098463de4c5d 90 * - When the Handle is declared as local variable; before passing it as parameter
group-onsemi 0:098463de4c5d 91 * to HAL_PPP_Init() for the first time, it is mandatory to use this macro
group-onsemi 0:098463de4c5d 92 * to set to 0 the Handle's "State" field.
group-onsemi 0:098463de4c5d 93 * Otherwise, "State" field may have any random value and the first time the function
group-onsemi 0:098463de4c5d 94 * HAL_PPP_Init() is called, the low level hardware initialization will be missed
group-onsemi 0:098463de4c5d 95 * (i.e. HAL_PPP_MspInit() will not be executed).
group-onsemi 0:098463de4c5d 96 * - When there is a need to reconfigure the low level hardware: instead of calling
group-onsemi 0:098463de4c5d 97 * HAL_PPP_DeInit() then HAL_PPP_Init(), user can make a call to this macro then HAL_PPP_Init().
group-onsemi 0:098463de4c5d 98 * In this later function, when the Handle's "State" field is set to 0, it will execute the function
group-onsemi 0:098463de4c5d 99 * HAL_PPP_MspInit() which will reconfigure the low level hardware.
group-onsemi 0:098463de4c5d 100 * @retval None
group-onsemi 0:098463de4c5d 101 */
group-onsemi 0:098463de4c5d 102 #define __HAL_RESET_HANDLE_STATE(__HANDLE__) ((__HANDLE__)->State = 0U)
group-onsemi 0:098463de4c5d 103
group-onsemi 0:098463de4c5d 104 #if (USE_RTOS == 1)
group-onsemi 0:098463de4c5d 105 /* Reserved for future use */
group-onsemi 0:098463de4c5d 106 #error "USE_RTOS should be 0 in the current HAL release"
group-onsemi 0:098463de4c5d 107 #else
group-onsemi 0:098463de4c5d 108 #define __HAL_LOCK(__HANDLE__) \
group-onsemi 0:098463de4c5d 109 do{ \
group-onsemi 0:098463de4c5d 110 if((__HANDLE__)->Lock == HAL_LOCKED) \
group-onsemi 0:098463de4c5d 111 { \
group-onsemi 0:098463de4c5d 112 return HAL_BUSY; \
group-onsemi 0:098463de4c5d 113 } \
group-onsemi 0:098463de4c5d 114 else \
group-onsemi 0:098463de4c5d 115 { \
group-onsemi 0:098463de4c5d 116 (__HANDLE__)->Lock = HAL_LOCKED; \
group-onsemi 0:098463de4c5d 117 } \
group-onsemi 0:098463de4c5d 118 }while (0)
group-onsemi 0:098463de4c5d 119
group-onsemi 0:098463de4c5d 120 #define __HAL_UNLOCK(__HANDLE__) \
group-onsemi 0:098463de4c5d 121 do{ \
group-onsemi 0:098463de4c5d 122 (__HANDLE__)->Lock = HAL_UNLOCKED; \
group-onsemi 0:098463de4c5d 123 }while (0)
group-onsemi 0:098463de4c5d 124 #endif /* USE_RTOS */
group-onsemi 0:098463de4c5d 125 #if defined (__CC_ARM)
group-onsemi 0:098463de4c5d 126 #pragma diag_suppress 3731
group-onsemi 0:098463de4c5d 127 #endif
group-onsemi 0:098463de4c5d 128
group-onsemi 0:098463de4c5d 129 static inline void atomic_set_u32(volatile uint32_t *ptr, uint32_t mask)
group-onsemi 0:098463de4c5d 130 {
group-onsemi 0:098463de4c5d 131 uint32_t newValue;
group-onsemi 0:098463de4c5d 132 do {
group-onsemi 0:098463de4c5d 133 newValue = (uint32_t)__LDREXW((volatile unsigned long *)ptr) | mask;
group-onsemi 0:098463de4c5d 134
group-onsemi 0:098463de4c5d 135 } while (__STREXW(newValue,(volatile unsigned long*) ptr));
group-onsemi 0:098463de4c5d 136 }
group-onsemi 0:098463de4c5d 137
group-onsemi 0:098463de4c5d 138
group-onsemi 0:098463de4c5d 139 static inline void atomic_clr_u32(volatile uint32_t *ptr, uint32_t mask)
group-onsemi 0:098463de4c5d 140 {
group-onsemi 0:098463de4c5d 141 uint32_t newValue;
group-onsemi 0:098463de4c5d 142 do {
group-onsemi 0:098463de4c5d 143 newValue = (uint32_t)__LDREXW((volatile unsigned long *)ptr) &~mask;
group-onsemi 0:098463de4c5d 144
group-onsemi 0:098463de4c5d 145 } while (__STREXW(newValue,(volatile unsigned long*) ptr));
group-onsemi 0:098463de4c5d 146 }
group-onsemi 0:098463de4c5d 147
group-onsemi 0:098463de4c5d 148 #if defined ( __GNUC__ )
group-onsemi 0:098463de4c5d 149 #ifndef __weak
group-onsemi 0:098463de4c5d 150 #define __weak __attribute__((weak))
group-onsemi 0:098463de4c5d 151 #endif /* __weak */
group-onsemi 0:098463de4c5d 152 #ifndef __packed
group-onsemi 0:098463de4c5d 153 #define __packed __attribute__((__packed__))
group-onsemi 0:098463de4c5d 154 #endif /* __packed */
group-onsemi 0:098463de4c5d 155 #endif /* __GNUC__ */
group-onsemi 0:098463de4c5d 156
group-onsemi 0:098463de4c5d 157
group-onsemi 0:098463de4c5d 158 /* Macro to get variable aligned on 4-bytes, for __ICCARM__ the directive "#pragma data_alignment=4" must be used instead */
group-onsemi 0:098463de4c5d 159 #if defined (__GNUC__) /* GNU Compiler */
group-onsemi 0:098463de4c5d 160 #ifndef __ALIGN_END
group-onsemi 0:098463de4c5d 161 #define __ALIGN_END __attribute__ ((aligned (4)))
group-onsemi 0:098463de4c5d 162 #endif /* __ALIGN_END */
group-onsemi 0:098463de4c5d 163 #ifndef __ALIGN_BEGIN
group-onsemi 0:098463de4c5d 164 #define __ALIGN_BEGIN
group-onsemi 0:098463de4c5d 165 #endif /* __ALIGN_BEGIN */
group-onsemi 0:098463de4c5d 166 #else
group-onsemi 0:098463de4c5d 167 #ifndef __ALIGN_END
group-onsemi 0:098463de4c5d 168 #define __ALIGN_END
group-onsemi 0:098463de4c5d 169 #endif /* __ALIGN_END */
group-onsemi 0:098463de4c5d 170 #ifndef __ALIGN_BEGIN
group-onsemi 0:098463de4c5d 171 #if defined (__CC_ARM) /* ARM Compiler */
group-onsemi 0:098463de4c5d 172 #define __ALIGN_BEGIN __align(4)
group-onsemi 0:098463de4c5d 173 #elif defined (__ICCARM__) /* IAR Compiler */
group-onsemi 0:098463de4c5d 174 #define __ALIGN_BEGIN
group-onsemi 0:098463de4c5d 175 #endif /* __CC_ARM */
group-onsemi 0:098463de4c5d 176 #endif /* __ALIGN_BEGIN */
group-onsemi 0:098463de4c5d 177 #endif /* __GNUC__ */
group-onsemi 0:098463de4c5d 178
group-onsemi 0:098463de4c5d 179
group-onsemi 0:098463de4c5d 180 /**
group-onsemi 0:098463de4c5d 181 * @brief __RAM_FUNC definition
group-onsemi 0:098463de4c5d 182 */
group-onsemi 0:098463de4c5d 183 #if defined ( __CC_ARM )
group-onsemi 0:098463de4c5d 184 /* ARM Compiler
group-onsemi 0:098463de4c5d 185 ------------
group-onsemi 0:098463de4c5d 186 RAM functions are defined using the toolchain options.
group-onsemi 0:098463de4c5d 187 Functions that are executed in RAM should reside in a separate source module.
group-onsemi 0:098463de4c5d 188 Using the 'Options for File' dialog you can simply change the 'Code / Const'
group-onsemi 0:098463de4c5d 189 area of a module to a memory space in physical RAM.
group-onsemi 0:098463de4c5d 190 Available memory areas are declared in the 'Target' tab of the 'Options for Target'
group-onsemi 0:098463de4c5d 191 dialog.
group-onsemi 0:098463de4c5d 192 */
group-onsemi 0:098463de4c5d 193 #define __RAM_FUNC HAL_StatusTypeDef
group-onsemi 0:098463de4c5d 194
group-onsemi 0:098463de4c5d 195 #elif defined ( __ICCARM__ )
group-onsemi 0:098463de4c5d 196 /* ICCARM Compiler
group-onsemi 0:098463de4c5d 197 ---------------
group-onsemi 0:098463de4c5d 198 RAM functions are defined using a specific toolchain keyword "__ramfunc".
group-onsemi 0:098463de4c5d 199 */
group-onsemi 0:098463de4c5d 200 #define __RAM_FUNC __ramfunc HAL_StatusTypeDef
group-onsemi 0:098463de4c5d 201
group-onsemi 0:098463de4c5d 202 #elif defined ( __GNUC__ )
group-onsemi 0:098463de4c5d 203 /* GNU Compiler
group-onsemi 0:098463de4c5d 204 ------------
group-onsemi 0:098463de4c5d 205 RAM functions are defined using a specific toolchain attribute
group-onsemi 0:098463de4c5d 206 "__attribute__((section(".RamFunc")))".
group-onsemi 0:098463de4c5d 207 */
group-onsemi 0:098463de4c5d 208 #define __RAM_FUNC HAL_StatusTypeDef __attribute__((section(".RamFunc")))
group-onsemi 0:098463de4c5d 209
group-onsemi 0:098463de4c5d 210 #endif
group-onsemi 0:098463de4c5d 211
group-onsemi 0:098463de4c5d 212 /**
group-onsemi 0:098463de4c5d 213 * @brief __NOINLINE definition
group-onsemi 0:098463de4c5d 214 */
group-onsemi 0:098463de4c5d 215 #if defined ( __CC_ARM ) || defined ( __GNUC__ )
group-onsemi 0:098463de4c5d 216 /* ARM & GNUCompiler
group-onsemi 0:098463de4c5d 217 ----------------
group-onsemi 0:098463de4c5d 218 */
group-onsemi 0:098463de4c5d 219 #define __NOINLINE __attribute__ ( (noinline) )
group-onsemi 0:098463de4c5d 220
group-onsemi 0:098463de4c5d 221 #elif defined ( __ICCARM__ )
group-onsemi 0:098463de4c5d 222 /* ICCARM Compiler
group-onsemi 0:098463de4c5d 223 ---------------
group-onsemi 0:098463de4c5d 224 */
group-onsemi 0:098463de4c5d 225 #define __NOINLINE _Pragma("optimize = no_inline")
group-onsemi 0:098463de4c5d 226
group-onsemi 0:098463de4c5d 227 #endif
group-onsemi 0:098463de4c5d 228
group-onsemi 0:098463de4c5d 229 #ifdef __cplusplus
group-onsemi 0:098463de4c5d 230 }
group-onsemi 0:098463de4c5d 231 #endif
group-onsemi 0:098463de4c5d 232
group-onsemi 0:098463de4c5d 233 #endif /* ___STM32F7xx_HAL_DEF */
group-onsemi 0:098463de4c5d 234
group-onsemi 0:098463de4c5d 235 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/