{
RCC->APB2ENR|=RCC_APB2ENR_SPI1EN;
RCC->AHB2ENR|=RCC_AHB2ENR_GPIOAEN|RCC_AHB2ENR_GPIOBEN;
CLEAR_BIT(GPIOA->MODER,0x00005400); //GPIOSPI
GPIOA->AFR[0]|=0x55500000; //
GPIOB->MODER &= ~(1 <<3);//CS
GPIOB->MODER &= ~(1 <<1);
SPI1 -> CR1 = SPI_CR1_SSM | SPI_CR1_SSI | SPI_CR1_MSTR| SPI_CR1_BR_2;
SPI1 -> CR2 =SPI_CR2_DS_0 | SPI_CR2_DS_1 | SPI_CR2_DS_2 /*| SPI_CR2_FRXTH*/;
SPI1->CR2 |= SPI_CR2_RXNEIE/*|SPI_CR2_TXEIE*/|SPI_CR2_ERRIE ; //????????? ??????????, ???? ?????? ???? ??????
NVIC_EnableIRQ (SPI1_IRQn);
}
uint8_t SPI_SendByte(uint8_t byte)
{while(!READ_BIT(SPI1 -> SR, SPI_SR_TXE));
SPI1->DR = byte;
}
int main(void)
{
__disable_irq (); // GLOBAL INTERRUPT
__enable_irq ();
/*SET_BIT(RCC->CR,RCC_CR_HSION);
SET_BIT(RCC->CFGR,RCC_CFGR_SW_0);
CLEAR_BIT(RCC->CR,RCC_CR_MSION);*/
delay(1000);
GPIO_and_setting_for_spi1();
ADC1_INIT();
SET_BIT(SPI1->CR1,SPI_CR1_SPE);
while (1)
{
delay(100);
/* GPIOB->ODR=0x0;
SPI_SendByte(0xD7);
SPI_SendByte(0x00);
while(READ_BIT(SPI1 -> SR, SPI_SR_BSY));
GPIOB->ODR=0x2; */
GPIOB->ODR=0x0;
SPI_SendByte(0x84);
SPI_SendByte(0x00);
SPI_SendByte(0x0);
SPI_SendByte(0x10);
for(uint8_t q=0; q<0xe0;q++){ SPI_SendByte(q);}
while(READ_BIT(SPI1 -> SR, SPI_SR_BSY));
GPIOB->ODR=0x2;
GPIOB->ODR=0x0;
SPI_SendByte(0x84);
SPI_SendByte(0x00);
SPI_SendByte(0x0);
SPI_SendByte(20);
for(uint8_t q=0; q<16;q++){SPI_SendByte(1);}
GPIOB->ODR=0x2;
delay(10);
GPIOB->ODR=0x0;
SPI_SendByte(0x84);
SPI_SendByte(0x0);
SPI_SendByte(0x0);
SPI_SendByte(25);
for(uint8_t q=0; q<5;q++){SPI_SendByte(5);}
GPIOB->ODR=0x2;
delay(10);
GPIOB->ODR=0x0;
SPI_SendByte(0xD4);
SPI_SendByte(0x0);
SPI_SendByte(0x0);
i=0; SPI_SendByte(0);
SPI_SendByte(0);
for(uint8_t q=0; q<0xff;q++){SPI_SendByte(0);}
while(READ_BIT(SPI1 -> SR, SPI_SR_BSY)); //a[3]=tmp;
GPIOB->ODR=0x2;
}
void SPI1_IRQHandler(void)
{
if(READ_BIT(SPI1->SR,SPI_SR_RXNE))
{CLEAR_BIT(SPI1->CR2,SPI_CR2_RXNEIE);
if(i==0xff){i=0;}
a=tmp=(SPI1->DR)>>8; i++;
SET_BIT(SPI1->CR2,SPI_CR2_RXNEIE);
}
}
Все массивы пишутся с одного и того же адреса. Ну тоесть байт+бит адреса в буфере всегда воспринимается как ноль.
Никак не могу понять что не так((


