我正在使用STM32L496微控制器,在其中按以下方式初始化hspi3-
HAL_SPI_Init(&hspi3)
在我的hspi3
函数中,hspi->State = HAL_SPI_STATE_READY;
没有给出任何错误代码,并且转到hspi3
IMAGE。但是在监视窗口中,HAL_SPI_STATE_RESET
状态不会更新;它保持在void TIM3_IRQHandler(void)
{
static uint16_t sinTableIndex = 0;
uint8_t data_on_spi[3];
SysTime_mainFunction();
if (getOperatingState() == CONTROL){
data_on_spi[0]=sinTable[sinTableIndex] & MASK_LOW_BYTE;
data_on_spi[1]=sinTable[sinTableIndex] & MASK_MID_BYTE;
data_on_spi[2]=sinTable[sinTableIndex] & MASK_HIGH_BYTE;
HAL_GPIO_WritePin(SPI3_Chip_Select_DAC_GPIO_Port,SPI3_Chip_Select_DAC_Pin,GPIO_PIN_RESET);
if(HAL_SPI_Transmit(&hspi3, (uint8_t*)data_on_spi, 3,1) != HAL_OK)
{
/* Transfer error in transmission process */
Error_Handler();
}
HAL_GPIO_WritePin(SPI3_Chip_Select_DAC_GPIO_Port,SPI3_Chip_Select_DAC_Pin,GPIO_PIN_SET);
sinTableIndex++;
if (sinTableIndex >= maxTableSize)
{
sinTableIndex = 0;
}
}
HAL_TIM_IRQHandler(&htim3);
}
。因此,当我尝试如下所示使用SPI发送一些数据时,它会失败-
HAL_SPI_Transmit(&hspi3, (uint8_t*)data_on_spi, 3,1)
当我HAL_SPI_STATE_RESET
时,它进入错误处理程序,因为它将SPI状态识别为HAL_SPI_Transmit(&hspi3, (uint8_t*)data_on_spi, 3,1)
。
需要帮助以了解发生这种情况的原因。
编辑:我认为问题是,当我尝试执行__HAL_LOCK(hspi)
时,即使{{1}}完成,LOCK仍保持解锁状态。
答案 0 :(得分:1)