ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
30 июня
1308623 Топик полностью
Costic (11.05.2023 15:05, просмотров: 393) ответил Eddy_Em на Наткнулся на косяк STM32F303.
Регистры, конечно, для крутых программистов, но ими надо уметь пользоваться. 

Я думаю, проблема тут:

// clear SPI Rx FIFO
(void) SPI2->DR;
while(SPI2->SR & SPI_SR_RXNE) (void) SPI2->DR;

il-2 дал хороший совет, но не точный. Точно можно в SPL увидеть. __IO это volatile. Надо внимательно читать раздел #30.5.8 Data packing и далее.

uint8_t SPI_ReceiveData8(SPI_TypeDef* SPIx)
{
   uint32_t spixbase = 0x00;
  /* Check the parameters */
  assert_param(IS_SPI_ALL_PERIPH_EXT(SPIx));
  spixbase = (uint32_t)SPIx;

  spixbase += 0x0C;
  return *(__IO uint8_t *) spixbase;
}

P.S. Регистр периферии это не регистр процессора/контроллера. Не всегда из него можно прочитать то, что только что в него записали. Физически они часто разные п0рты.