Currently i have issue with QSPI when use inside freeRTOS. I send command interrupt by use method (This is example code generate from cubemx) I try to use on with freeRTOS task and wait for interrupt event by semaphore
/* Erasing Sequence -------------------------------------------------- */
sCommand.Instruction = SECTOR_ERASE_CMD;
sCommand.AddressMode = QSPI_ADDRESS_1_LINE;
sCommand.Address = address;
sCommand.DataMode = QSPI_DATA_NONE;
sCommand.DummyCycles = 0;
if (HAL_QSPI_Command_IT(&hqspi, &sCommand) != HAL_OK) {
Error_Handler();
}
void QUADSPI_IRQHandler(void)
{
/* USER CODE BEGIN QUADSPI_IRQn 0 */
/* USER CODE END QUADSPI_IRQn 0 */
HAL_QSPI_IRQHandler(&hqspi);
/* USER CODE BEGIN QUADSPI_IRQn 1 */
/* USER CODE END QUADSPI_IRQn 1 */
}
void HAL_QSPI_CmdCpltCallback(QSPI_HandleTypeDef *hqspi) {
CmdCplt++;
}
/**
* @brief Rx Transfer completed callbacks.
* @param hqspi: QSPI handle
* @retval None
*/
void HAL_QSPI_RxCpltCallback(QSPI_HandleTypeDef *hqspi) {
RxCplt++;
}
/**
* @brief Tx Transfer completed callbacks.
* @param hqspi: QSPI handle
* @retval None
*/
void HAL_QSPI_TxCpltCallback(QSPI_HandleTypeDef *hqspi) {
TxCplt++;
}
/**
* @brief Status Match callbacks
* @param hqspi: QSPI handle
* @retval None
*/
void HAL_QSPI_StatusMatchCallback(QSPI_HandleTypeDef *hqspi) {
StatusMatch++;
}