Demo of low res colour vga video for stm32f3 discovery board
Dependencies: STM32F3-Discovery-minimal
Fork of Space_Invaders_Demo by
bounce.c@3:93e488fbb8a2, 2018-05-16 (annotated)
- 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?
User | Revision | Line number | New 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 | } |