Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "intrinsics.h"
- #include "iostm8s103f3.h"
- #include "types.h"
- uint8 matrix[8];
- #define CS PE_ODR_ODR5
- #define CS_PIN 1 << 5
- void sleep(uint32 count)
- {
- while(count)
- {
- asm("nop");
- count--;
- }
- }
- void InitGPIO()
- {
- PB_DDR = 0xFF;
- PB_CR1 = 0xFF;
- PB_CR2 = 0xFF;
- //PB_ODR = 0x00;
- PE_DDR = 0xFF;
- PE_CR1 = 0xFF;
- PE_CR2 = 0xFF;
- }
- void Blinker(uint8 x, uint8 y)
- {
- matrix[x++] = (2 << y);
- matrix[x++] = (2 << y);
- matrix[x] = (2 << y);
- }
- void SetupSPI()
- {
- SPI_CR1_BR = 1; //Baude Rate to clock/2
- SPI_CR1_CPOL = 0; //Clock Idle LOW
- SPI_CR1_CPHA = 0; //First Clock Edge is data
- SPI_CR1_MSTR = 1; //SPI Master Enabled
- SPI_CR1_SPE = 1; //Enable SPI
- SPI_CR2 = 0x01;
- //Setup CS Pin
- PE_DDR |= CS_PIN;
- PE_CR1 |= CS_PIN;
- PE_CR2 |= CS_PIN;
- PE_ODR &= ~CS_PIN;
- }
- void TransmitSPI(uint8 data[], uint8 count)
- {
- CS = 0;
- for(uint8 i = 0; i < count; i++)
- {
- SPI_DR = data[i];
- //Wait until the buffer is clear
- while(SPI_SR_TXE == 0);
- }
- //Wait until transmition is complete
- while(SPI_SR_BSY == 1);
- CS = 1;
- }
- void main( void )
- {
- CLK_CKDIVR = 0x00;
- SetupSPI();
- CS = 1;
- sleep(1000);
- uint8 data[4];
- data[0] = 0x00;
- data[1] = 0x00;
- data[2] = 0xFF;
- data[3] = 0xFF;
- TransmitSPI(data, 4);
- while(TRUE)
- {
- data[0] = ~0xAA;
- data[1] = ~0xAA;
- data[2] = 0xAA;
- data[3] = 0xAA;
- TransmitSPI(data, 4);
- sleep(100000);
- data[0] = 0xAA;
- data[1] = 0xAA;
- data[2] = ~0xAA;
- data[3] = ~0xAA;
- TransmitSPI(data, 4);
- sleep(100000);
- }
- while(TRUE);
- }
Advertisement
Add Comment
Please, Sign In to add comment