Demo of low res colour vga video for stm32f3 discovery board

Dependencies:   STM32F3-Discovery-minimal

Fork of Space_Invaders_Demo by Martin Johnson

Committer:
MartinJohnson
Date:
Wed May 16 02:39:14 2018 +0000
Revision:
3:93e488fbb8a2
Child:
7:513afc954d6e
Child:
14:3035b3271395
working colour video output

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MartinJohnson 3:93e488fbb8a2 1 #include "stm32f30x.h"
MartinJohnson 3:93e488fbb8a2 2 #include "sys.h"
MartinJohnson 3:93e488fbb8a2 3 #include "video.h"
MartinJohnson 3:93e488fbb8a2 4 #include "gdi.h"
MartinJohnson 3:93e488fbb8a2 5 #include <string.h>
MartinJohnson 3:93e488fbb8a2 6 #include <stdio.h>
MartinJohnson 3:93e488fbb8a2 7
MartinJohnson 3:93e488fbb8a2 8 int ballx=100,bally=100;
MartinJohnson 3:93e488fbb8a2 9 int ballvx=10,ballvy=8;
MartinJohnson 3:93e488fbb8a2 10 int px=400;
MartinJohnson 3:93e488fbb8a2 11
MartinJohnson 3:93e488fbb8a2 12 void bounce() {
MartinJohnson 3:93e488fbb8a2 13 int16_t accel[3];
MartinJohnson 3:93e488fbb8a2 14 MemsConfig();
MartinJohnson 3:93e488fbb8a2 15 vidClearScreen();
MartinJohnson 3:93e488fbb8a2 16 gdiSetColour(3);
MartinJohnson 3:93e488fbb8a2 17 gdiRectangle(0,0,(VID_HSIZE - 1),VID_VSIZE - 1,0);
MartinJohnson 3:93e488fbb8a2 18 int count=0;
MartinJohnson 3:93e488fbb8a2 19 int maxcount=0;
MartinJohnson 3:93e488fbb8a2 20 char string[16];
MartinJohnson 3:93e488fbb8a2 21 while(1) {
MartinJohnson 3:93e488fbb8a2 22 gdiSetColour(3);
MartinJohnson 3:93e488fbb8a2 23 gdiRectangle(0,0,(VID_HSIZE - 1),VID_VSIZE - 1,0);
MartinJohnson 3:93e488fbb8a2 24 gdiSetColour(2);
MartinJohnson 3:93e488fbb8a2 25 gdiCircle(ballx/16,bally/16,4,0);
MartinJohnson 3:93e488fbb8a2 26 gdiSetColour(7);
MartinJohnson 3:93e488fbb8a2 27 gdiCircle(ballx/16,bally/16,3,0);
MartinJohnson 3:93e488fbb8a2 28 gdiCircle(ballx/16,bally/16,2,0);
MartinJohnson 3:93e488fbb8a2 29 gdiCircle(ballx/16,bally/16,1,0);
MartinJohnson 3:93e488fbb8a2 30
MartinJohnson 3:93e488fbb8a2 31 gdiSetColour(4);
MartinJohnson 3:93e488fbb8a2 32 gdiRectangle(px-8,VID_VSIZE-5,px+7,VID_VSIZE-2,0);
MartinJohnson 3:93e488fbb8a2 33 gdiRectangle(px-8,VID_VSIZE-4,px+7,VID_VSIZE-3,0);
MartinJohnson 3:93e488fbb8a2 34 gdiSetColour(7);
MartinJohnson 3:93e488fbb8a2 35 sprintf(string,"COUNT=%d",count);
MartinJohnson 3:93e488fbb8a2 36 gdiDrawTextEx(4,4,(pu8)string,0);
MartinJohnson 3:93e488fbb8a2 37 sprintf(string,"HIGH=%d",maxcount);
MartinJohnson 3:93e488fbb8a2 38 gdiDrawTextEx(VID_HSIZE-6*strlen(string)-4,4,(pu8)string,0);
MartinJohnson 3:93e488fbb8a2 39
MartinJohnson 3:93e488fbb8a2 40 // sysDelayMs(5);
MartinJohnson 3:93e488fbb8a2 41 waitForRefresh();
MartinJohnson 3:93e488fbb8a2 42 vidNextBuffer();
MartinJohnson 3:93e488fbb8a2 43 ReadAccelerometer( accel );
MartinJohnson 3:93e488fbb8a2 44
MartinJohnson 3:93e488fbb8a2 45 px=VID_HSIZE/2+accel[1]/100;
MartinJohnson 3:93e488fbb8a2 46 if(px<9) px=9;
MartinJohnson 3:93e488fbb8a2 47 if(px>VID_HSIZE-9) px=VID_HSIZE-9;
MartinJohnson 3:93e488fbb8a2 48 ballx+=ballvx;
MartinJohnson 3:93e488fbb8a2 49 bally+=ballvy;
MartinJohnson 3:93e488fbb8a2 50 if(ballx/16>VID_HSIZE - 6 || ballx<80) {
MartinJohnson 3:93e488fbb8a2 51 ballvx=-ballvx;
MartinJohnson 3:93e488fbb8a2 52 ballx+=ballvx;
MartinJohnson 3:93e488fbb8a2 53 }
MartinJohnson 3:93e488fbb8a2 54 if(bally<80) {
MartinJohnson 3:93e488fbb8a2 55 ballvy=-ballvy;
MartinJohnson 3:93e488fbb8a2 56 bally+=ballvy;
MartinJohnson 3:93e488fbb8a2 57 }
MartinJohnson 3:93e488fbb8a2 58 if(bally/16>VID_VSIZE - 6) {
MartinJohnson 3:93e488fbb8a2 59 if(ballx/16>px-12&&ballx/16<px+12) {
MartinJohnson 3:93e488fbb8a2 60 ballvy=-ballvy-1;
MartinJohnson 3:93e488fbb8a2 61 bally+=ballvy;
MartinJohnson 3:93e488fbb8a2 62 ballvx=ballvx+ballx/16-px;
MartinJohnson 3:93e488fbb8a2 63 count++;
MartinJohnson 3:93e488fbb8a2 64 if(count>maxcount)
MartinJohnson 3:93e488fbb8a2 65 maxcount=count;
MartinJohnson 3:93e488fbb8a2 66 }
MartinJohnson 3:93e488fbb8a2 67 else {
MartinJohnson 3:93e488fbb8a2 68 bally=100;
MartinJohnson 3:93e488fbb8a2 69 ballvy=10;
MartinJohnson 3:93e488fbb8a2 70 count=0;
MartinJohnson 3:93e488fbb8a2 71 }
MartinJohnson 3:93e488fbb8a2 72 }
MartinJohnson 3:93e488fbb8a2 73 ballvy=ballvy+1;
MartinJohnson 3:93e488fbb8a2 74
MartinJohnson 3:93e488fbb8a2 75 }
MartinJohnson 3:93e488fbb8a2 76
MartinJohnson 3:93e488fbb8a2 77 }