#include "stm32f0xx.h" #include "stm32f0xx_gpio.h" #include "stm32f0xx_rcc.h" #include "stm32f0xx_spi.h" void main() { /*Clock für die Peripherie einschalten*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA , ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC , ENABLE); /* Benötigte PINS aktivieren */ GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7; GPIO_Init(GPIOA, &GPIO_InitStructure); //MAPPING Alternative Function GPIO_PinAFConfig(GPIOA,GPIO_PinSource4, GPIO_AFRL_AFRL5); GPIO_PinAFConfig(GPIOA,GPIO_PinSource5, GPIO_AFRL_AFRL5); GPIO_PinAFConfig(GPIOA,GPIO_PinSource6, GPIO_AFRL_AFRL5); GPIO_PinAFConfig(GPIOA,GPIO_PinSource7, GPIO_AFRL_AFRL5); GPIO_PinAFConfig(GPIOB,GPIO_PinSource12, GPIO_AFRH_AFRH5); GPIO_PinAFConfig(GPIOB,GPIO_PinSource13, GPIO_AFRH_AFRH5); GPIO_PinAFConfig(GPIOB,GPIO_PinSource14, GPIO_AFRH_AFRH5); GPIO_PinAFConfig(GPIOB,GPIO_PinSource15, GPIO_AFRH_AFRH5); ///*SPI1-Konfigurieren*/ SPI_InitTypeDef SPI_InitStructure; SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex; SPI_InitStructure.SPI_Mode = SPI_Mode_Master; SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b; SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low; SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge; SPI_InitStructure.SPI_NSS = SPI_NSS_Hard; //Nicht verwendet SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_2; SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB; SPI_InitStructure.SPI_CRCPolynomial = 7; SPI_Init(SPI1, &SPI_InitStructure); /*SPI1 aktivieren*/ SPI_Cmd(SPI1, ENABLE); /*Clock für die Peripherie einschalten*/ RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2, ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE); /* Benötigte PINS aktivieren */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15; GPIO_Init(GPIOB, &GPIO_InitStructure); /*SPI2-Konfigurieren*/ SPI_InitStructure.SPI_Mode = SPI_Mode_Slave; //Empfänger ist Slave SPI_Init(SPI2, &SPI_InitStructure); /*SPI2 aktivieren*/ SPI_Cmd(SPI2, ENABLE); uint32_t i = 0; uint8_t c_daten =0; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_SetBits(GPIOC, GPIO_Pin_8); while (1) { for(i=0;i<10000;i++){} SPI_SendData8(SPI1,0xAA); for(i=0;i<10000;i++){} c_daten = SPI_ReceiveData8(SPI2); } }