Доброго времени суток.
Столкнулся со следующей проблемой.
В данном случае SPI работает корректно:
Код
uint8_t BufReadMR45[3] = {0x03,0x00,0x00};
uint8_t DataReadMR45[5] = {0};
void ReadMR45(void)
{
HAL_GPIO_WritePin(PortCSMR45, PinCSMR45, GPIO_PIN_RESET); // CS on
HAL_Delay(1);
HAL_SPI_Transmit(&hspi1, &BufReadMR45[0], 3, 1000); // Отправка данных по SPI
HAL_SPI_Receive(&hspi1, &DataReadMR45[0], 1, 1000); // Получение данных по SPI
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_SET);
HAL_GPIO_WritePin(PortCSMR45, PinCSMR45, GPIO_PIN_SET); // CS off
HAL_UART_Transmit(&huart1, &DataReadMR45[0], 1, 0x1000); // Отправляю данные по UART
ByteMR45_R = ByteMR45_R + 1;
}
Если я изменю функцию:
Код
HAL_SPI_Receive(&hspi1, &DataReadMR45[0], 5, 1000);
Чтобы считывать сразу больше 1 байта, программа зависает.
Отладчик приводит в
HardFault_Handler(void)Процессор STM32F030, до этого работал с серией F4, таких проблем вроде как не было.