daily pastebin goal
11%
SHARE
TWEET

Untitled

a guest Aug 15th, 2018 58 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include "stm32f4xx.h"
  2.     void delay(unsigned long int);   
  3.     char spiread(char addr);
  4.         void spiwrite(char, char);
  5.    char osx;
  6.  
  7. int main(void)
  8. {
  9. char abcds;          
  10. long int abcc=0;
  11.   RCC -> AHB1ENR |= RCC_AHB1ENR_GPIODEN;    //to turn GPIOD's clock
  12.    RCC -> AHB1ENR |= RCC_AHB1ENR_GPIOAEN;   //to turn GPIOA's clock
  13.    RCC -> AHB1ENR |= RCC_AHB1ENR_GPIOEEN;   //to turn GPIOE's clock
  14.  
  15.    GPIOD -> MODER |= GPIO_MODER_MODER13_0;  //PD13 as output 01 bo tam jest podwojny rejestr jakby
  16.    GPIOA -> MODER &=~ GPIO_MODER_MODER0;    //PA0 as input
  17.    GPIOA-> PUPDR &=~ GPIO_PUPDR_PUPDR0; // wejscie jest z pul down
  18.    GPIOE -> MODER |= GPIO_MODER_MODER3_0;   //PE3 as output 01 bo tam jest podwojny rejestr jakby
  19.  
  20.    GPIOE -> ODR |= (1<<3);
  21.  
  22.    
  23.  
  24.  
  25.  
  26.  
  27. RCC -> APB2ENR |= RCC_APB2ENR_SPI1EN; //SPI clock
  28.     GPIOA -> MODER |= GPIO_MODER_MODER5_1 | GPIO_MODER_MODER7_1 | GPIO_MODER_MODER6_1;        // alterntativre function mode
  29.     GPIOA -> AFR[0] |= 5<<28 | 5<<24 | 5<<20;
  30.    
  31.     SPI1 -> CR1 |= SPI_CR1_SSM | SPI_CR1_SSI | 7<<3 | SPI_CR1_MSTR | SPI_CR1_CPOL | SPI_CR1_CPHA;// | SPI_CR1_LSBFIRST;
  32.     //SPI1 -> CR1 |= SPI_CR1_DFF; // 16 bitowa ramka
  33.     SPI1 -> CR1 |= SPI_CR1_SPE;
  34.  
  35.  
  36.  
  37.  
  38.  
  39.       /*
  40.  
  41.     if(spiread(0x20) == 0x07)
  42.         GPIOD -> ODR |= 1<<13; 
  43.        */
  44.  
  45.  
  46.  
  47.  
  48.  
  49.  
  50.   GPIOD -> ODR |= (1<<13); //PD13 ustawiam na 1
  51.   spiwrite(0x20,0x47);    // ustawiam wartosci w rejestrach: rejest, wartosc
  52.  
  53.  
  54.   while(1)
  55.   {
  56.   GPIOD -> ODR |= (1<<13); //PD13 ustawiam na 1
  57. osx=spiread(0x29);
  58. if(osx >0x07)
  59. {
  60.  GPIOD -> ODR &=~ (1<<13); //PD13 ustawiam na 1
  61.    delay(1000);
  62. }
  63.  
  64.    
  65.  
  66. //   GPIOD -> ODR |= (1<<13); //PD13 ustawiam na 1
  67. //                                     
  68. //                            abcc= spiraz();
  69. //                          //   abcc=GPIOA->IDR & 0x0000001;   // ustawiam ze chce z portu A0 przypisac wartosc do abcc
  70. //                             if(abcc!=0)
  71. //                             {
  72. //                             
  73. //                                 GPIOD -> ODR &=~ (1<<13); //PD13 ustawiam na 0
  74. //                               // delay(1000);
  75. //                             
  76. //                             }   
  77.   }
  78.  
  79.     while(1);
  80.     return 0;
  81. }
  82.  
  83.  
  84.  
  85. // podajesz w milisekunkach opoznienie jakie ma byc i takie jest
  86.  
  87.  
  88. void delay(unsigned long int opoznieniems)      //funkcja wprowadza opoznienie w ms podane
  89. {
  90. long int licznikms=0;
  91. int i,b;
  92. for(licznikms; licznikms<opoznieniems/2; licznikms++)
  93. {   // tutaj ma byc 168 000 operacji
  94.      int a=6;
  95.      a=a+1;
  96.         for(i=0; i<84;i++)
  97.         {
  98.     for( b=0;b<1000;b++)
  99.      {}
  100.         }
  101.  
  102. }
  103. }
  104.  
  105. char spiread(char addr)
  106. {
  107.     char luka;
  108.        GPIOE -> ODR &=~ (1<<3); //PE3 ustawiam na 0 dzieki temu wybieram SPI
  109.  
  110.         while(!(SPI1 -> SR & (1<<1)));//czeka az txe bedzie =1
  111.         SPI1 -> DR = (1<<7) | addr; //wysyla adres rejestru + komende read
  112.  
  113.         while(!(SPI1 -> SR & (1<<0)));// czeka az rxne bedzie pelne, czyli sa jakies dane do odczytania
  114.         SPI1 -> DR; //zerowanie bufora odbiorczego
  115.  
  116.         while(!(SPI1 -> SR & (1<<1)));
  117.         SPI1 -> DR = 0xff;  //wysylamy nastepna ramke, smieci, by odpowiedzial na wczesniejsze pytanie
  118.  
  119.         while(!(SPI1 -> SR & (1<<0)));
  120.         luka = (char)(SPI1 -> DR);
  121.  
  122.  
  123.  
  124.         GPIOE -> ODR |= (1<<3); //PE3 ustawiam na 1 dzieki temu wylaczam modul                                                
  125.        
  126.       return luka;
  127. }
  128.         void spiwrite(char rej,char war)
  129.         {
  130.                
  131.             char lukaa;
  132.        GPIOE -> ODR &=~ (1<<3); //PE3 ustawiam na 0 dzieki temu wybieram SPI
  133.  
  134.         while(!(SPI1 -> SR & (1<<1)));//czeka az txe bedzie =1
  135.         SPI1 -> DR = (0<<7) | rej;  //wysyla adres rejestru + komende write
  136.  
  137.         while(!(SPI1 -> SR & (1<<0)));// czeka az rxne bedzie pelne, czyli sa jakies dane do odczytania
  138.         SPI1 -> DR; //zerowanie bufora odbiorczego
  139.  
  140.         while(!(SPI1 -> SR & (1<<1)));
  141.         SPI1 -> DR = war;   //wysylamy nastepna ramke, smieci, by odpowiedzial na wczesniejsze pytanie
  142.  
  143.         while(!(SPI1 -> SR & (1<<0)));
  144.         lukaa = (char)(SPI1 -> DR);
  145.        
  146.                  GPIOE -> ODR |= (1<<3); //PE3 ustawiam na 1 dzieki temu wylaczam modul                                                
  147.        
  148.       }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top