к1986ве92fi прерывания в SPI_часть1

12+
12+

3 просмотра

7 дней назад

ПожаловатьсяНарушение авторских прав

к1986ве92fi прерывания в SPI_часть1

12+
12+

3 просмотра

7 дней назад

ПожаловатьсяНарушение авторских прав
12+
12+

3 просмотра

7 дней назад

void SPI1_Init(void) { PORT_InitTypeDef port; RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTF, ENABLE); PORT_StructInit(&port); port.PORT_Pin = PORT_Pin_0 | PORT_Pin_1 | PORT_Pin_3; port.PORT_OE = PORT_OE_OUT; port.PORT_MODE = PORT_MODE_DIGITAL; port.PORT_SPEED = PORT_SPEED_FAST; port.PORT_FUNC = PORT_FUNC_ALTER; PORT_Init(MDR_PORTF, &port); // Настройка CS (NSS) как обычный GPIO PORT_StructInit(&port); port.PORT_Pin = PORT_Pin_2; // PF2 - CS port.PORT_OE = PORT_OE_OUT; port.PORT_MODE = PORT_MODE_DIGITAL; port.PORT_SPEED = PORT_SPEED_FAST; port.PORT_FUNC = PORT_FUNC_PORT; PORT_Init(MDR_PORTF, &port); SSP_InitTypeDef ssp; RST_CLK_PCLKcmd(RST_CLK_PCLK_SSP1, ENABLE); SSP_BRGInit(MDR_SSP1, SSP_HCLKdiv1); SSP_StructInit(&ssp); ssp.SSP_Mode = SSP_ModeMaster; ssp.SSP_WordLength = SSP_WordLength8b; ssp.SSP_SPO = SSP_SPO_Low; ssp.SSP_SPH = SSP_SPH_1Edge; ssp.SSP_FRF = SSP_FRF_SPI_Motorola; ssp.SSP_CPSDVSR = 2; ssp.SSP_SCR = 0; ssp.SSP_HardwareFlowControl = SSP_HardwareFlowControl_None; SSP_Init(MDR_SSP1, &ssp); SSP_Cmd(MDR_SSP1, ENABLE); // UART_ITConfig(MDR_SSP1, SSP_IT_RX, ENABLE); // NVIC_SetPriority(SSP1_IRQn, 4); // NVIC_EnableIRQ(SSP1_IRQn); } // Обработчик прерывания SPI1 void SSP1_IRQHandler(void) // Внимание: имя для SSP1 { if (SSP_GetITStatus(MDR_SSP1, SSP_IT_RX)) { spi_rx_byte = (uint8_t)SSP_ReceiveData(MDR_SSP1); spi_rx_flag = 1; // Отправляем принятый байт обратно (эхо) SPI1_SendByte(spi_rx_byte); // Сбрасываем флаг прерывания SSP_ClearITPendingBit(MDR_SSP1, SSP_IT_ROR); } }

, чтобы оставлять комментарии