Код: Выделить всё
// PB12 - SS
// PB13 - SCK
// PB14 - MISO
// PB15 - MOSI
void init_spi()
{
// тактирование SPI2
RCC->APB1ENR|=RCC_APB1ENR_SPI2EN;
// режим работы порта - alternative function
GPIOB->MODER|=GPIO_MODER_MODER12_1 | GPIO_MODER_MODER13_1 | GPIO_MODER_MODER14_1 | GPIO_MODER_MODER15_1;
// выбираем саму альтернативную функцию AF5
GPIOB->AFR[1]|=(5<<16)|(5<<20)|(5<<24)|(5<<28);
// скорость
GPIOB->OSPEEDR|=GPIO_OSPEEDER_OSPEEDR12_0 | GPIO_OSPEEDER_OSPEEDR13_0 | GPIO_OSPEEDER_OSPEEDR14_0 | GPIO_OSPEEDER_OSPEEDR15_0 |GPIO_OSPEEDER_OSPEEDR12_1 | GPIO_OSPEEDER_OSPEEDR13_1 | GPIO_OSPEEDER_OSPEEDR14_1 | GPIO_OSPEEDER_OSPEEDR15_1;
SPI2->CR1|=(1<<4) | SPI_CR1_MSTR;
// SPI2->CR1|=SPI_CR1_CPOL;
SPI2->CR2|=SPI_CR2_SSOE;
// включаем SPI
SPI2->CR1|=SPI_CR1_SPE;
}
void send_spi2(u8 *data)
{
u8 flag=1,i=0;
while(flag)
{
SPI2->DR=data[i];
while( !(SPI2->SR & SPI_SR_RXNE))
{}
if(data[i]==0x03)
flag=0;
i++;
}
}


