Еще уточнения.
while(!(SPI1-›SR & SPI_SR_RXNE)){}
Эта строка ожидание пока в буфер что не придет ????
return SPI1-›DR; А эта читаем пришедший байт ????
И вот такой код не запустился ...(((
Код:
|
void SPI2_init(void)
{
RCC-›AHB1ENR |=RCC_AHB1ENR_GPIOAEN ;
RCC-›APB1ENR |=RCC_APB1ENR_SPI2EN ;
GPIOB-›MODER &= ~
(GPIO_MODER_MODER12 |
GPIO_MODER_MODER13 |
GPIO_MODER_MODER14 |
GPIO_MODER_MODER15
);
GPIOB-›MODER |=
GPIO_MODER_MODER12_0 |
GPIO_MODER_MODER13_1 |
GPIO_MODER_MODER14_1 |
GPIO_MODER_MODER15_1
;
GPIOB-›OTYPER &= ~
(GPIO_OTYPER_OT_12 |
GPIO_OTYPER_OT_13 |
GPIO_OTYPER_OT_14 |
GPIO_OTYPER_OT_15
);
GPIOB-›OSPEEDR &= ~
(GPIO_OSPEEDER_OSPEEDR12 |
GPIO_OSPEEDER_OSPEEDR13 |
GPIO_OSPEEDER_OSPEEDR14 |
GPIO_OSPEEDER_OSPEEDR15
);
GPIOB-›OSPEEDR |=
GPIO_OSPEEDER_OSPEEDR12_0 |
GPIO_OSPEEDER_OSPEEDR13_0 |
GPIO_OSPEEDER_OSPEEDR14_0 |
GPIO_OSPEEDER_OSPEEDR15_0
;
GPIOB-›PUPDR &= ~
(GPIO_PUPDR_PUPDR12 |
GPIO_PUPDR_PUPDR13 |
GPIO_PUPDR_PUPDR14 |
GPIO_PUPDR_PUPDR15);
GPIOB-›AFR[0] |= (5 ‹‹ 4*13) | (5 ‹‹ 4*14) | (5 ‹‹ 4*15);
SPI2-›CR1 |=
SPI_CR1_BR_0 | //
SPI_CR1_BR_1 |
SPI_CR1_BR_2 |
SPI_CR1_MSTR |
SPI_CR1_SSI |
SPI_CR1_SSM
;
SPI2-›CR1 |= SPI_CR1_SPE;
}
uint8_t SPI2_send(uint8_t data)
{
SPI1-›DR=data;
while(!(SPI2-›SR & SPI_SR_RXNE)){}
return SPI2-›DR;
} |