PSRAM example.

Dependencies:   BSP_DISCO_F413ZH mbed

Committer:
arostm
Date:
Tue May 23 10:50:50 2017 +0200
Revision:
0:e86d70f1f2ce
Child:
1:61482ef96890
Main.cpp creation for the psram example of the DISCO_F413ZH

Who changed what in which revision?

UserRevisionLine numberNew contents of line
arostm 0:e86d70f1f2ce 1 #include "mbed.h"
arostm 0:e86d70f1f2ce 2 #include "stm32f413h_discovery.h"
arostm 0:e86d70f1f2ce 3 #include "stm32f413h_discovery_lcd.h"
arostm 0:e86d70f1f2ce 4 #include "stm32f413h_discovery_psram.h"
arostm 0:e86d70f1f2ce 5
arostm 0:e86d70f1f2ce 6 /** @addtogroup STM32F7xx_HAL_Examples
arostm 0:e86d70f1f2ce 7 * @{
arostm 0:e86d70f1f2ce 8 */
arostm 0:e86d70f1f2ce 9
arostm 0:e86d70f1f2ce 10 /** @addtogroup BSP
arostm 0:e86d70f1f2ce 11 * @{
arostm 0:e86d70f1f2ce 12 */
arostm 0:e86d70f1f2ce 13
arostm 0:e86d70f1f2ce 14 /* Private typedef -----------------------------------------------------------*/
arostm 0:e86d70f1f2ce 15 /* Private define ------------------------------------------------------------*/
arostm 0:e86d70f1f2ce 16 #define BUFFER_SIZE ((uint32_t)0x1000)
arostm 0:e86d70f1f2ce 17 #define PSRAM_WRITE_READ_ADDR ((uint32_t)0x0800)
arostm 0:e86d70f1f2ce 18 /* Private macro -------------------------------------------------------------*/
arostm 0:e86d70f1f2ce 19 /* Private variables ---------------------------------------------------------*/
arostm 0:e86d70f1f2ce 20 uint16_t sram_aTxBuffer[BUFFER_SIZE];
arostm 0:e86d70f1f2ce 21 uint16_t sram_aRxBuffer[BUFFER_SIZE];
arostm 0:e86d70f1f2ce 22 uint8_t ubSramWrite = 0, ubSramRead = 0, ubSramInit = 0, ubCompare = 0;
arostm 0:e86d70f1f2ce 23 __IO uint8_t write_complete = 0;
arostm 0:e86d70f1f2ce 24 /* Private function prototypes -----------------------------------------------*/
arostm 0:e86d70f1f2ce 25 static void PSRAM_SetHint(void);
arostm 0:e86d70f1f2ce 26 static void Fill_Buffer(uint16_t *pBuffer, uint32_t uwBufferLength, uint32_t uwOffset);
arostm 0:e86d70f1f2ce 27 static uint8_t Buffercmp(uint16_t* pBuffer1, uint16_t* pBuffer2, uint16_t BufferLength);
arostm 0:e86d70f1f2ce 28 static uint8_t CheckForUserInput(void);
arostm 0:e86d70f1f2ce 29 /* Private functions ---------------------------------------------------------*/
arostm 0:e86d70f1f2ce 30
arostm 0:e86d70f1f2ce 31 /**
arostm 0:e86d70f1f2ce 32 * @brief PSRAM Demo
arostm 0:e86d70f1f2ce 33 * @param None
arostm 0:e86d70f1f2ce 34 * @retval None
arostm 0:e86d70f1f2ce 35 */
arostm 0:e86d70f1f2ce 36 int main()
arostm 0:e86d70f1f2ce 37 {
arostm 0:e86d70f1f2ce 38 BSP_LCD_Init();
arostm 0:e86d70f1f2ce 39
arostm 0:e86d70f1f2ce 40 PSRAM_SetHint();
arostm 0:e86d70f1f2ce 41
arostm 0:e86d70f1f2ce 42 /* Disable the LCD to avoid the refrech from the SDRAM */
arostm 0:e86d70f1f2ce 43 BSP_LCD_DisplayOff();
arostm 0:e86d70f1f2ce 44
arostm 0:e86d70f1f2ce 45 /*##-1- Configure the PSRAM device ##########################################*/
arostm 0:e86d70f1f2ce 46 /* PSRAM device configuration */
arostm 0:e86d70f1f2ce 47 if(BSP_PSRAM_Init() != PSRAM_OK)
arostm 0:e86d70f1f2ce 48 {
arostm 0:e86d70f1f2ce 49 ubSramInit++;
arostm 0:e86d70f1f2ce 50 }
arostm 0:e86d70f1f2ce 51
arostm 0:e86d70f1f2ce 52 /*##-2- PSRAM memory read/write access ######################################*/
arostm 0:e86d70f1f2ce 53 /* Fill the buffer to write */
arostm 0:e86d70f1f2ce 54 Fill_Buffer(sram_aTxBuffer, BUFFER_SIZE, 0xC20F);
arostm 0:e86d70f1f2ce 55
arostm 0:e86d70f1f2ce 56 /* Write data to the PSRAM memory */
arostm 0:e86d70f1f2ce 57 if(BSP_PSRAM_WriteData(PSRAM_DEVICE_ADDR + PSRAM_WRITE_READ_ADDR, sram_aTxBuffer, BUFFER_SIZE) != PSRAM_OK)
arostm 0:e86d70f1f2ce 58 {
arostm 0:e86d70f1f2ce 59 ubSramWrite++;
arostm 0:e86d70f1f2ce 60 }
arostm 0:e86d70f1f2ce 61
arostm 0:e86d70f1f2ce 62 /* Read back data from the PSRAM memory */
arostm 0:e86d70f1f2ce 63 if(BSP_PSRAM_ReadData(PSRAM_DEVICE_ADDR + PSRAM_WRITE_READ_ADDR, sram_aRxBuffer, BUFFER_SIZE) != PSRAM_OK)
arostm 0:e86d70f1f2ce 64 {
arostm 0:e86d70f1f2ce 65 ubSramRead++;
arostm 0:e86d70f1f2ce 66 }
arostm 0:e86d70f1f2ce 67
arostm 0:e86d70f1f2ce 68 /*##-3- Checking data integrity ############################################*/
arostm 0:e86d70f1f2ce 69 /* Enable the LCD */
arostm 0:e86d70f1f2ce 70 BSP_LCD_DisplayOn();
arostm 0:e86d70f1f2ce 71
arostm 0:e86d70f1f2ce 72 if(ubSramInit != 0)
arostm 0:e86d70f1f2ce 73 {
arostm 0:e86d70f1f2ce 74 BSP_LCD_DisplayStringAt(20, 100, (uint8_t *)"PSRAM Initialization : FAILED.", LEFT_MODE);
arostm 0:e86d70f1f2ce 75 BSP_LCD_DisplayStringAt(20, 115, (uint8_t *)"PSRAM Test Aborted.", LEFT_MODE);
arostm 0:e86d70f1f2ce 76 ubSramInit = 0xFF;
arostm 0:e86d70f1f2ce 77 }
arostm 0:e86d70f1f2ce 78 else
arostm 0:e86d70f1f2ce 79 {
arostm 0:e86d70f1f2ce 80 BSP_LCD_DisplayStringAt(20, 100, (uint8_t *)"PSRAM Initialization : OK.", LEFT_MODE);
arostm 0:e86d70f1f2ce 81 ubSramInit = 0;
arostm 0:e86d70f1f2ce 82 }
arostm 0:e86d70f1f2ce 83 if(ubSramWrite != 0)
arostm 0:e86d70f1f2ce 84 {
arostm 0:e86d70f1f2ce 85 BSP_LCD_DisplayStringAt(20, 115, (uint8_t *)"PSRAM WRITE : FAILED.", LEFT_MODE);
arostm 0:e86d70f1f2ce 86 BSP_LCD_DisplayStringAt(20, 130, (uint8_t *)"PSRAM Test Aborted.", LEFT_MODE);
arostm 0:e86d70f1f2ce 87 ubSramWrite = 0xFF;
arostm 0:e86d70f1f2ce 88 }
arostm 0:e86d70f1f2ce 89 else
arostm 0:e86d70f1f2ce 90 {
arostm 0:e86d70f1f2ce 91 BSP_LCD_DisplayStringAt(20, 115, (uint8_t *)"PSRAM WRITE : OK.", LEFT_MODE);
arostm 0:e86d70f1f2ce 92 ubSramWrite = 0;
arostm 0:e86d70f1f2ce 93 }
arostm 0:e86d70f1f2ce 94 if(ubSramRead != 0)
arostm 0:e86d70f1f2ce 95 {
arostm 0:e86d70f1f2ce 96 BSP_LCD_DisplayStringAt(20, 130, (uint8_t *)"PSRAM READ : FAILED.", LEFT_MODE);
arostm 0:e86d70f1f2ce 97 BSP_LCD_DisplayStringAt(20, 145, (uint8_t *)"PSRAM Test Aborted.", LEFT_MODE);
arostm 0:e86d70f1f2ce 98 ubSramRead = 0xFF;
arostm 0:e86d70f1f2ce 99 }
arostm 0:e86d70f1f2ce 100 else
arostm 0:e86d70f1f2ce 101 {
arostm 0:e86d70f1f2ce 102 BSP_LCD_DisplayStringAt(20, 130, (uint8_t *)"PSRAM READ : OK.", LEFT_MODE);
arostm 0:e86d70f1f2ce 103 ubSramRead = 0;
arostm 0:e86d70f1f2ce 104 }
arostm 0:e86d70f1f2ce 105
arostm 0:e86d70f1f2ce 106 if(Buffercmp(sram_aRxBuffer, sram_aTxBuffer, BUFFER_SIZE) > 0)
arostm 0:e86d70f1f2ce 107 {
arostm 0:e86d70f1f2ce 108 BSP_LCD_DisplayStringAt(20, 145, (uint8_t *)"PSRAM COMPARE : FAILED.", LEFT_MODE);
arostm 0:e86d70f1f2ce 109 BSP_LCD_DisplayStringAt(20, 160, (uint8_t *)"PSRAM Test Aborted.", LEFT_MODE);
arostm 0:e86d70f1f2ce 110 ubCompare ++;
arostm 0:e86d70f1f2ce 111 }
arostm 0:e86d70f1f2ce 112 else
arostm 0:e86d70f1f2ce 113 {
arostm 0:e86d70f1f2ce 114 BSP_LCD_DisplayStringAt(20, 145, (uint8_t *)"PSRAM Test : OK.", LEFT_MODE);
arostm 0:e86d70f1f2ce 115 ubCompare =0;
arostm 0:e86d70f1f2ce 116 }
arostm 0:e86d70f1f2ce 117
arostm 0:e86d70f1f2ce 118 while (1)
arostm 0:e86d70f1f2ce 119 {
arostm 0:e86d70f1f2ce 120 if(CheckForUserInput() > 0)
arostm 0:e86d70f1f2ce 121 {
arostm 0:e86d70f1f2ce 122 return 0;
arostm 0:e86d70f1f2ce 123 }
arostm 0:e86d70f1f2ce 124 }
arostm 0:e86d70f1f2ce 125 }
arostm 0:e86d70f1f2ce 126
arostm 0:e86d70f1f2ce 127 /**
arostm 0:e86d70f1f2ce 128 * @brief PSRAM Demo
arostm 0:e86d70f1f2ce 129 * @param None
arostm 0:e86d70f1f2ce 130 * @retval None
arostm 0:e86d70f1f2ce 131 */
arostm 0:e86d70f1f2ce 132 void PSRAM_DMA_demo (void)
arostm 0:e86d70f1f2ce 133 {
arostm 0:e86d70f1f2ce 134 PSRAM_SetHint();
arostm 0:e86d70f1f2ce 135
arostm 0:e86d70f1f2ce 136 /* Disable the LCD to avoid the refrech from the PSRAM */
arostm 0:e86d70f1f2ce 137 BSP_LCD_DisplayOff();
arostm 0:e86d70f1f2ce 138
arostm 0:e86d70f1f2ce 139 /*##-1- Configure the PSRAM device ##########################################*/
arostm 0:e86d70f1f2ce 140 /* PSRAM device configuration */
arostm 0:e86d70f1f2ce 141 if(BSP_PSRAM_Init() != PSRAM_OK)
arostm 0:e86d70f1f2ce 142 {
arostm 0:e86d70f1f2ce 143 ubSramInit++;
arostm 0:e86d70f1f2ce 144 }
arostm 0:e86d70f1f2ce 145
arostm 0:e86d70f1f2ce 146 /*##-2- PSRAM memory read/write access ######################################*/
arostm 0:e86d70f1f2ce 147 /* Fill the buffer to write */
arostm 0:e86d70f1f2ce 148 Fill_Buffer(sram_aTxBuffer, BUFFER_SIZE, 0xC20F);
arostm 0:e86d70f1f2ce 149
arostm 0:e86d70f1f2ce 150 /* Write data to the PSRAM memory */
arostm 0:e86d70f1f2ce 151 if(BSP_PSRAM_WriteData_DMA(PSRAM_DEVICE_ADDR + PSRAM_WRITE_READ_ADDR, sram_aTxBuffer, BUFFER_SIZE) != PSRAM_OK)
arostm 0:e86d70f1f2ce 152 {
arostm 0:e86d70f1f2ce 153 ubSramWrite++;
arostm 0:e86d70f1f2ce 154 }
arostm 0:e86d70f1f2ce 155
arostm 0:e86d70f1f2ce 156
arostm 0:e86d70f1f2ce 157 /* Wait for Transfer complete */
arostm 0:e86d70f1f2ce 158 while(write_complete == 0);
arostm 0:e86d70f1f2ce 159
arostm 0:e86d70f1f2ce 160 /* Read back data from the PSRAM memory */
arostm 0:e86d70f1f2ce 161 if(BSP_PSRAM_ReadData_DMA(PSRAM_DEVICE_ADDR + PSRAM_WRITE_READ_ADDR, sram_aRxBuffer, BUFFER_SIZE) != PSRAM_OK)
arostm 0:e86d70f1f2ce 162 {
arostm 0:e86d70f1f2ce 163 ubSramRead++;
arostm 0:e86d70f1f2ce 164 }
arostm 0:e86d70f1f2ce 165
arostm 0:e86d70f1f2ce 166 /*##-3- Checking data integrity ############################################*/
arostm 0:e86d70f1f2ce 167 /* Enable the LCD */
arostm 0:e86d70f1f2ce 168 BSP_LCD_DisplayOn();
arostm 0:e86d70f1f2ce 169
arostm 0:e86d70f1f2ce 170 if(ubSramInit != 0)
arostm 0:e86d70f1f2ce 171 {
arostm 0:e86d70f1f2ce 172 BSP_LCD_DisplayStringAt(20, 100, (uint8_t *)"PSRAM Initialization : FAILED.", LEFT_MODE);
arostm 0:e86d70f1f2ce 173 BSP_LCD_DisplayStringAt(20, 115, (uint8_t *)"PSRAM Test Aborted.", LEFT_MODE);
arostm 0:e86d70f1f2ce 174 }
arostm 0:e86d70f1f2ce 175 else
arostm 0:e86d70f1f2ce 176 {
arostm 0:e86d70f1f2ce 177 BSP_LCD_DisplayStringAt(20, 100, (uint8_t *)"PSRAM Initialization : OK.", LEFT_MODE);
arostm 0:e86d70f1f2ce 178 }
arostm 0:e86d70f1f2ce 179 if(ubSramWrite != 0)
arostm 0:e86d70f1f2ce 180 {
arostm 0:e86d70f1f2ce 181 BSP_LCD_DisplayStringAt(20, 115, (uint8_t *)"PSRAM WRITE : FAILED.", LEFT_MODE);
arostm 0:e86d70f1f2ce 182 BSP_LCD_DisplayStringAt(20, 130, (uint8_t *)"PSRAM Test Aborted.", LEFT_MODE);
arostm 0:e86d70f1f2ce 183 }
arostm 0:e86d70f1f2ce 184 else
arostm 0:e86d70f1f2ce 185 {
arostm 0:e86d70f1f2ce 186 BSP_LCD_DisplayStringAt(20, 115, (uint8_t *)"PSRAM WRITE : OK.", LEFT_MODE);
arostm 0:e86d70f1f2ce 187 }
arostm 0:e86d70f1f2ce 188 if(ubSramRead != 0)
arostm 0:e86d70f1f2ce 189 {
arostm 0:e86d70f1f2ce 190 BSP_LCD_DisplayStringAt(20, 130, (uint8_t *)"PSRAM READ : FAILED.", LEFT_MODE);
arostm 0:e86d70f1f2ce 191 BSP_LCD_DisplayStringAt(20, 145, (uint8_t *)"PSRAM Test Aborted.", LEFT_MODE);
arostm 0:e86d70f1f2ce 192 }
arostm 0:e86d70f1f2ce 193 else
arostm 0:e86d70f1f2ce 194 {
arostm 0:e86d70f1f2ce 195 BSP_LCD_DisplayStringAt(20, 130, (uint8_t *)"PSRAM READ : OK.", LEFT_MODE);
arostm 0:e86d70f1f2ce 196 }
arostm 0:e86d70f1f2ce 197
arostm 0:e86d70f1f2ce 198 if(Buffercmp(sram_aRxBuffer, sram_aTxBuffer, BUFFER_SIZE) > 0)
arostm 0:e86d70f1f2ce 199 {
arostm 0:e86d70f1f2ce 200 BSP_LCD_DisplayStringAt(20, 145, (uint8_t *)"PSRAM COMPARE : FAILED.", LEFT_MODE);
arostm 0:e86d70f1f2ce 201 BSP_LCD_DisplayStringAt(20, 160, (uint8_t *)"PSRAM Test Aborted.", LEFT_MODE);
arostm 0:e86d70f1f2ce 202 }
arostm 0:e86d70f1f2ce 203 else
arostm 0:e86d70f1f2ce 204 {
arostm 0:e86d70f1f2ce 205 BSP_LCD_DisplayStringAt(20, 145, (uint8_t *)"PSRAM Test : OK.", LEFT_MODE);
arostm 0:e86d70f1f2ce 206 }
arostm 0:e86d70f1f2ce 207
arostm 0:e86d70f1f2ce 208 while (1)
arostm 0:e86d70f1f2ce 209 {
arostm 0:e86d70f1f2ce 210 if(CheckForUserInput() > 0)
arostm 0:e86d70f1f2ce 211 {
arostm 0:e86d70f1f2ce 212 return;
arostm 0:e86d70f1f2ce 213 }
arostm 0:e86d70f1f2ce 214 }
arostm 0:e86d70f1f2ce 215 }
arostm 0:e86d70f1f2ce 216
arostm 0:e86d70f1f2ce 217 /**
arostm 0:e86d70f1f2ce 218 * @brief Display PSRAM Demo Hint
arostm 0:e86d70f1f2ce 219 * @param None
arostm 0:e86d70f1f2ce 220 * @retval None
arostm 0:e86d70f1f2ce 221 */
arostm 0:e86d70f1f2ce 222 static void PSRAM_SetHint(void)
arostm 0:e86d70f1f2ce 223 {
arostm 0:e86d70f1f2ce 224 /* Clear the LCD */
arostm 0:e86d70f1f2ce 225 BSP_LCD_Clear(LCD_COLOR_WHITE);
arostm 0:e86d70f1f2ce 226
arostm 0:e86d70f1f2ce 227 /* Set LCD Demo description */
arostm 0:e86d70f1f2ce 228 BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
arostm 0:e86d70f1f2ce 229 BSP_LCD_FillRect(0, 0, BSP_LCD_GetXSize(), 80);
arostm 0:e86d70f1f2ce 230 BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
arostm 0:e86d70f1f2ce 231 BSP_LCD_SetBackColor(LCD_COLOR_GREEN);
arostm 0:e86d70f1f2ce 232 BSP_LCD_SetFont(&Font24);
arostm 0:e86d70f1f2ce 233 BSP_LCD_DisplayStringAt(0, 0, (uint8_t *)"PSRAM", CENTER_MODE);
arostm 0:e86d70f1f2ce 234 BSP_LCD_SetFont(&Font12);
arostm 0:e86d70f1f2ce 235 BSP_LCD_DisplayStringAt(0, 30, (uint8_t *)"This example shows how to write", CENTER_MODE);
arostm 0:e86d70f1f2ce 236 BSP_LCD_DisplayStringAt(0, 45, (uint8_t *)"and read data on the PSRAM", CENTER_MODE);
arostm 0:e86d70f1f2ce 237
arostm 0:e86d70f1f2ce 238 /* Set the LCD Text Color */
arostm 0:e86d70f1f2ce 239 BSP_LCD_SetTextColor(LCD_COLOR_GREEN);
arostm 0:e86d70f1f2ce 240 BSP_LCD_DrawRect(10, 90, BSP_LCD_GetXSize() - 20, BSP_LCD_GetYSize()- 100);
arostm 0:e86d70f1f2ce 241 BSP_LCD_DrawRect(11, 91, BSP_LCD_GetXSize() - 22, BSP_LCD_GetYSize()- 102);
arostm 0:e86d70f1f2ce 242
arostm 0:e86d70f1f2ce 243 BSP_LCD_SetTextColor(LCD_COLOR_BLACK);
arostm 0:e86d70f1f2ce 244 BSP_LCD_SetBackColor(LCD_COLOR_WHITE);
arostm 0:e86d70f1f2ce 245 }
arostm 0:e86d70f1f2ce 246
arostm 0:e86d70f1f2ce 247 /**
arostm 0:e86d70f1f2ce 248 * @brief Fills buffer with user predefined data.
arostm 0:e86d70f1f2ce 249 * @param pBuffer: pointer on the buffer to fill
arostm 0:e86d70f1f2ce 250 * @param uwBufferLength: size of the buffer to fill
arostm 0:e86d70f1f2ce 251 * @param uwOffset: first value to fill on the buffer
arostm 0:e86d70f1f2ce 252 * @retval None
arostm 0:e86d70f1f2ce 253 */
arostm 0:e86d70f1f2ce 254 static void Fill_Buffer(uint16_t *pBuffer, uint32_t uwBufferLength, uint32_t uwOffset)
arostm 0:e86d70f1f2ce 255 {
arostm 0:e86d70f1f2ce 256 uint32_t tmpindex = 0;
arostm 0:e86d70f1f2ce 257
arostm 0:e86d70f1f2ce 258 /* Put in global buffer different values */
arostm 0:e86d70f1f2ce 259 for (tmpindex = 0; tmpindex < uwBufferLength; tmpindex++ )
arostm 0:e86d70f1f2ce 260 {
arostm 0:e86d70f1f2ce 261 pBuffer[tmpindex] = tmpindex + uwOffset;
arostm 0:e86d70f1f2ce 262 }
arostm 0:e86d70f1f2ce 263 }
arostm 0:e86d70f1f2ce 264
arostm 0:e86d70f1f2ce 265 /**
arostm 0:e86d70f1f2ce 266 * @brief Compares two buffers.
arostm 0:e86d70f1f2ce 267 * @param pBuffer1, pBuffer2: buffers to be compared.
arostm 0:e86d70f1f2ce 268 * @param BufferLength: buffer's length
arostm 0:e86d70f1f2ce 269 * @retval 1: pBuffer identical to pBuffer1
arostm 0:e86d70f1f2ce 270 * 0: pBuffer differs from pBuffer1
arostm 0:e86d70f1f2ce 271 */
arostm 0:e86d70f1f2ce 272 static uint8_t Buffercmp(uint16_t* pBuffer1, uint16_t* pBuffer2, uint16_t BufferLength)
arostm 0:e86d70f1f2ce 273 {
arostm 0:e86d70f1f2ce 274 while (BufferLength--)
arostm 0:e86d70f1f2ce 275 {
arostm 0:e86d70f1f2ce 276 if (*pBuffer1 != *pBuffer2)
arostm 0:e86d70f1f2ce 277 {
arostm 0:e86d70f1f2ce 278 return 1;
arostm 0:e86d70f1f2ce 279 }
arostm 0:e86d70f1f2ce 280
arostm 0:e86d70f1f2ce 281 pBuffer1++;
arostm 0:e86d70f1f2ce 282 pBuffer2++;
arostm 0:e86d70f1f2ce 283 }
arostm 0:e86d70f1f2ce 284
arostm 0:e86d70f1f2ce 285 return 0;
arostm 0:e86d70f1f2ce 286 }
arostm 0:e86d70f1f2ce 287
arostm 0:e86d70f1f2ce 288 /**
arostm 0:e86d70f1f2ce 289 * @brief DMA transfer complete callback.
arostm 0:e86d70f1f2ce 290 * @param hdma: pointer to a SRAM_HandleTypeDef structure that contains
arostm 0:e86d70f1f2ce 291 * the configuration information for SRAM module.
arostm 0:e86d70f1f2ce 292 * @retval None
arostm 0:e86d70f1f2ce 293 */
arostm 0:e86d70f1f2ce 294 void HAL_SRAM_DMA_XferCpltCallback(DMA_HandleTypeDef *hdma)
arostm 0:e86d70f1f2ce 295 {
arostm 0:e86d70f1f2ce 296 write_complete = 1;
arostm 0:e86d70f1f2ce 297 }
arostm 0:e86d70f1f2ce 298
arostm 0:e86d70f1f2ce 299 uint8_t CheckForUserInput(void)
arostm 0:e86d70f1f2ce 300 {
arostm 0:e86d70f1f2ce 301 if(BSP_PB_GetState(BUTTON_WAKEUP) != GPIO_PIN_RESET)
arostm 0:e86d70f1f2ce 302 {
arostm 0:e86d70f1f2ce 303 while (BSP_PB_GetState(BUTTON_WAKEUP) != GPIO_PIN_RESET);
arostm 0:e86d70f1f2ce 304 return 1 ;
arostm 0:e86d70f1f2ce 305 }
arostm 0:e86d70f1f2ce 306 return 0;
arostm 0:e86d70f1f2ce 307 }
arostm 0:e86d70f1f2ce 308 /**
arostm 0:e86d70f1f2ce 309 * @}
arostm 0:e86d70f1f2ce 310 */
arostm 0:e86d70f1f2ce 311
arostm 0:e86d70f1f2ce 312 /**
arostm 0:e86d70f1f2ce 313 * @}
arostm 0:e86d70f1f2ce 314 */
arostm 0:e86d70f1f2ce 315 /************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/