78 HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
119 printf(
"\x1b[2J\x1b[H");
120 printf(
"Hello World!!!!!\r\n");
121 printf(
"Project: H753_CPP_W25Q_QSPI_Flash_Read_Write_01\r\n");
127#ifdef W25Q_VALIDATION_TEST_ENABLE
130 uint32_t jedecId = 0;
131 if (w25qReadJEDECID(&jedecId)) {
132 printf(
"W25Q flash detected, JEDEC ID: 0x%06lX\r\n", (
unsigned long)jedecId);
134 printf(
"W25Q flash QUADSPI read failed after Init() succeeded -- check for a loose connection\r\n");
140 const uint32_t demoAddr = 0x000000;
141 const char demoMessage[] =
"Hello from the H753, stored in W25Q flash via QSPI!";
143 if (!w25qEraseSector(demoAddr)) {
144 printf(
"Demo erase failed\r\n");
145 }
else if (!w25qWriteBuffer(demoAddr, (
const uint8_t *)demoMessage,
sizeof(demoMessage))) {
146 printf(
"Demo write failed\r\n");
148 uint8_t readBack[
sizeof(demoMessage)] = { 0 };
149 if (!w25qReadBuffer(demoAddr, readBack,
sizeof(readBack))) {
150 printf(
"Demo read failed\r\n");
152 printf(
"Wrote: \"%s\"\r\n", demoMessage);
153 printf(
"Read : \"%s\"\r\n", readBack);
154 if (memcmp(demoMessage, readBack,
sizeof(demoMessage)) == 0) {
155 printf(
"Read-back matches -- write/read round trip OK\r\n");
157 printf(
"Read-back MISMATCH\r\n");
163 printf(
"W25Q flash NOT detected -- check wiring\r\n");
165 bool transferOk = w25qReadJEDECIDRaw(&rawId);
166 printf(
" diagnostic raw JEDEC read: transfer %s, bytes 0x%06lX\r\n",
167 transferOk ?
"OK" :
"FAILED", (
unsigned long)rawId);
189 RCC_OscInitTypeDef RCC_OscInitStruct = {0};
190 RCC_ClkInitTypeDef RCC_ClkInitStruct = {0};
194 HAL_PWREx_ConfigSupply(PWR_LDO_SUPPLY);
198 __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE0);
200 while(!__HAL_PWR_GET_FLAG(PWR_FLAG_VOSRDY)) {}
205 RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
206 RCC_OscInitStruct.HSIState = RCC_HSI_DIV1;
207 RCC_OscInitStruct.HSICalibrationValue = RCC_HSICALIBRATION_DEFAULT;
208 RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
209 RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
210 RCC_OscInitStruct.PLL.PLLM = 4;
211 RCC_OscInitStruct.PLL.PLLN = 60;
212 RCC_OscInitStruct.PLL.PLLP = 2;
213 RCC_OscInitStruct.PLL.PLLQ = 4;
214 RCC_OscInitStruct.PLL.PLLR = 2;
215 RCC_OscInitStruct.PLL.PLLRGE = RCC_PLL1VCIRANGE_3;
216 RCC_OscInitStruct.PLL.PLLVCOSEL = RCC_PLL1VCOWIDE;
217 RCC_OscInitStruct.PLL.PLLFRACN = 0;
218 if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
225 RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
226 |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2
227 |RCC_CLOCKTYPE_D3PCLK1|RCC_CLOCKTYPE_D1PCLK1;
228 RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
229 RCC_ClkInitStruct.SYSCLKDivider = RCC_SYSCLK_DIV1;
230 RCC_ClkInitStruct.AHBCLKDivider = RCC_HCLK_DIV2;
231 RCC_ClkInitStruct.APB3CLKDivider = RCC_APB3_DIV2;
232 RCC_ClkInitStruct.APB1CLKDivider = RCC_APB1_DIV2;
233 RCC_ClkInitStruct.APB2CLKDivider = RCC_APB2_DIV2;
234 RCC_ClkInitStruct.APB4CLKDivider = RCC_APB4_DIV2;
236 if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4) != HAL_OK)
258 hqspi.Instance = QUADSPI;
259 hqspi.Init.ClockPrescaler = 255;
260 hqspi.Init.FifoThreshold = 1;
261 hqspi.Init.SampleShifting = QSPI_SAMPLE_SHIFTING_NONE;
262 hqspi.Init.FlashSize = 23;
263 hqspi.Init.ChipSelectHighTime = QSPI_CS_HIGH_TIME_1_CYCLE;
264 hqspi.Init.ClockMode = QSPI_CLOCK_MODE_0;
265 hqspi.Init.FlashID = QSPI_FLASH_ID_1;
266 hqspi.Init.DualFlash = QSPI_DUALFLASH_DISABLE;
267 if (HAL_QSPI_Init(&hqspi) != HAL_OK)
292 huart1.Instance = USART1;
293 huart1.Init.BaudRate = 19200;
294 huart1.Init.WordLength = UART_WORDLENGTH_8B;
295 huart1.Init.StopBits = UART_STOPBITS_1;
296 huart1.Init.Parity = UART_PARITY_NONE;
297 huart1.Init.Mode = UART_MODE_TX_RX;
298 huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
299 huart1.Init.OverSampling = UART_OVERSAMPLING_16;
300 huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
301 huart1.Init.ClockPrescaler = UART_PRESCALER_DIV1;
302 huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
303 if (HAL_UART_Init(&huart1) != HAL_OK)
307 if (HAL_UARTEx_SetTxFifoThreshold(&huart1, UART_TXFIFO_THRESHOLD_1_8) != HAL_OK)
311 if (HAL_UARTEx_SetRxFifoThreshold(&huart1, UART_RXFIFO_THRESHOLD_1_8) != HAL_OK)
315 if (HAL_UARTEx_DisableFifoMode(&huart1) != HAL_OK)
332 GPIO_InitTypeDef GPIO_InitStruct = {0};
338 __HAL_RCC_GPIOC_CLK_ENABLE();
339 __HAL_RCC_GPIOF_CLK_ENABLE();
340 __HAL_RCC_GPIOH_CLK_ENABLE();
341 __HAL_RCC_GPIOB_CLK_ENABLE();
342 __HAL_RCC_GPIOD_CLK_ENABLE();
343 __HAL_RCC_GPIOA_CLK_ENABLE();
346 GPIO_InitStruct.Pin = STLINK_RX_Pin|STLINK_TX_Pin;
347 GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
348 GPIO_InitStruct.Pull = GPIO_NOPULL;
349 GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
350 GPIO_InitStruct.Alternate = GPIO_AF7_USART3;
351 HAL_GPIO_Init(GPIOD, &GPIO_InitStruct);
static void MX_QUADSPI_Init(void)
QUADSPI Initialization Function.
static void MX_USART1_UART_Init(void)
USART1 Initialization Function.
void SystemClock_Config(void)
System Clock Configuration.
int main(void)
The application entry point.
void _Error_Handler(const char *file, int line)
This function is executed in case of error occurrence.
static void MX_GPIO_Init(void)
GPIO Initialization Function.
: Header for main.c file. This file contains the common defines of the application.