Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void cfgSPI1(void)
- {
- //Initialize SPI peripheral
- RCC -> APB2ENR |= RCC_APB2ENR_SPI1EN;
- //Set baud rate to fclk/128
- SPI1 -> CR1 |= SPI_CR1_BR_2 | SPI_CR1_BR_1;
- SPI1 -> CR1 |= SPI_CR1_SSM | SPI_CR1_SSI;
- //Set it as master
- SPI1 -> CR1 |= SPI_CR1_MSTR;
- SPI1 -> CR1 |= SPI_CR1_SPE;
- //Enable GPIOA peripheral clock and configure GPIO pins
- RCC -> APB2ENR |= RCC_APB2ENR_IOPAEN;
- //NSS
- GPIOA -> CRL |= GPIO_CRL_CNF4_1;
- //SCK
- GPIOA -> CRL |= GPIO_CRL_MODE5_1 | GPIO_CRL_MODE5_0;
- GPIOA -> CRL |= GPIO_CRL_CNF5_1;
- //MISO
- GPIOA -> CRL |= GPIO_CRL_MODE6_1 | GPIO_CRL_MODE6_0;
- GPIOA -> CRL |= GPIO_CRL_CNF6_1;
- //MOSI
- GPIOA -> CRL |= GPIO_CRL_MODE7_1 | GPIO_CRL_MODE7_0;
- GPIOA -> CRL |= GPIO_CRL_CNF7_1;
- }
- void TIM2_IRQHandler(void)
- {
- TIM2->SR &= ~(TIM_SR_UIF);
- //Set slave select to low
- GPIOA -> ODR &= GPIO_ODR_ODR4;
- //Transfer 1 over SPI
- SPI1 -> DR |= 1;
- //Wait until transfer is completed
- while (!(SPI1->SR & (SPI_SR_TXE)));
- // Wait until receive complete
- while (!(SPI1->SR & (SPI_SR_RXNE)));
- // Wait until SPI is not busy anymore
- while (SPI1->SR & (SPI_SR_BSY));
- int i = SPI1 -> DR;
- GPIOA -> ODR |= GPIO_ODR_ODR4;
- // Toggle the LED output pin.
- GPIOC->ODR ^= GPIO_ODR_ODR13 ;
- }
- #include "Arduino.h"
- ISR(SPI_STC_vect)
- {
- uint8_t data_byte = SPDR;
- Serial.print(data_byte);
- Serial.print("test")
- }
- void setup()
- {
- Serial.begin(9600);
- // Set MISO pin as output
- pinMode(MISO, OUTPUT);
- // Turn on SPI in slave mode
- SPCR |= (1 << SPE);
- // Turn on interrupt
- interrupts();
- SPCR |= (1 << SPIE);
- }
- void loop()
- {
- }
Add Comment
Please, Sign In to add comment