unkwntech

Untitled

Apr 1st, 2013
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.68 KB | None | 0 0
  1. #include "intrinsics.h"
  2. #include "iostm8s103f3.h"
  3. #include "types.h"
  4.  
  5. uint8 matrix[8];
  6.  
  7. #define CS PE_ODR_ODR5
  8. #define CS_PIN 1 << 5
  9. void sleep(uint32 count)
  10. {
  11.   while(count)
  12.   {
  13.     asm("nop");
  14.     count--;
  15.   }
  16. }
  17.  
  18. void InitGPIO()
  19. {
  20.   PB_DDR = 0xFF;
  21.   PB_CR1 = 0xFF;
  22.   PB_CR2 = 0xFF;
  23.   //PB_ODR = 0x00;
  24.  
  25.   PE_DDR = 0xFF;
  26.   PE_CR1 = 0xFF;
  27.   PE_CR2 = 0xFF;
  28. }
  29.  
  30. void Blinker(uint8 x, uint8 y)
  31. {
  32.   matrix[x++] = (2 << y);
  33.   matrix[x++] = (2 << y);
  34.   matrix[x] = (2 << y);
  35. }
  36.  
  37. void SetupSPI()
  38. {
  39.   SPI_CR1_BR = 1; //Baude Rate to clock/2
  40.  
  41.   SPI_CR1_CPOL = 0; //Clock Idle LOW
  42.   SPI_CR1_CPHA = 0; //First Clock Edge is data
  43.  
  44.   SPI_CR1_MSTR = 1; //SPI Master Enabled
  45.   SPI_CR1_SPE = 1; //Enable SPI
  46.  
  47.   SPI_CR2 = 0x01;
  48.  
  49.   //Setup CS Pin
  50.   PE_DDR |= CS_PIN;
  51.   PE_CR1 |= CS_PIN;
  52.   PE_CR2 |= CS_PIN;
  53.   PE_ODR &= ~CS_PIN;
  54.  
  55. }
  56.  
  57.  
  58. void TransmitSPI(uint8 data[], uint8 count)
  59. {
  60.   CS = 0;
  61.    
  62.   for(uint8 i = 0; i < count; i++)
  63.   {
  64.     SPI_DR = data[i];
  65.     //Wait until the buffer is clear
  66.     while(SPI_SR_TXE == 0);
  67.   }
  68.  
  69.   //Wait until transmition is complete
  70.   while(SPI_SR_BSY == 1);
  71.  
  72.   CS = 1;
  73. }
  74.  
  75. void main( void )
  76. {
  77.   CLK_CKDIVR = 0x00;
  78.  
  79.   SetupSPI();
  80.  
  81.   CS = 1;
  82.   sleep(1000);
  83.  
  84.   uint8 data[4];
  85.   data[0] = 0x00;
  86.   data[1] = 0x00;
  87.   data[2] = 0xFF;
  88.   data[3] = 0xFF;
  89.  
  90.   TransmitSPI(data, 4);
  91.  
  92.   while(TRUE)
  93.   {
  94.     data[0] = ~0xAA;
  95.     data[1] = ~0xAA;
  96.     data[2] = 0xAA;
  97.     data[3] = 0xAA;
  98.     TransmitSPI(data, 4);
  99.     sleep(100000);
  100.    
  101.     data[0] = 0xAA;
  102.     data[1] = 0xAA;
  103.     data[2] = ~0xAA;
  104.     data[3] = ~0xAA;
  105.     TransmitSPI(data, 4);
  106.     sleep(100000);
  107.   }
  108.  
  109.   while(TRUE);
  110. }
Advertisement
Add Comment
Please, Sign In to add comment