@@ -0,0 +1,13 | |||
|
1 | TEMPLATE = app | |
|
2 | CONFIG += cpu | |
|
3 | ||
|
4 | ||
|
5 | UCMODEL=stm32f4 | |
|
6 | ||
|
7 | BSP = STM32F4Eval | |
|
8 | ||
|
9 | DEFINES += CPUFREQ=160000000 | |
|
10 | ||
|
11 | SOURCES += \ | |
|
12 | main.c | |
|
13 |
@@ -0,0 +1,72 | |||
|
1 | #include <stdio.h> | |
|
2 | #include <fat32.h> | |
|
3 | #include <gpio.h> | |
|
4 | #include <uart.h> | |
|
5 | #include <stm32f4xx.h> | |
|
6 | #include <math.h> | |
|
7 | #include <bsp.h> | |
|
8 | #include <i2c.h> | |
|
9 | #include <CS43L22.h> | |
|
10 | #include <ina226.h> | |
|
11 | #include <fonts.h> | |
|
12 | #include <stdlib.h> | |
|
13 | #include <core.h> | |
|
14 | #include <terminal.h> | |
|
15 | ||
|
16 | extern streamdevice* __opnfiles__[__MAX_OPENED_FILES__]; | |
|
17 | ||
|
18 | #define LCD_COLOR_WHITE 0xFFFF | |
|
19 | #define LCD_COLOR_BLACK 0x0000 | |
|
20 | #define LCD_COLOR_GREY 0xF7DE | |
|
21 | #define LCD_COLOR_BLUE 0x001F | |
|
22 | #define LCD_COLOR_BLUE2 0x051F | |
|
23 | #define LCD_COLOR_RED 0xF800 | |
|
24 | #define LCD_COLOR_MAGENTA 0xF81F | |
|
25 | #define LCD_COLOR_GREEN 0x07E0 | |
|
26 | #define LCD_COLOR_CYAN 0x7FFF | |
|
27 | #define LCD_COLOR_YELLOW 0xFFE0 | |
|
28 | ||
|
29 | extern int __lineCount__; | |
|
30 | extern int __columnCount__; | |
|
31 | ||
|
32 | int main() | |
|
33 | { | |
|
34 | uint16_t innerbuffer[16]; | |
|
35 | uint16_t outterbuffer[16]; | |
|
36 | for(int i=0;i<16;i++)innerbuffer[i]=LCD_COLOR_BLUE; | |
|
37 | for(int i=0;i<16;i++)outterbuffer[i]=LCD_COLOR_RED; | |
|
38 | ili9328paintFilRect(&lcd0,0,0,240,320,LCD_COLOR_CYAN,5,LCD_COLOR_BLACK); | |
|
39 | ||
|
40 | streamdevice* terminal=__opnfiles__[1]; | |
|
41 | terminal_init(&lcd0,&ComicSansMS_18,terminal); | |
|
42 | //terminal->write(terminal,"Hi",1, 2); | |
|
43 | //lcd0.paintText(&lcd0,"Hello",10,50,&ComicSansMS_18,0xFF00); | |
|
44 | // __opnfiles__[1]=terminal; | |
|
45 | //__opnfiles__[0]=terminal; | |
|
46 | int i=1; | |
|
47 | //printf("hello World %d",i); | |
|
48 | ||
|
49 | printf("Line cnt :\n \t%d\n",__lineCount__); | |
|
50 | printf("Column cnt :\n \t%d\n",__columnCount__); | |
|
51 | printf("CPU Freq :\n \t%dMHz\n",getCpuFreq()/1000000); | |
|
52 | while(1) | |
|
53 | { | |
|
54 | i%=1000; | |
|
55 | //terminal->write(&terminal," Hi",1, 2); | |
|
56 | //delay_100us(1000); | |
|
57 | gpioset(LED1); | |
|
58 | //delay_100us(1000); | |
|
59 | gpioclr(LED1); | |
|
60 | } | |
|
61 | printf("hello world\n\r"); | |
|
62 | return 0; | |
|
63 | } | |
|
64 | ||
|
65 | ||
|
66 | ||
|
67 | ||
|
68 | ||
|
69 | ||
|
70 | ||
|
71 | ||
|
72 |
@@ -0,0 +1,121 | |||
|
1 | /*------------------------------------------------------------------------------ | |
|
2 | -- This file is a part of the libuc, microcontroler library | |
|
3 | -- Copyright (C) 2012, Alexis Jeandet | |
|
4 | -- | |
|
5 | -- This program is free software; you can redistribute it and/or modify | |
|
6 | -- it under the terms of the GNU General Public License as published by | |
|
7 | -- the Free Software Foundation; either version 3 of the License, or | |
|
8 | -- (at your option) any later version. | |
|
9 | -- | |
|
10 | -- This program is distributed in the hope that it will be useful, | |
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
13 | -- GNU General Public License for more details. | |
|
14 | -- | |
|
15 | -- You should have received a copy of the GNU General Public License | |
|
16 | -- along with this program; if not, write to the Free Software | |
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
|
18 | ------------------------------------------------------------------------------- | |
|
19 | -- Author : Alexis Jeandet | |
|
20 | -- Mail : alexis.jeandet@gmail.com | |
|
21 | -------------------------------------------------------------------------------*/ | |
|
22 | ||
|
23 | #include <i2c.h> | |
|
24 | #include <stm32f4xx_usart.h> | |
|
25 | #include <stm32f4xx_rcc.h> | |
|
26 | #include <stm32f4xx_gpio.h> | |
|
27 | #include <stm32f4xx_sdio.h> | |
|
28 | #include <gpio.h> | |
|
29 | #include <core.h> | |
|
30 | #include <sdcard.h> | |
|
31 | #include <sdcard-sdio.h> | |
|
32 | ||
|
33 | void sdcardsdiomake(sdcardDev* sdcard,UHANDLE phy,void (*rcvr_mmc) (UHANDLE,char *,uint32_t ),void (*xmit_mmc) (UHANDLE,const char *,uint32_t ),void (*setspeed) (UHANDLE phy,uint32_t speed),uint32_t (*getspeed) (UHANDLE phy)) | |
|
34 | { | |
|
35 | sdcard->phy = phy; | |
|
36 | sdcard->rcvr_mmc = rcvr_mmc; | |
|
37 | sdcard->xmit_mmc = xmit_mmc; | |
|
38 | sdcard->setspeed = setspeed; | |
|
39 | sdcard->getspeed = getspeed; | |
|
40 | } | |
|
41 | ||
|
42 | void sdcardsdiomakeblkdev(blkdevice* dev,sdcardDev* sdcard, blkdevselect_t select,blkdevpower_t power,blkdevdetect_t detect,blkdevwriteprotected_t writeprotected) | |
|
43 | { | |
|
44 | dev->phy=sdcard; | |
|
45 | dev->select=select; | |
|
46 | dev->power = power; | |
|
47 | dev->detect = detect; | |
|
48 | dev->writeprotected = writeprotected; | |
|
49 | /*dev->write = sdcarddisk_write; | |
|
50 | dev->read = sdcarddisk_read; | |
|
51 | dev->ioctl = sdcarddisk_ioctl; | |
|
52 | dev->initialize = sdcarddisk_initialize; | |
|
53 | dev->status = sdcarddisk_status;*/ | |
|
54 | } | |
|
55 | ||
|
56 | int sdcardselect (blkdeviceptr _this) | |
|
57 | { | |
|
58 | ||
|
59 | } | |
|
60 | ||
|
61 | void sdcarddeselect (blkdeviceptr _this) | |
|
62 | { | |
|
63 | ||
|
64 | } | |
|
65 | ||
|
66 | int sdcardwait_ready (sdcardDev* sdcard) | |
|
67 | { | |
|
68 | ||
|
69 | } | |
|
70 | ||
|
71 | int sdcardxmit_datablock (sdcardDev* sdcard,const char *buff,char token) | |
|
72 | { | |
|
73 | ||
|
74 | } | |
|
75 | ||
|
76 | int sdcardrcvr_datablock (sdcardDev* sdcard,char *buff,uint32_t btr) | |
|
77 | { | |
|
78 | ||
|
79 | } | |
|
80 | ||
|
81 | char sdcardsend_cmd (blkdeviceptr _this,char cmd,uint32_t arg) | |
|
82 | { | |
|
83 | ||
|
84 | } | |
|
85 | ||
|
86 | DSTATUS sdcarddisk_status (blkdeviceptr _this) | |
|
87 | { | |
|
88 | return RES_OK; | |
|
89 | } | |
|
90 | ||
|
91 | DSTATUS sdcarddisk_initialize (blkdeviceptr _this) | |
|
92 | { | |
|
93 | return RES_OK; | |
|
94 | } | |
|
95 | ||
|
96 | DRESULT sdcarddisk_read (blkdeviceptr _this,char *buff,uint32_t sector,char count) | |
|
97 | { | |
|
98 | return RES_OK; | |
|
99 | } | |
|
100 | ||
|
101 | DRESULT sdcarddisk_write (blkdeviceptr _this,const char *buff,uint32_t sector,char count) | |
|
102 | { | |
|
103 | ||
|
104 | } | |
|
105 | ||
|
106 | DRESULT sdcarddisk_ioctl (blkdeviceptr _this,char ctrl,void *buff) | |
|
107 | { | |
|
108 | return RES_OK; | |
|
109 | } | |
|
110 | ||
|
111 | ||
|
112 | ||
|
113 | ||
|
114 | ||
|
115 | ||
|
116 | ||
|
117 | ||
|
118 | ||
|
119 | ||
|
120 | ||
|
121 |
@@ -0,0 +1,16 | |||
|
1 | TEMPLATE = lib | |
|
2 | OBJECTS_DIR = obj | |
|
3 | ||
|
4 | SOURCES += sdcard-sdio.c | |
|
5 | ||
|
6 | INCLUDEPATH += ../../includes \ | |
|
7 | ../CPU/STM32F4xx_StdPeriph_Driver/inc \ | |
|
8 | ../CPU/CMSIS/Include | |
|
9 | ||
|
10 | ||
|
11 | UCMODEL=stm32f4 | |
|
12 | ||
|
13 | target.path = $$[QT_INSTALL_LIBS]/$$UCMODEL | |
|
14 | INSTALLS += target | |
|
15 | ||
|
16 |
@@ -6,7 +6,8 SUBDIRS += QtTest/test.pro \ | |||
|
6 | 6 | STM32F4IT \ |
|
7 | 7 | M4StickV2 \ |
|
8 | 8 | lcdHello \ |
|
9 | BeagleSynthHello | |
|
9 | BeagleSynthHello \ | |
|
10 | lcdTerminal | |
|
10 | 11 | |
|
11 | 12 | |
|
12 | 13 |
@@ -11,7 +11,7 | |||
|
11 | 11 | #include <fonts.h> |
|
12 | 12 | #include <stdlib.h> |
|
13 | 13 | #include <core.h> |
|
14 | ||
|
14 | #include <terminal.h> | |
|
15 | 15 | |
|
16 | 16 | extern streamdevice* __opnfiles__[]; |
|
17 | 17 | |
@@ -69,6 +69,7 int main() | |||
|
69 | 69 | ili9328paintFilCirc(&lcd0,100,150,40,LCD_COLOR_RED,5,LCD_COLOR_BLUE); |
|
70 | 70 | ili9328paintFilCirc(&lcd0,120,160,120,LCD_COLOR_RED,1,LCD_COLOR_BLUE); |
|
71 | 71 | //ili9328paintFilCirc(&lcd0,150,240,80,LCD_COLOR_RED,2,LCD_COLOR_BLUE); |
|
72 | monkDemo(); | |
|
72 | 73 | while(1) |
|
73 | 74 | { |
|
74 | 75 | delay_100us(5000); |
@@ -0,0 +1,144 | |||
|
1 | /*------------------------------------------------------------------------------ | |
|
2 | -- This file is a part of the libuc, microcontroler library | |
|
3 | -- Copyright (C) 2013, Alexis Jeandet | |
|
4 | -- | |
|
5 | -- This program is free software; you can redistribute it and/or modify | |
|
6 | -- it under the terms of the GNU General Public License as published by | |
|
7 | -- the Free Software Foundation; either version 3 of the License, or | |
|
8 | -- (at your option) any later version. | |
|
9 | -- | |
|
10 | -- This program is distributed in the hope that it will be useful, | |
|
11 | -- but WITHOUT ANY WARRANTY; without even the implied warranty of | |
|
12 | -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
|
13 | -- GNU General Public License for more details. | |
|
14 | -- | |
|
15 | -- You should have received a copy of the GNU General Public License | |
|
16 | -- along with this program; if not, write to the Free Software | |
|
17 | -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | |
|
18 | ------------------------------------------------------------------------------- | |
|
19 | -- Author : Alexis Jeandet | |
|
20 | -- Mail : alexis.jeandet@gmail.com | |
|
21 | -------------------------------------------------------------------------------*/ | |
|
22 | #include <widget.h> | |
|
23 | #include <terminal.h> | |
|
24 | #include <stdint.h> | |
|
25 | #include <stdio.h> | |
|
26 | #include <gpio.h> | |
|
27 | #include <core.h> | |
|
28 | ||
|
29 | int __line__ =0; | |
|
30 | int __column__=0; | |
|
31 | int __lineCount__=0; | |
|
32 | int __columnCount__=0; | |
|
33 | LCD_t* __LCD__=NULL; | |
|
34 | ||
|
35 | sFONT* __font__; | |
|
36 | ||
|
37 | int __verticalSpace__=2; | |
|
38 | int __horizontalSpace__=0; | |
|
39 | int __verticalMargins__=5; | |
|
40 | int __horizontalMargins__=5; | |
|
41 | ||
|
42 | #define CHARXPOS(charwidth) ((__column__*charwidth)+__horizontalMargins__) | |
|
43 | #define CHARYPOS(charheight) ((__line__*charheight)+__verticalMargins__+charheight) | |
|
44 | ||
|
45 | #define charwidth (__font__->Width+__horizontalSpace__) | |
|
46 | #define charheight (__font__->Height+__verticalSpace__) | |
|
47 | ||
|
48 | int terminal_init(LCD_t* LCD,sFONT* font,streamdevice* strdev) | |
|
49 | { | |
|
50 | if((LCD!=NULL) && (font!=NULL) && (strdev!=NULL)) | |
|
51 | { | |
|
52 | __LCD__=LCD; | |
|
53 | __font__=font; | |
|
54 | __lineCount__ = (LCD->height - (__verticalMargins__*2))/charheight; | |
|
55 | __columnCount__ = ((LCD->width - (__horizontalMargins__*2))/charwidth)-1; | |
|
56 | ||
|
57 | strdev->_stream = (UHANDLE)__LCD__; | |
|
58 | strdev->write = (write_t)&terminal_write; | |
|
59 | strdev->read = (read_t)&terminal_read; | |
|
60 | strdev->setpos = (setpos_t)&terminal_setpos; | |
|
61 | strdev->streamPt = 0; | |
|
62 | __line__ = 0; | |
|
63 | __column__ = 0; | |
|
64 | __LCD__->paintFilRect(__LCD__,CHARXPOS(charwidth),CHARYPOS(charheight)-charheight,charwidth,charheight,0x0000,0,0x0000); | |
|
65 | return 1; | |
|
66 | } | |
|
67 | return 0; | |
|
68 | } | |
|
69 | ||
|
70 | void terminal_movecursor(int n) | |
|
71 | { | |
|
72 | __column__ += n; | |
|
73 | if(__column__>__columnCount__) | |
|
74 | { | |
|
75 | __line__ += (__column__)/__columnCount__; | |
|
76 | __LCD__->paintFilRect(__LCD__,CHARXPOS(charwidth),CHARYPOS(charheight)-charheight,charwidth*(__columnCount__-__column__),charheight,0x0000,0,0x0000); | |
|
77 | __line__ = __line__ % __lineCount__; | |
|
78 | __column__ = __column__ % __columnCount__; | |
|
79 | } | |
|
80 | __LCD__->paintFilRect(__LCD__,CHARXPOS(charwidth),CHARYPOS(charheight)-charheight,charwidth,charheight,0x0000,0,0x0000); | |
|
81 | ||
|
82 | } | |
|
83 | ||
|
84 | int terminal_writenc(char* data, int n) | |
|
85 | { | |
|
86 | int l=0; | |
|
87 | char buffer[2]=" "; | |
|
88 | while(l<n) | |
|
89 | { | |
|
90 | ||
|
91 | buffer[0]=data[l]; | |
|
92 | if(buffer[0]=='\n') | |
|
93 | { | |
|
94 | __line__= (__line__+1) % __lineCount__; | |
|
95 | __column__ = 0; | |
|
96 | }else { | |
|
97 | if(buffer[0]=='\t') | |
|
98 | { | |
|
99 | __line__ += (__column__+3) / __columnCount__; | |
|
100 | __column__= (__column__+3) % __columnCount__; | |
|
101 | }else { | |
|
102 | __LCD__->paintFilRect(__LCD__,CHARXPOS(charwidth),CHARYPOS(charheight)-charheight,charwidth,charheight,0x0000,0,0x0000); | |
|
103 | __LCD__->paintText(__LCD__,buffer,CHARXPOS(charwidth),CHARYPOS(charheight),__font__,0xFFFF); | |
|
104 | terminal_movecursor(1); | |
|
105 | } | |
|
106 | } | |
|
107 | l++; | |
|
108 | } | |
|
109 | return n; | |
|
110 | } | |
|
111 | ||
|
112 | int terminal_write(streamdeviceptr device,void* data,int size, int n) | |
|
113 | { | |
|
114 | return terminal_writenc((char*) data,size*n); | |
|
115 | } | |
|
116 | ||
|
117 | int terminal_read(streamdeviceptr device,void* data,int size, int n) | |
|
118 | { | |
|
119 | return n*size; | |
|
120 | } | |
|
121 | ||
|
122 | int terminal_setpos(streamdeviceptr device,int pos) | |
|
123 | { | |
|
124 | return 1; | |
|
125 | } | |
|
126 | ||
|
127 | int terminal_close(streamdeviceptr device) | |
|
128 | { | |
|
129 | return 1; | |
|
130 | } | |
|
131 | ||
|
132 | ||
|
133 | ||
|
134 | ||
|
135 | ||
|
136 | ||
|
137 | ||
|
138 | ||
|
139 | ||
|
140 | ||
|
141 | ||
|
142 | ||
|
143 | ||
|
144 |
@@ -21,6 +21,25 | |||
|
21 | 21 | -------------------------------------------------------------------------------*/ |
|
22 | 22 | #ifndef TERMINAL_H |
|
23 | 23 | #define TERMINAL_H |
|
24 | #include <stdint.h> | |
|
24 | 25 | #include <widget.h> |
|
26 | #include <streamdevices.h> | |
|
27 | #include <genericLCD_Controler.h> | |
|
28 | #include <fonts.h> | |
|
29 | ||
|
30 | int terminal_init(LCD_t* LCD,sFONT* font,streamdevice* strdev); | |
|
31 | void terminal_movecursor(int n); | |
|
32 | int terminal_write(streamdeviceptr device,void* data,int size, int n); | |
|
33 | int terminal_read(streamdeviceptr device,void* data,int size, int n); | |
|
34 | int terminal_setpos(streamdeviceptr device,int pos); | |
|
35 | int terminal_close(streamdeviceptr device); | |
|
36 | ||
|
37 | ||
|
38 | ||
|
39 | ||
|
40 | ||
|
41 | ||
|
42 | ||
|
43 | ||
|
25 | 44 | |
|
26 | 45 | #endif |
General Comments 0
You need to be logged in to leave comments.
Login now