Проблема в SPI при обмене данными между stm32f4 и arduino - PullRequest
0 голосов
/ 01 октября 2018

В моем spi-коде без библиотек HAL я не могу отправлять данные вместо 0xFF, если я отправляю какие-либо данные, которые по умолчанию отправляются как 0xFF. Вот мой код:

#include <stm32f4xx.h>

uint8_t i = 100;
int j = 0;
uint8_t data = 82;

void afio_config(void);
void spi_init(void);

int main(void)
{
    afio_config();
    spi_init();
    NVIC_EnableIRQ(SPI2_IRQn);
    while(1)
    {
    }
}

void afio_config()
{
    RCC -> AHB1ENR |= (1<<1)|(1<<2);
    RCC -> APB1ENR |= (1<<14);
    GPIOB -> MODER |= (1<<21)|(1<<24);
    GPIOC -> MODER |= (1<<7)|(1<<5);
    GPIOB ->OTYPER &= ~((1<<12)&(1<<10));
    GPIOC ->OTYPER &= ~((1<<2)&(1<<3));
    GPIOB -> OSPEEDR |= (1<<24)|(1<<20);
    GPIOC -> OSPEEDR |= (1<<4)|(1<<6);
    GPIOB -> PUPDR |= (1<<25)|(1<<21);
    GPIOC -> PUPDR |= (1<<4)|(1<<6);
    GPIOC -> AFR[0] |= (1<<14)|(1<<12)|(1<<10)|(1<<8);
    GPIOB -> AFR[1] |= (1<<10)|(1<<8);
}


void spi_init()
{
    SPI2 ->CR1 |= (1<<4)|(1<<5);
    SPI2 ->CR1 |= (1<<15)|(1<<14);
    SPI2 ->CR1 |= (1<<9)|(1<<8);
    SPI2 ->CR2 |= (1<<7);
    SPI2 ->CR1 |= (1<<2);
    SPI2 ->CR1 |= (1<<6);
    GPIOB ->ODR &= ~(1<<12);
}

void SPI2_IRQHandler()
{
    SPI2 ->DR = data;
}
...