Пт апр 20, 2018 21:08:14
Вт апр 24, 2018 16:52:50
Вт апр 24, 2018 17:55:11
uldemir писал(а):объявил в main.c а в configure.c написал как extern
Вт апр 24, 2018 18:41:53
Вт апр 24, 2018 20:41:23
Сб апр 28, 2018 15:29:31
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE) == RESET);
typedef enum
{
SPI_EEPROM_STATUS_BSY, // Spi is busy
SPI_EEPROM_STATUS_RDY
} SpiEepromStatus;
typedef struct
{
unsigned spiByteReseived: 1;
unsigned spiByteTransmited: 1;
} SpiState_TypeDef;
SpiEepromStatus ui8EepromSendByte(uint8_t byte)
{
SpiEepromStatus Status = SPI_EEPROM_STATUS_BSY;
if (SPI2->SR & SPI_SR_TXE)
{
SPI2->DR = byte;
Status = SPI_EEPROM_STATUS_RDY;
}
else
Status = SPI_EEPROM_STATUS_BSY;
return Status;
}
ui8EepromSendByte
void SPI2_IRQHandler (void)
{
if (SPI2->SR & SPI_SR_RXNE)
{
ui8ByteFromSpiEeprom = SPI2->DR;
vSetSpiEepromFlag (&SpiState, SPI_BYTE_RECEIVED);
}
if (SPI2->SR & SPI_SR_TXE)
{
SPI2->SR &= ~SPI_SR_TXE;
}
}
typedef struct
{
unsigned spiByteReseived: 1;
unsigned spiByteTransmited: 1;
} SpiState_TypeDef;
Сб апр 28, 2018 15:43:40
Сб апр 28, 2018 15:47:05
while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE) == RESET);
ui8EepromSendByte
void ui8EepromSendByte(uint8_t byte)
{
while (!(SPI2->SR & SPI_SR_TXE)); // ждем
SPI2->DR = byte;
}
Сб апр 28, 2018 15:59:14
Сб апр 28, 2018 16:04:08
Так не сработает. Бит только для чтения.Chip115 писал(а):SPI2->SR &= ~SPI_SR_TXE;
Вс апр 29, 2018 02:39:44
#define SPI_SendData8(SPIx, data) *(__IO uint8_t *)&SPIx->DR = data
Вс апр 29, 2018 09:01:31
Вс апр 29, 2018 10:35:29
Вс апр 29, 2018 10:37:58
Почитайте про указатели.Chip115 писал(а): зачем нужна операция И
Кто сказал что нельзя?Chip115 писал(а):Почему нельзя написать SPIx->DR = data
Вс апр 29, 2018 11:55:52
Вс апр 29, 2018 13:53:40
Вс апр 29, 2018 14:19:30
Вс апр 29, 2018 15:18:18
Вс апр 29, 2018 21:13:21