Всем доброго времени суток!
Контроллер stm32f429zi, после настройке spi замыкаю MISO на MOSI для получения на вход байта, который посылаю. Ниже код настройки spi:
Вход в прерывание осуществляется при отправке данных, а не при приёме (при отсутствии перемычки MISO-MOSI), и никаких данных в итоге не получаю, переменная temp всегда =0. В чём ошибка настройки?
Раздел: STM32
Контроллер stm32f429zi, после настройке spi замыкаю MISO на MOSI для получения на вход байта, который посылаю. Ниже код настройки spi:
void spi_init()
{
SPI_InitTypeDef mySPI;
GPIO_InitTypeDef myGPIO;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);
RCC_AHB1PeriphResetCmd(RCC_AHB1Periph_GPIOA, ENABLE);
// GPIO_PinAFConfig(GPIOA, GPIO_Pin_4, GPIO_AF_SPI1);
GPIO_PinAFConfig(GPIOA, GPIO_Pin_5, GPIO_AF_SPI1);
GPIO_PinAFConfig(GPIOA, GPIO_Pin_6, GPIO_AF_SPI1);
GPIO_PinAFConfig(GPIOA, GPIO_Pin_7, GPIO_AF_SPI1);
GPIO_StructInit(&myGPIO);
myGPIO.GPIO_Mode=GPIO_Mode_AF;
myGPIO.GPIO_Pin=GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6|GPIO_Pin_7;
GPIO_Init(GPIOA, &myGPIO);
SPI_NSSInternalSoftwareConfig(SPI1, SPI_NSSInternalSoft_Set);
SPI_StructInit(&mySPI);
mySPI.SPI_BaudRatePrescaler=SPI_BaudRatePrescaler_32;
mySPI.SPI_Mode=SPI_Mode_Master;
mySPI.SPI_NSS=SPI_NSS_Soft;
SPI_Init(SPI1, &mySPI);
SPI_I2S_ITConfig(SPI1, SPI_I2S_IT_RXNE, ENABLE);
SPI_Cmd(SPI1, ENABLE);
NVIC_EnableIRQ(SPI1_IRQn);
}
void SPI1_IRQHandler()
{
volatile uint16_t temp;
if (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE)==SET)
{
temp=SPI_I2S_ReceiveData(SPI1);
}
void EXTI0_IRQHandler() //внешняя кнопка
{
EXTI_ClearITPendingBit(EXTI_Line0);
GPIO_ResetBits(GPIOA, GPIO_Pin_4);
SPI_I2S_SendData(SPI1, 0x03);
GPIO_SetBits(GPIOA, GPIO_Pin_4);
}
}
Вход в прерывание осуществляется при отправке данных, а не при приёме (при отсутствии перемычки MISO-MOSI), и никаких данных в итоге не получаю, переменная temp всегда =0. В чём ошибка настройки?
Раздел: STM32