Commit 0e00ed59d8ded63d236710504fba7d82d055077d

Authored by NightIsDark
1 parent feb212ec

modfly the driver

IAP/iap.c
1 #include "iap.h" 1 #include "iap.h"
2 #include "usart.h" 2 #include "usart.h"
3 -#include "timer.h"  
4 #include "crc.h" 3 #include "crc.h"
5 #include "flash.h" 4 #include "flash.h"
6 #include "delay.h" 5 #include "delay.h"
7 - 6 +#include "usart1.h"
  7 +#include "uart5.h"
8 8
9 iapfun jump2app; 9 iapfun jump2app;
10 10
@@ -57,17 +57,17 @@ void Local_Update(void) @@ -57,17 +57,17 @@ void Local_Update(void)
57 uint16_t crc = 0xFFFF; 57 uint16_t crc = 0xFFFF;
58 uint32_t handle; 58 uint32_t handle;
59 59
60 - Tick_Delay_ms(70); 60 + delay_ms(70);
61 Uart5_Send(Manual_Line,sizeof(Manual_Line)); 61 Uart5_Send(Manual_Line,sizeof(Manual_Line));
62 - Tick_Delay_ms(70); 62 + delay_ms(70);
63 Uart5_Send(Manual_Labal,sizeof(Manual_Labal)); 63 Uart5_Send(Manual_Labal,sizeof(Manual_Labal));
64 - Tick_Delay_ms(70); 64 + delay_ms(70);
65 Uart5_Send(Manual_Start,sizeof(Manual_Start)); 65 Uart5_Send(Manual_Start,sizeof(Manual_Start));
66 - Tick_Delay_ms(70); 66 + delay_ms(70);
67 Uart5_Send(Manual_Ack,sizeof(Manual_Ack)); 67 Uart5_Send(Manual_Ack,sizeof(Manual_Ack));
68 - Tick_Delay_ms(70); 68 + delay_ms(70);
69 Uart5_Send(Manual_Cancel,sizeof(Manual_Cancel)); 69 Uart5_Send(Manual_Cancel,sizeof(Manual_Cancel));
70 - Tick_Delay_ms(70); 70 + delay_ms(70);
71 Uart5_Send(Manual_Line,sizeof(Manual_Line)); 71 Uart5_Send(Manual_Line,sizeof(Manual_Line));
72 72
73 73
@@ -140,7 +140,7 @@ void Detection_Update(void) @@ -140,7 +140,7 @@ void Detection_Update(void)
140 140
141 for(i=0;i<WAIT_TIME;i++) 141 for(i=0;i<WAIT_TIME;i++)
142 { 142 {
143 - Tick_Delay_ms(1000); 143 + delay_ms(1000);
144 if(UART_FINISH) 144 if(UART_FINISH)
145 { 145 {
146 UART_FINISH= false; 146 UART_FINISH= false;
@@ -154,7 +154,38 @@ void Detection_Update(void) @@ -154,7 +154,38 @@ void Detection_Update(void)
154 } 154 }
155 } 155 }
156 156
  157 +#define VERSION "Bootloader version: MFGW2.0\r\n"
157 158
  159 +uint8_t uart_boot_detect(void)
  160 +{
  161 + uint8_t retry_cnt=0;
  162 + printf(WELCOME);
  163 + printf(VERSION);
  164 + for(retry_cnt=0;retry_cnt<LOCAL_WAITE_TIME;retry_cnt++)
  165 + {
  166 + printf("Run application after %d second(s)...........\r\n",LOCAL_WAITE_TIME-retry_cnt);
  167 + printf("Input any key and Enter to stay in bootloader\r\n");
  168 + delay_ms(1000);
  169 +
  170 + if((u5.rx_status == RX_FINISHED)&&
  171 + ((u5.rx_buf[0]=='b')||(u5.rx_buf[0]=='B'))&&
  172 + (u5.rx_len == 2))
  173 + {
  174 + return LOCAL_BOOT_FROM_UART5;
  175 + }
  176 + else if((u1.rx_status == RX_FINISHED)&&
  177 + ((u1.rx_buf[0]=='b')||(u1.rx_buf[0]=='B'))&&
  178 + (u1.rx_len == 2))
  179 + {
  180 + return LOCAL_BOOT_FROM_USART1;
  181 + }
  182 + else
  183 + {
  184 + // not detected
  185 + }
  186 + }
  187 + return LOCAL_BOOT_NONE;
  188 +}
158 189
159 190
160 191
IAP/iap.h
@@ -12,5 +12,11 @@ void Run_Flash_App(uint32_t appxaddr); //Ìø×ªµ½APP³ÌÐòÖ´ÐÐ @@ -12,5 +12,11 @@ void Run_Flash_App(uint32_t appxaddr); //Ìø×ªµ½APP³ÌÐòÖ´ÐÐ
12 //void Local_Update(void); 12 //void Local_Update(void);
13 void Detection_Update(void); 13 void Detection_Update(void);
14 14
  15 +
  16 +
  17 +#define LOCAL_BOOT_FROM_UART5 2
  18 +#define LOCAL_BOOT_FROM_USART1 1
  19 +#define LOCAL_BOOT_NONE 0
  20 +
15 #endif 21 #endif
16 22
OBJ/IAP.hex deleted
1 -:020000040800F2  
2 -:100000009805002089020008910200089302000868  
3 -:1000100095020008970200089902000800000000FD  
4 -:100020000000000000000000000000009B0200082B  
5 -:100030009D020008000000009F02000891130008C4  
6 -:10004000A3020008A3020008A3020008A3020008FC  
7 -:10005000A3020008A3020008A3020008A3020008EC  
8 -:10006000A3020008A3020008A3020008A3020008DC  
9 -:10007000A3020008A3020008A3020008A3020008CC  
10 -:10008000A3020008A3020008A3020008A3020008BC  
11 -:10009000A3020008A3020008A3020008A3020008AC  
12 -:1000A000A3020008A3020008A3020008A30200089C  
13 -:1000B000A302000861140008A3020008A3020008BC  
14 -:1000C000A3020008A3020008A3020008A30200087C  
15 -:1000D000A3020008B5170008A3020008A302000845  
16 -:1000E000A3020008A3020008A3020008A30200085C  
17 -:1000F000A3020008A3020008A3020008A30200084C  
18 -:10010000A3020008A3020008A3020008A30200083B  
19 -:10011000A302000881160008A3020008A302000839  
20 -:10012000A3020008A3020008A3020008A30200081B  
21 -:10013000A3020008A3020008A3020008A30200080B  
22 -:10014000A3020008A3020008A3020008A3020008FB  
23 -:10015000A3020008A3020008A3020008A3020008EB  
24 -:10016000A3020008A3020008A3020008A3020008DB  
25 -:10017000A3020008A3020008A3020008A3020008CB  
26 -:10018000A3020008A302000800F002F800F064F8DF  
27 -:100190000AA090E8000C82448344AAF10107DA45E2  
28 -:1001A00001D100F059F8AFF2090EBAE80F0013F0D0  
29 -:1001B000010F18BFFB1A43F001031847481C000049  
30 -:1001C000681C00000A444FF0000C10F8013B13F0CB  
31 -:1001D000070408BF10F8014B1D1108BF10F8015BA0  
32 -:1001E000641E05D010F8016B641E01F8016BF9D193  
33 -:1001F00013F0080F1EBF10F8014BAD1C0C1B09D1EA  
34 -:100200006D1E58BF01F801CBFAD505E014F8016B5B  
35 -:1002100001F8016B6D1EF9D59142D6D370470000ED  
36 -:100220000023002400250026103A28BF78C1FBD8FF  
37 -:10023000520728BF30C148BF0B607047642900F0E7  
38 -:100240008380782900F0BC80002070471FB501F042  
39 -:10025000BFFC1FBD10B510BD00F0FEF91146FFF741  
40 -:10026000F5FF01F0BDFB00F01CFA03B4FFF7F2FF4D  
41 -:1002700003BC01F0A5FB000030BF72B6704762B648  
42 -:10028000704780F30888704709488047094800474D  
43 -:10029000FEE7FEE7FEE7FEE7FEE7FEE7FEE7FEE736  
44 -:1002A000FEE7FEE704480549034A054B7047000096  
45 -:1002B000A11300088901000898010020980500207A  
46 -:1002C00098010020704700000FB4044910B503AA3C  
47 -:1002D000029800F06BF910BC5DF814FB00000020E0  
48 -:1002E0002DE9F0410E460446002020622046E168D8  
49 -:1002F000884730B3252805D0D4E901219047206AEA  
50 -:10030000401CF2E7E168204600278847050018D026  
51 -:10031000A5F14100192802D820354FF40067324674  
52 -:10032000294620462760FFF789FF40B1012804D005  
53 -:10033000F61D26F007060836D8E7361DD6E728460C  
54 -:10034000DAE7206ABDE8F0812DE9F0410646002495  
55 -:1003500010687529314616A510D0AFF3008000282B  
56 -:1003600002DA404213A507E031688A0701D512A5D9  
57 -:1003700002E0490704D511A5012401E0AFF3008094  
58 -:1003800000210A2206F1240709E0B0FBF2FCB0FBD1  
59 -:10039000F2F302FB1C00303078541846491C002848  
60 -:1003A000F3D123462A463046BDE8F04100F0A5B817  
61 -:1003B000000000002D0000002B00000020000000C5  
62 -:1003C00070B504460D4621461068AFF300802188C1  
63 -:1003D000090502D50F4A7A4402E00E4A7A440E32E9  
64 -:1003E000002104F1240305E000F00F060009965DEA  
65 -:1003F0005E54491C0028F7D120780023000704D55B  
66 -:10040000702D02D009B1022311322046BDE87040A0  
67 -:1004100000F073B8001A000040EA010370B59B07B2  
68 -:100420002ED14FF00136042A2AD308C810C99D1BCB  
69 -:100430009D43121F15EAC61517D0D8B2E1B2401A73  
70 -:1004400050EA056110D198B2A1B2401A50EA0541B4  
71 -:100450000AD123F07F4024F07F41401A50EA052161  
72 -:1004600002D1180EA0EB146070BDA342DBD018BA05  
73 -:1004700021BA884201D9012070BD4FF0FF3070BD14  
74 -:100480000AB9002070BD10F8013B11F8014B63B1AF  
75 -:10049000A3420AD1521E08D010F8013B11F8014BBB  
76 -:1004A0001BB1A34201D1521EEDD1181B70BD4FF0FC  
77 -:1004B00000020429C0F0128010F0030C00F08A80C2  
78 -:1004C000CCF1040CBCF1020F18BF00F8012BA8BF3F  
79 -:1004D00020F8022BA1EB0C0100F07CB85FEAC17C94  
80 -:1004E00024BF00F8012B00F8012B48BF00F8012BB6  
81 -:1004F000704770477047704770472DE9F0470D46C9  
82 -:1005000099469246044600F124080168880604D5FD  
83 -:10051000E06921F01001216000E00120A84201DD26  
84 -:10052000471B00E00027A1697A1902EB0900081AAD  
85 -:10053000A0612078C00602D42046AFF300800026D8  
86 -:1005400008E0D4E901211AF806009047206A401C0F  
87 -:10055000761C20624E45F4DB2078C0060AD5204682  
88 -:10056000AFF3008006E0D4E9012130209047206AF3  
89 -:10057000401C2062381EA7F10107F4DC07E0D4E933  
90 -:10058000012118F805009047206A401C2062281EAF  
91 -:10059000A5F10105F3DC2046AFF3008020780006CA  
92 -:1005A00002D50220BDE8F0870120FBE7074B70B5BC  
93 -:1005B0000D467B4400F039F80446284600F048F820  
94 -:1005C00010B14FF0FF3070BD204670BD0F14000019  
95 -:1005D0004FF0000200B5134694469646203922BFDC  
96 -:1005E000A0E80C50A0E80C50B1F12001BFF4F7AF27  
97 -:1005F000090728BFA0E80C5048BF0CC05DF804EB09  
98 -:10060000890028BF40F8042B08BF704748BF20F876  
99 -:10061000022B11F0804F18BF00F8012B704700002B  
100 -:1006200001694A1C02610878704700B58FB0CDE9B6  
101 -:1006300001310021059105497944CDE903101146A6  
102 -:100640006846FFF74DFE0FB000BD0000E5FFFFFF5D  
103 -:10065000007B00F080007047754600F02BF8AE4636  
104 -:1006600005006946534620F00700854618B020B5BE  
105 -:10067000FFF718FEBDE820404FF000064FF00007DE  
106 -:100680004FF000084FF0000B21F00701AC46ACE83A  
107 -:10069000C009ACE8C009ACE8C009ACE8C0098D46A7  
108 -:1006A000704710B50446AFF300802046BDE8104007  
109 -:1006B000FFF7DBBD004870473401002010B5044847  
110 -:1006C00001680448FFF7F3FE00200149086010BDEF  
111 -:1006D00004000020000000687FB5684600F008FDB7  
112 -:1006E0004FF47A720098B0FBF2F1481EB0F1807FAF  
113 -:1006F00000D31BE0481E4FF0E022506150170F223C  
114 -:10070000002807DA13071D0E094B00F00F04241F01  
115 -:100710001D5503E013071C0E064B1C5400BF0020A0  
116 -:100720004FF0E02290610720106100BF7FBD000004  
117 -:1007300018ED00E000E400E010B5002418E04FF4EC  
118 -:100740007A7000F011FF0C48007878B100200A4957  
119 -:100750000870072209A10B48FFF75EFE30B915218A  
120 -:10076000094801F009F900F051FB03E0601CC4B234  
121 -:10077000052CE4DB00BF10BD0C00002055504441A7  
122 -:1007800054450000000000681F01002030B10749F7  
123 -:10079000096841F48061054A116005E00349096870  
124 -:1007A00021F48061014A116070470000003C024062  
125 -:1007B00070B504460A460026092502B909E0012A57  
126 -:1007C00001D1160205E0022A01D1160201E04FF420  
127 -:1007D000407600F09FF80546092D28D1154800689D  
128 -:1007E00020F44070134908600846006830430860F0  
129 -:1007F0000846006820F0F80008600846006844F0E9  
130 -:10080000020108430B4908600846006840F4803044  
131 -:10081000086000F07FF805460648006820F00200F6  
132 -:10082000044908600846006820F0F800086028467F  
133 -:1008300070BD0000103C024009201349096801F412  
134 -:100840008031B1F5803F01D101201CE00E490968DB  
135 -:1008500001F0100109B1062015E00B49096801F407  
136 -:10086000807109B102200EE00749096801F0EF012B  
137 -:1008700009B1072007E00449096801F0020109B144  
138 -:10088000082000E0092070470C3C02400348006843  
139 -:1008900040F000400149086070470000103C0240F1  
140 -:1008A00030B502460C46092500F034F80546092DFE  
141 -:1008B00019D10E48006820F440700C4908600846C1  
142 -:1008C000006840F4007008600846006840F00100CD  
143 -:1008D0000860146000F01EF805460448006820F027  
144 -:1008E000010002490860284630BD0000103C02406B  
145 -:1008F0000548006800F0004028B1044802490C395E  
146 -:100900000860034808607047103C024023016745B7  
147 -:10091000AB89EFCD08B509200090FFF78DFF00905F  
148 -:1009200002E0FFF789FF00909DF800000128F8D051  
149 -:100930009DF8000008BD000051B18200A2F1C04244  
150 -:10094000126842F001038200A2F1C042136009E084  
151 -:100950008200A2F1C0421268034B1A408300A3F147  
152 -:10096000C0431A6070470000FEFF0F00D0E901127B  
153 -:100970001143C268114302691143426911438269FC  
154 -:100980001143C2691143026A1143426A1143826AE8  
155 -:100990001143C26A1143026B114302689200A2F133  
156 -:1009A000C0421160816808290BD101688900A1F15A  
157 -:1009B000C041096841F0400201688900A1F1C041CD  
158 -:1009C0000A60416B0968426B526841EA0211426B4E  
159 -:1009D000926841EA0221426B928941EA0241426BEC  
160 -:1009E000128A41EA0251426B127D41EA0261426B76  
161 -:1009F000926911430268521C9200A2F1C042116038  
162 -:100A0000C16AB1F5804F1BD1816B0968826B526856  
163 -:100A100041EA0211826B926841EA0221826B128ADA  
164 -:100A200041EA0251826B127D41EA0261826B926956  
165 -:100A3000114302689200A2F1C042C2F8041107E01B  
166 -:100A40006FF0704201688900A1F1C041C1F8042132  
167 -:100A50007047000000B599B001217A2000F008FB32  
168 -:100A60000121084600F014FB4FF6B37017900220E6  
169 -:100A70008DF8600000208DF8620003208DF8610081  
170 -:100A800001208DF8630017A9964800F033F94FF65E  
171 -:100A90008370179002208DF8600000208DF86200AE  
172 -:100AA00003208DF8610001208DF8630017A98E489E  
173 -:100AB00000F020F94FF23F00179002208DF86000FF  
174 -:100AC00000208DF8620003208DF8610001208DF870  
175 -:100AD000630017A9854800F00DF93F201790022008  
176 -:100AE0008DF8600000208DF8620003208DF8610011  
177 -:100AF00001208DF8630017A97D4800F0FBF80C2257  
178 -:100B00000021784800F03EF90C220121754800F0E0  
179 -:100B100039F90C220421734800F034F90C22052124  
180 -:100B2000704800F02FF90C2208216E4800F02AF9D5  
181 -:100B30000C2209216B4800F025F90C220A21694892  
182 -:100B400000F020F90C220B21664800F01BF90C2262  
183 -:100B50001146644800F016F90C220D21614800F09E  
184 -:100B600011F90C220E215F4800F00CF90C220F2124  
185 -:100B70005C4800F007F90C2200215B4800F002F904  
186 -:100B80000C220121584800F0FDF80C22072156489C  
187 -:100B900000F0F8F80C220821534800F0F3F80C227A  
188 -:100BA0000921514800F0EEF80C220A214E4800F0CD  
189 -:100BB000E9F80C220B214C4800F0E4F80C22114615  
190 -:100BC000494800F0DFF80C220D21474800F0DAF820  
191 -:100BD0000C220E21444800F0D5F80C220F21424887  
192 -:100BE00000F0D0F80C220021404800F0CBF80C2295  
193 -:100BF00001213E4800F0C6F80C2202213B4800F0DB  
194 -:100C0000C1F80C220321394800F0BCF80C22042161  
195 -:100C1000364800F0B7F80C220521344800F0B2F84D  
196 -:100C20000C221146314800F0ADF80C220D212F485E  
197 -:100C300000F0A8F80C220E212C4800F0A3F80C229A  
198 -:100C40000F212A4800F09EF80C220021284800F0CD  
199 -:100C500099F80C220121264800F094F80C22022178  
200 -:100C6000234800F08FF80C220321214800F08AF875  
201 -:100C70000C2204211E4800F085F80C2205211C4896  
202 -:100C800000F080F80C220A21194800F07BF80020BF  
203 -:100C90000190029008200390002004900590069097  
204 -:100CA000079004200890002009900A9010200B90D3  
205 -:100CB00000200C900E900D900F9010904FF48050EB  
206 -:100CC0001190002012901390149001A81590169086  
207 -:100CD00008A8FFF74BFE01210420FFF72DFE19B0F5  
208 -:100CE00000BD0000000C0240001002400014024051  
209 -:100CF00000180240F0B50A4600210023002400BF7E  
210 -:100D00003DE0012505FA01F3156805EA03049C425C  
211 -:100D100034D105684F000326BE40B5430560157900  
212 -:100D20004E00B5400668354305601579012D02D0A7  
213 -:100D30001579022D16D185684F000326BE40B543B4  
214 -:100D4000856055794E00B5408668354385604568B5  
215 -:100D500001268E40B5434560456896798E40B6B20F  
216 -:100D600035434560C5684F000326BE40B543C560A6  
217 -:100D7000D5794E00B540C6683543C560491C102979  
218 -:100D8000BFD3F0BDF0B5002300244D07ED0E02FAED  
219 -:100D900005F3CE1000F1200555F826504E07F70E4A  
220 -:100DA0000F26BE40B543CF1000F1200646F827506D  
221 -:100DB000CE1000F1200555F8265045EA0304CE1068  
222 -:100DC00000F1200545F82640F0BD418370470183BE  
223 -:100DD0007047000070B502460C46FF25FF2309E06E  
224 -:100DE00012F8010B80EA03010648405C80EA050323  
225 -:100DF0000548455C201EA4F10106B4B2F0D143EAD7  
226 -:100E0000052070BDDA1B0008DA1C000838B5FFF7B2  
227 -:100E100055FC4FF6FF74462000F0A6FB30215148E8  
228 -:100E200000F0AAFD462000F09FFB15214E4800F07F  
229 -:100E3000A3FD462000F098FB25214C4800F09CFDC6  
230 -:100E4000462000F091FB1E21494800F095FD462008  
231 -:100E500000F08AFB2521474800F08EFD462000F077  
232 -:100E600083FB30213F4800F087FD78E0424800785E  
233 -:100E7000002874D0042241A14148FFF7CDFA58B9A7  
234 -:100E80000521404800F078FD3F4800900422694663  
235 -:100E90003E4800F0BBF95AE006223DA13848FFF772  
236 -:100EA000BBFA002844D10521364800F065FDFFF764  
237 -:100EB00005FC00203049087000BF2F480078012849  
238 -:100EC000FBD1354935A0FFF7FFF905212D4800F08A  
239 -:100ED00053FD31480088801E81B22948FFF77AFF10  
240 -:100EE0000446214633A0FFF7EFF92B480068401E67  
241 -:100EF0002349095C28480068801E214A105C41EAA9  
242 -:100F00000020A0420BD124480068821E1C492C48B6  
243 -:100F100000F07CF919212B4800F02EFD03E016218A  
244 -:100F2000294800F029FD214628A0FFF7CDF90EE061  
245 -:100F3000072229A11248FFF76FFA20B905211148AD  
246 -:100F400000F01AFD0CE01A21254800F015FDFFF70E  
247 -:100F5000B5FB002008490870032000F0C1FB85E7BD  
248 -:100F600000BF38BDEA0000206D0000208200002094  
249 -:100F7000A7000020C50000200C00002041434B00CA  
250 -:100F8000000000681A010020CDAB341200400008B8  
251 -:100F90005354415254000000040000207265636500  
252 -:100FA000697665202564204279746573206D7367C6  
253 -:100FB0000D0A00004341434C203D2025780D0A00D6  
254 -:100FC00000000108240000203D000020435243207F  
255 -:100FD0003D2025780D0A000043414E43454C00005A  
256 -:100FE0005300002070B5002100230F22C4781CB3E9  
257 -:100FF000174C246804F4E064C4F5E064C4F30721EA  
258 -:10100000C1F10404E3B20A4144789C40E1B284781F  
259 -:10101000144021430C07210E0E4C057861550478CD  
260 -:1010200004F01F050124AC4005786D11AD0005F1F9  
261 -:10103000E025C5F8004109E0047804F01F0501240B  
262 -:10104000AC40054D0678761145F8264070BD00008D  
263 -:101050000CED00E000E400E080E100E00249014323  
264 -:10106000024A1160704700000000FA050CED00E034  
265 -:1010700029B1064A12680243044B1A6004E0034A8D  
266 -:1010800012688243014B1A607047000030380240FA  
267 -:1010900029B1064A12680243044B1A6004E0034A6D  
268 -:1010A00012688243014B1A607047000038380240D2  
269 -:1010B00029B1064A12680243044B1A6004E0034A4D  
270 -:1010C00012688243014B1A607047000040380240AA  
271 -:1010D00029B1064A12680243044B1A6004E0034A2D  
272 -:1010E00012688243014B1A60704700004438024086  
273 -:1010F000F0B5002100220024022500260223324FF1  
274 -:101100003F6807F00C0121B1042905D0082937D127  
275 -:1011100005E02E4F076036E02D4F076033E02A4F81  
276 -:101120003F1F3F68C7F38056274F3F1F3F6807F0B8  
277 -:101130003F036EB1264FB7FBF3F7DFF88CC0ACF17D  
278 -:10114000040CDCF800C0CCF3881C07FB0CF40CE0AA  
279 -:101150001E4FB7FBF3F7DFF870C0ACF1040CDCF8FE  
280 -:1011600000C0CCF3881C07FB0CF4174F3F1F3F68EF  
281 -:10117000C7F301477F1C7D00B4FBF5F7076002E071  
282 -:10118000124F076000BF00BF0F4F3F6807F0F0012C  
283 -:101190000909104F7A5C0768D74047600A4F3F68DB  
284 -:1011A00007F4E051890A0B4F7A5C4768D7408760A3  
285 -:1011B000054F3F6807F46041490B064F7A5C47686A  
286 -:1011C000D740C760F0BD0000083802400024F4009A  
287 -:1011D00040787D010D00002010B5044620680749C5  
288 -:1011E0000840B0F1005F08D16068054908602068D8  
289 -:1011F000FFF747F802480068804710BD0000FE2F47  
290 -:101200002000002001460868704700002DE9F047E3  
291 -:1012100004460E4617464FF009080025A94604F07B  
292 -:10122000030008B1BDE8F087FFF762FB0020FFF77D  
293 -:10123000ADFA254604EB07091748854215D2174831  
294 -:1012400085420AD102212020FFF7B2FA804602210E  
295 -:101250002820FFF7ADFA804607E01148854204D107  
296 -:1012600002210820FFF7A4FA8046B8F1090F0CD13B  
297 -:1012700008E020463168FFF713FB092800D003E09F  
298 -:10128000241D361D4C45F4D300BF0120FFF77EFA24  
299 -:10129000FFF7FCFA00BFC5E70000FF1F00000108D0  
300 -:1012A000004000080CB50020019000903448006810  
301 -:1012B00040F480303249086000BF3148006800F4D3  
302 -:1012C000003000900198401C0190009818B90198D6  
303 -:1012D000B0F5A04FF1D12A48006800F4003010B1F9  
304 -:1012E0000120009001E0002000900098012846D1E4  
305 -:1012F00023484030006840F0805021494031086068  
306 -:101300002048006840F440401E4908601C480830EE  
307 -:1013100000681B49083108600846006840F4004036  
308 -:1013200008600846006840F4A05008601648091F8D  
309 -:101330000860081F006840F08070091F086000BF47  
310 -:101340000F48006800F000700028F9D040F20570E6  
311 -:101350000E4908600A480830006820F00300084978  
312 -:10136000083108600846006840F00200086000BFCD  
313 -:1013700003480830006800F00C000828F8D10CBDC4  
314 -:10138000003802400070004019544004003C024004  
315 -:1013900002480068401C01490860704708000020AE  
316 -:1013A00010B51548006840F47000134908601348F0  
317 -:1013B000006840F001001149086000200F49083121  
318 -:1013C00008600E4800680E4908400C4908600D4846  
319 -:1013D000091D0860081F006820F48020091F0860AC  
320 -:1013E000002006490C310860FFF75CFF4FF00060F9  
321 -:1013F00001498039086010BD88ED00E000380240E6  
322 -:10140000FFFFF6FE103000247FB505460C46012193  
323 -:101410000220FFF74DFE0295ADF804400020ADF824  
324 -:101420000600ADF80C0001A90C4800F05BF80121A2  
325 -:101430000A4800F02DF801221146084800F048F84B  
326 -:101440001D208DF8000001208DF801008DF80200AC  
327 -:101450008DF803006846FFF7C5FD7FBD000400401E  
328 -:1014600010B50121084800F022F8012806D100211A  
329 -:10147000054800F010F801200449087001210248D5  
330 -:1014800000F006F810BD0000000400400C00002031  
331 -:10149000CA430282704721B1028842F001020280F1  
332 -:1014A00004E002884FF6FE731A400280704730B5A0  
333 -:1014B0000246002000230024158A05EA01039589CD  
334 -:1014C00005EA010413B10CB1012000E0002030BD99  
335 -:1014D0001AB183890B43838102E083898B43838123  
336 -:1014E0007047000000220288184B98420ED0184B1B  
337 -:1014F00098420BD0B0F1804F08D0164B984205D0DF  
338 -:10150000154B984202D0154B984204D14FF68F7379  
339 -:101510001A404B881A43124B984207D0114B9842FD  
340 -:1015200004D04FF6FF431A400B891A4302804B68E0  
341 -:10153000C3620B880385054B984202D0044B984246  
342 -:1015400001D18B7A0386012383827047000001401A  
343 -:10155000000401400004004000080040000C00406E  
344 -:101560000010004000140040044A116800BF034A04  
345 -:101570001268521A8242FAD3704700000800002015  
346 -:1015800010B588B0044601210C20FFF771FD012140  
347 -:101590000805FFF78DFD082202213648FFF7F2FB10  
348 -:1015A00008220C213448FFF7EDFB042006900220AE  
349 -:1015B0008DF81C008DF81D0000208DF81E00012004  
350 -:1015C0008DF81F0006A92B48FFF794FB4FF48050BD  
351 -:1015D000069002208DF81C008DF81D0000208DF86B  
352 -:1015E0001E0001208DF81F0006A92348FFF782FB8B  
353 -:1015F0000820069001208DF81C0002208DF81D00A7  
354 -:1016000000208DF81E0001208DF81F0006A9194842  
355 -:10161000FFF770FB032000F063F802940020ADF8A0  
356 -:101620000C00ADF80E00ADF81000ADF814000C2061  
357 -:10163000ADF8120002A9114800F030F901210F485D  
358 -:1016400000F0D1F8012240F225510C4800F001F9D8  
359 -:1016500035208DF8040005208DF8050000208DF858  
360 -:10166000060001208DF8070001A8FFF7BBFC08B0B9  
361 -:1016700010BD0000000C0240000802400050004075  
362 -:1016800010B540F22551124800F0B9F8D0B1104819  
363 -:101690008088C1B20F4802680068401C0D4B18607A  
364 -:1016A0000D48815400200D49086001210B48243861  
365 -:1016B000FFF7F1FE07480068B0F5483F02D100206F  
366 -:1016C0000449086040F22551014800F07DF810BD42  
367 -:1016D0000050004004000020000000682404004086  
368 -:1016E00010B50446022C04D108210548FFF76FFB12  
369 -:1016F00005E0032C03D108210148FFF766FB10BD6C  
370 -:10170000000C024010B588B0044601210846FFF7DE  
371 -:10171000AFFC01211020FFF7DBFC07220921234841  
372 -:10172000FFF730FB07220A212048FFF72BFB4FF47D  
373 -:10173000C060069002208DF81C008DF81D0000206E  
374 -:101740008DF81E0001208DF81F0006A91748FFF72D  
375 -:10175000D1FA02940020ADF80C00ADF80E00ADF8FF  
376 -:101760001000ADF814000C20ADF8120002A91048CA  
377 -:1017700000F094F801210E4800F035F8012240F203  
378 -:1017800025510B4800F065F825208DF80400032052  
379 -:101790008DF8050000208DF8060001208DF8070067  
380 -:1017A00001A8FFF71FFC08B010BD000000000240B8  
381 -:1017B0000010014010B540F22551024800F004F835  
382 -:1017C00010BD00000010014010B50022002340F6BB  
383 -:1017D0006A14A14200D100BF0A1201249440A3B2AE  
384 -:1017E000DC43048010BD21B1828942F40052828121  
385 -:1017F00004E082894DF6FF731A408281704770B50C  
386 -:101800000246002400230025002040F66A16B1425B  
387 -:1018100000D100BFC1F3421501F01F03012606FAF3  
388 -:1018200003F3012D02D19689334006E0022D02D147  
389 -:10183000168A334001E0968A33400C12012606FADC  
390 -:1018400004F41688344013B10CB1012000E00020EC  
391 -:1018500070BDF0B50346002400260025002040F6A8  
392 -:101860006A17B94200D100BF1846C1F3421401F013  
393 -:101870001F06012707FA06F5012C01D10C3004E000  
394 -:10188000022C01D1103000E014301AB107682F4348  
395 -:10189000076002E00768AF430760F0BD2DE9FF472E  
396 -:1018A00005460E460024A14600BFA046B08900B1FF  
397 -:1018B00000BF2C8A24F44054F08804432C82AC8965  
398 -:1018C00041F20C608443B088318908437189084330  
399 -:1018D0000443AC81AC8A24F44074B0890443AC82E4  
400 -:1018E0006846FFF705FC2048854202D01F48854224  
401 -:1018F00002D1DDF80C9001E0DDF80890A88900F431  
402 -:10190000004040B109EBC90000EB09103168490003  
403 -:10191000B0FBF1F707E009EBC90000EB09103168F3  
404 -:101920008900B0FBF1F76420B7FBF0F00401200957  
405 -:10193000642101FB1078A88900F4004040B13220F6  
406 -:1019400000EBC800B0FBF1F000F00700044308E032  
407 -:10195000322000EB08106421B0FBF1F000F00F0022  
408 -:1019600004432C81BDE8FF870010014000140140B2  
409 -:10197000C1F308028280704770B505460E4602200A  
410 -:10198000FFF7AEFE0120FFF7EFFD00240CE0295D1C  
411 -:101990000A48FFF7EDFF00BF0848008800F040004C  
412 -:1019A0000028F9D0601CC4B2B442F0DB0120FFF77C  
413 -:1019B000DBFD0320FFF794FE70BD000000500040E7  
414 -:1019C00000BF704700BF054A128802F04002002A9B  
415 -:1019D000F9D0C2B2014B9A8070470000001001405C  
416 -:1019E00008B54FF44070FFF739FBFEF775FE4FF472  
417 -:1019F000E130FFF787FE4FF4E130FFF7C1FD4FF410  
418 -:101A000000610846FFF700FDFFF724F82DA0FEF760  
419 -:101A10005BFC4FF448313448FEF749FDFEF78CFE7D  
420 -:101A20003248FFF7EFFB00900098B0F1FF3F2BD05A  
421 -:101A30002F49084420B12F490844002833D109E038  
422 -:101A40002DA0FEF741FC1420FFF78EFD3548FFF76F  
423 -:101A5000C3FB2CE034A0FEF737FC3E4800904FF467  
424 -:101A6000003230480099FFF7D1FB0A20FFF77CFDD8  
425 -:101A70001F4840420090042269461C48FFF7C6FBFD  
426 -:101A80002848FFF7A9FB12E033A0FEF71DFC184819  
427 -:101A900040420090042269461448FFF7B7FB2148F2  
428 -:101AA000FFF79AFB03E037A0FEF70EFC00BF00BF74  
429 -:101AB00006E040A0FEF708FC41F28830FFF754FD35  
430 -:101AC000F7E700000D0A2A2A2A2A2A2A2A2A2A2A7D  
431 -:101AD000426F6F744C6F616465722A2A2A2A2A2A1F  
432 -:101AE0002A2A2A2A0D0A0000000000680040000887  
433 -:101AF0003354CBED1201CDCC0D0A2A2A2A2A2A2AE8  
434 -:101B00002A2A2A2A52756E696E67204669726D7795  
435 -:101B1000617265202A2A2A2A2A2A2A2A2A2A0D0AB2  
436 -:101B200000000000000001080D0A2A2A2A2A2A2A99  
437 -:101B30002A2A2A2A4C6F6164696E67204669726D91  
438 -:101B400077617265202A2A2A2A2A2A2A2A2A2A0D15  
439 -:101B50000A000000000004080D0A2A2A2A2A2A2A5C  
440 -:101B60002A2A2A2A44656661756C74204669726D5A  
441 -:101B700077617265202A2A2A2A2A2A2A2A2A2A0DE5  
442 -:101B80000A0000000D0A2A2A2A2A2A2A2A2A2A2A90  
443 -:101B9000446F6E5E7420486176696E672046697294  
444 -:101BA0006D77617265202A2A2A2A2A2A2A2A2A2A55  
445 -:101BB0000D0A00000D0A2A2A2A2A2A2A2A2A49441A  
446 -:101BC0004C452A2A2A2A2A2A2A2A0D0A000000001D  
447 -:101BD0004FF04070E1EE100A704700C1814001C033  
448 -:101BE000804101C0804100C1814001C0804100C1ED  
449 -:101BF000814000C1814001C0804101C0804100C1DD  
450 -:101C0000814000C1814001C0804100C1814001C0CC  
451 -:101C1000804101C0804100C1814001C0804100C1BC  
452 -:101C2000814000C1814001C0804100C1814001C0AC  
453 -:101C3000804101C0804100C1814000C1814001C09C  
454 -:101C4000804101C0804100C1814001C0804100C18C  
455 -:101C5000814000C1814001C0804101C0804100C17C  
456 -:101C6000814000C1814001C0804100C1814001C06C  
457 -:101C7000804101C0804100C1814000C1814001C05C  
458 -:101C8000804101C0804100C1814001C0804100C14C  
459 -:101C9000814000C1814001C0804100C1814001C03C  
460 -:101CA000804101C0804100C1814001C0804100C12C  
461 -:101CB000814000C1814001C0804101C0804100C11C  
462 -:101CC000814000C1814001C0804100C1814001C00C  
463 -:101CD000804101C0804100C1814000C0C101C303F7  
464 -:101CE00002C2C60607C705C5C404CC0C0DCD0FCF74  
465 -:101CF000CE0E0ACACB0BC90908C8D81819D91BDBE4  
466 -:101D0000DA1A1EDEDF1FDD1D1CDC14D4D515D71733  
467 -:101D100016D6D21213D311D1D010F03031F133F3E3  
468 -:101D2000F23236F6F737F53534F43CFCFD3DFF3F33  
469 -:101D30003EFEFA3A3BFB39F9F83828E8E929EB2B63  
470 -:101D40002AEAEE2E2FEF2DEDEC2CE42425E527E7F3  
471 -:101D5000E62622E2E323E12120E0A06061A163A363  
472 -:101D6000A26266A6A767A56564A46CACAD6DAF6FF3  
473 -:101D70006EAEAA6A6BAB69A9A86878B8B979BB7B63  
474 -:101D80007ABABE7E7FBF7DBDBC7CB47475B577B7B3  
475 -:101D9000B67672B2B373B17170B0509091519353E3  
476 -:101DA000529296565797559594549C5C5D9D5F9FB3  
477 -:101DB0009E5E5A9A9B5B99595898884849894B8BE3  
478 -:101DC0008A4A4E8E8F4F8D4D4C8C44848545874773  
479 -:101DD00046868242438341818040303132333435FC  
480 -:101DE0003637383941424344454640305800303157  
481 -:101DF0003233343536373839616263646566403072  
482 -:101E000078000000241E00080000002034010000BB  
483 -:101E1000C4010008F01E0008340100206404000022  
484 -:101E20002002000801112D010203040475060708B1  
485 -:101E300009E81946697265576172652043686563F0  
486 -:101E40006B20537563636573730D0A191D466169D1  
487 -:101E50006C161818496E70757420436F6D6D616E45  
488 -:101E60006420496E636F72726563741A1D434D443A  
489 -:101E70000901180C4465736372697074696F6E159B  
490 -:101E80001E53544152541668135374617274205592  
491 -:101E900070205472616E736D6974205F19251D4145  
492 -:101EA000434B3A24A80C436F6E6669726D205468E8  
493 -:101EB000651E2F43414E43454C203E616E63656C69  
494 -:101EC0001F180F5570646174652050726F677261DE  
495 -:101ED0006D250C280D0A2A0119301B4F4B05580C93  
496 -:101EE000456E746572204C6F63616C521915000069  
497 -:040000050800018965  
498 -:00000001FF  
SYSTEM/TIMER/timer.c deleted
1 -#include "timer.h"  
2 -  
3 -  
4 -  
5 -  
6 -  
7 -/******************************************  
8 -* @brief: 定时器3配置  
9 -* @param: arr 自动重装值  
10 -* psc 分频  
11 -* @retval: 无返回值  
12 -* @note:  
13 -*******************************************/  
14 -void TIM3_Config(uint32_t arr,uint16_t psc)  
15 -{  
16 - TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;  
17 - NVIC_InitTypeDef NVIC_InitStructure;  
18 -  
19 - RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE); ///使能TIM3时钟  
20 -  
21 - TIM_TimeBaseInitStructure.TIM_Period = arr; //自动重装载值  
22 - TIM_TimeBaseInitStructure.TIM_Prescaler = psc; //定时器分频  
23 - TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; //向上计数模式  
24 - TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;  
25 -  
26 - TIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure); //初始化TIM3  
27 -  
28 - TIM_ClearITPendingBit(TIM3, TIM_IT_Update);  
29 - TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); //允许定时器3更新中断  
30 -  
31 - //TIM_Cmd(TIM3,ENABLE); //使能定时器3  
32 -  
33 - NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; //定时器3中断  
34 - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 0x01; //抢占优先级1  
35 - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x01; //子优先级1  
36 - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
37 - NVIC_Init(&NVIC_InitStructure);  
38 -  
39 -  
40 -}  
41 -  
42 -/*******************************  
43 -* @brief: 定时器3中断服务函数  
44 -* @param:  
45 -* @retval:  
46 -* @note:  
47 -********************************/  
48 -bool UART_FINISH = false;  
49 -void TIM3_IRQHandler(void)  
50 -{  
51 - if(TIM_GetITStatus(TIM3,TIM_IT_Update)==SET) //溢出中断  
52 - {  
53 - TIM_Cmd(TIM3,DISABLE);  
54 -  
55 - UART_FINISH = true;  
56 - }  
57 - TIM_ClearITPendingBit(TIM3,TIM_IT_Update); //清除中断标志位  
58 -}  
59 -  
60 -  
61 -  
62 -  
63 -  
64 -  
SYSTEM/TIMER/timer.h deleted
1 -#ifndef _TIMER_H  
2 -#define _TIMER_H  
3 -#include "dev.h"  
4 -  
5 -  
6 -extern bool UART_FINISH;  
7 -  
8 -void TIM3_Config(uint32_t arr,uint16_t psc);  
9 -  
10 -  
11 -#endif  
SYSTEM/delay/delay.c
1 #include "delay.h" 1 #include "delay.h"
2 2
3 3
4 -void Delay_init(void) 4 +void delay_init(void)
5 { 5 {
6 RCC_ClocksTypeDef RCC_Clocks; 6 RCC_ClocksTypeDef RCC_Clocks;
7 RCC_GetClocksFreq(&RCC_Clocks); 7 RCC_GetClocksFreq(&RCC_Clocks);
@@ -16,10 +16,7 @@ void SysTick_Handler(void) @@ -16,10 +16,7 @@ void SysTick_Handler(void)
16 mTick++; 16 mTick++;
17 } 17 }
18 18
19 -  
20 -  
21 -  
22 -void Tick_Delay_ms(uint32_t ms) 19 +void delay_ms(uint32_t ms)
23 { 20 {
24 uint32_t curTick = mTick; 21 uint32_t curTick = mTick;
25 22
@@ -27,6 +24,3 @@ void Tick_Delay_ms(uint32_t ms) @@ -27,6 +24,3 @@ void Tick_Delay_ms(uint32_t ms)
27 } 24 }
28 25
29 26
30 -  
31 -  
32 -  
SYSTEM/delay/delay.h
@@ -4,9 +4,9 @@ @@ -4,9 +4,9 @@
4 4
5 5
6 6
7 -void Tick_Delay_ms(u32 ms); 7 +void delay_ms(u32 ms);
8 8
9 -void Delay_init(void); 9 +void delay_init(void);
10 10
11 11
12 12
SYSTEM/fsmc/fsmc.c deleted
1 -#include "fsmc.h"  
2 -  
3 -  
4 -  
5 -void FSMC_SRAM_Init(void)  
6 -{  
7 - GPIO_InitTypeDef GPIO_InitStructure;  
8 - FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;  
9 - FSMC_NORSRAMTimingInitTypeDef readWriteTiming;  
10 -  
11 - RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB|RCC_AHB1Periph_GPIOD|RCC_AHB1Periph_GPIOE|RCC_AHB1Periph_GPIOF|RCC_AHB1Periph_GPIOG, ENABLE);//使能PD,PE,PF,PG时钟  
12 - RCC_AHB3PeriphClockCmd(RCC_AHB3Periph_FSMC,ENABLE);//使能FSMC时钟  
13 -  
14 - GPIO_InitStructure.GPIO_Pin = DB2_Pin | DB3_Pin | FSMC_NOE_Pin | FSMC_NWE_Pin | FSMC_NE_Pin  
15 - | DB13_Pin | DB14_Pin | DB15_Pin | FSMC_A16_Pin | FSMC_A17_Pin  
16 - | FSMC_A18_Pin | DB0_Pin| DB1_Pin;  
17 - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用输出  
18 - GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出  
19 - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz  
20 - GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉  
21 - GPIO_Init(GPIOD, &GPIO_InitStructure);//初始化  
22 -  
23 - GPIO_InitStructure.GPIO_Pin = DB4_Pin | DB5_Pin | DB6_Pin | DB7_Pin | DB8_Pin | DB9_Pin  
24 - |DB10_Pin |DB11_Pin |DB12_Pin | FSMC_BL1_Pin | FSMC_BL0_Pin;  
25 - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用输出  
26 - GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出  
27 - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz  
28 - GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉  
29 - GPIO_Init(GPIOE, &GPIO_InitStructure);//初始化  
30 -  
31 - GPIO_InitStructure.GPIO_Pin = FSMC_A0_Pin | FSMC_A1_Pin | FSMC_A2_Pin | FSMC_A3_Pin  
32 - | FSMC_A4_Pin | FSMC_A5_Pin | FSMC_A6_Pin | FSMC_A7_Pin  
33 - | FSMC_A8_Pin | FSMC_A9_Pin ;  
34 - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用输出  
35 - GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出  
36 - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz  
37 - GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉  
38 - GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化  
39 -  
40 - GPIO_InitStructure.GPIO_Pin = FSMC_A10_Pin | FSMC_A11_Pin | FSMC_A12_Pin | FSMC_A13_Pin  
41 - | FSMC_A14_Pin | FSMC_A15_Pin ;  
42 - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用输出  
43 - GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出  
44 - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz  
45 - GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉  
46 - GPIO_Init(GPIOG, &GPIO_InitStructure);//初始化  
47 -  
48 -  
49 - GPIO_PinAFConfig(GPIOD,GPIO_PinSource0,GPIO_AF_FSMC);//PD0,AF12  
50 - GPIO_PinAFConfig(GPIOD,GPIO_PinSource1,GPIO_AF_FSMC);//PD1,AF12  
51 - GPIO_PinAFConfig(GPIOD,GPIO_PinSource4,GPIO_AF_FSMC);  
52 - GPIO_PinAFConfig(GPIOD,GPIO_PinSource5,GPIO_AF_FSMC);  
53 - GPIO_PinAFConfig(GPIOD,GPIO_PinSource8,GPIO_AF_FSMC);  
54 - GPIO_PinAFConfig(GPIOD,GPIO_PinSource9,GPIO_AF_FSMC);  
55 - GPIO_PinAFConfig(GPIOD,GPIO_PinSource10,GPIO_AF_FSMC);  
56 - GPIO_PinAFConfig(GPIOD,GPIO_PinSource11,GPIO_AF_FSMC);  
57 - GPIO_PinAFConfig(GPIOD,GPIO_PinSource12,GPIO_AF_FSMC);  
58 - GPIO_PinAFConfig(GPIOD,GPIO_PinSource13,GPIO_AF_FSMC);  
59 - GPIO_PinAFConfig(GPIOD,GPIO_PinSource14,GPIO_AF_FSMC);  
60 - GPIO_PinAFConfig(GPIOD,GPIO_PinSource15,GPIO_AF_FSMC);//PD15,AF12  
61 -  
62 - GPIO_PinAFConfig(GPIOE,GPIO_PinSource0,GPIO_AF_FSMC);  
63 - GPIO_PinAFConfig(GPIOE,GPIO_PinSource1,GPIO_AF_FSMC);  
64 - GPIO_PinAFConfig(GPIOE,GPIO_PinSource7,GPIO_AF_FSMC);//PE7,AF12  
65 - GPIO_PinAFConfig(GPIOE,GPIO_PinSource8,GPIO_AF_FSMC);  
66 - GPIO_PinAFConfig(GPIOE,GPIO_PinSource9,GPIO_AF_FSMC);  
67 - GPIO_PinAFConfig(GPIOE,GPIO_PinSource10,GPIO_AF_FSMC);  
68 - GPIO_PinAFConfig(GPIOE,GPIO_PinSource11,GPIO_AF_FSMC);  
69 - GPIO_PinAFConfig(GPIOE,GPIO_PinSource12,GPIO_AF_FSMC);  
70 - GPIO_PinAFConfig(GPIOE,GPIO_PinSource13,GPIO_AF_FSMC);  
71 - GPIO_PinAFConfig(GPIOE,GPIO_PinSource14,GPIO_AF_FSMC);  
72 - GPIO_PinAFConfig(GPIOE,GPIO_PinSource15,GPIO_AF_FSMC);//PE15,AF12  
73 -  
74 - GPIO_PinAFConfig(GPIOF,GPIO_PinSource0,GPIO_AF_FSMC);//PF0,AF12  
75 - GPIO_PinAFConfig(GPIOF,GPIO_PinSource1,GPIO_AF_FSMC);//PF1,AF12  
76 - GPIO_PinAFConfig(GPIOF,GPIO_PinSource2,GPIO_AF_FSMC);//PF2,AF12  
77 - GPIO_PinAFConfig(GPIOF,GPIO_PinSource3,GPIO_AF_FSMC);//PF3,AF12  
78 - GPIO_PinAFConfig(GPIOF,GPIO_PinSource4,GPIO_AF_FSMC);//PF4,AF12  
79 - GPIO_PinAFConfig(GPIOF,GPIO_PinSource5,GPIO_AF_FSMC);//PF5,AF12  
80 - GPIO_PinAFConfig(GPIOF,GPIO_PinSource12,GPIO_AF_FSMC);//PF12,AF12  
81 - GPIO_PinAFConfig(GPIOF,GPIO_PinSource13,GPIO_AF_FSMC);//PF13,AF12  
82 - GPIO_PinAFConfig(GPIOF,GPIO_PinSource14,GPIO_AF_FSMC);//PF14,AF12  
83 - GPIO_PinAFConfig(GPIOF,GPIO_PinSource15,GPIO_AF_FSMC);//PF15,AF12  
84 -  
85 - GPIO_PinAFConfig(GPIOG,GPIO_PinSource0,GPIO_AF_FSMC);  
86 - GPIO_PinAFConfig(GPIOG,GPIO_PinSource1,GPIO_AF_FSMC);  
87 - GPIO_PinAFConfig(GPIOG,GPIO_PinSource2,GPIO_AF_FSMC);  
88 - GPIO_PinAFConfig(GPIOG,GPIO_PinSource3,GPIO_AF_FSMC);  
89 - GPIO_PinAFConfig(GPIOG,GPIO_PinSource4,GPIO_AF_FSMC);  
90 - GPIO_PinAFConfig(GPIOG,GPIO_PinSource5,GPIO_AF_FSMC);  
91 - GPIO_PinAFConfig(GPIOG,GPIO_PinSource10,GPIO_AF_FSMC);  
92 -  
93 -  
94 - readWriteTiming.FSMC_AddressSetupTime = 0x00; //地址建立时间(ADDSET)为1个HCLK 1/36M=27ns  
95 - readWriteTiming.FSMC_AddressHoldTime = 0x00; //地址保持时间(ADDHLD)模式A未用到  
96 - readWriteTiming.FSMC_DataSetupTime = 0x08; ////数据保持时间(DATAST)为9个HCLK 6*9=54ns  
97 - readWriteTiming.FSMC_BusTurnAroundDuration = 0x00;  
98 - readWriteTiming.FSMC_CLKDivision = 0x00;  
99 - readWriteTiming.FSMC_DataLatency = 0x00;  
100 - readWriteTiming.FSMC_AccessMode = FSMC_AccessMode_A; //模式A  
101 -  
102 -  
103 - FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM3;// 这里我们使用NE3 ,也就对应BTCR[4],[5]。  
104 - FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;  
105 - FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_SRAM;// FSMC_MemoryType_SRAM; //SRAM  
106 - FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;//存储器数据宽度为16bit  
107 - FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;// FSMC_BurstAccessMode_Disable;  
108 - FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;  
109 - FSMC_NORSRAMInitStructure.FSMC_AsynchronousWait = FSMC_AsynchronousWait_Disable;  
110 - FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;  
111 - FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;  
112 - FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable; //存储器写使能  
113 - FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;  
114 - FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable; // 读写使用相同的时序  
115 - FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;  
116 - FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &readWriteTiming;  
117 - FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &readWriteTiming; //读写同样时序  
118 -  
119 - FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure); //初始化FSMC配置  
120 -  
121 - FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM3, ENABLE); // 使能BANK1区域3  
122 -}  
123 -  
124 -  
125 -  
126 -  
127 -  
128 -  
129 -  
130 -  
131 -  
132 -  
133 -void FSMC_SRAM_WriteBuffer(u8* pBuffer,u32 WriteAddr,u32 Num)  
134 -{  
135 - while(Num--)  
136 - {  
137 - *(vu8*)(SRAM_EXT_ADDR+WriteAddr) = *pBuffer;  
138 - WriteAddr++;  
139 - pBuffer++;  
140 - }  
141 -}  
142 -  
143 -  
144 -  
145 -  
146 -void FSMC_SRAM_ReadBuffer(u8* pBuffer,u32 ReadAddr,u32 n)  
147 -{  
148 - for(;n!=0;n--)  
149 - {  
150 - *pBuffer++=*(vu8*)(SRAM_EXT_ADDR+ReadAddr);  
151 - ReadAddr++;  
152 - }  
153 -}  
154 -  
155 -  
156 -  
157 -  
158 -  
159 -  
160 -  
161 -  
162 -  
SYSTEM/fsmc/fsmc.h deleted
1 -#ifndef __FSMC_H__  
2 -#define __FSMC_H__  
3 -  
4 -#include "dev.h"  
5 -  
6 -void FSMC_SRAM_Init(void);  
7 -  
8 -void FSMC_SRAM_WriteBuffer(u8* pBuffer,u32 WriteAddr,u32 Num);  
9 -  
10 -void FSMC_SRAM_ReadBuffer(u8* pBuffer,u32 ReadAddr,u32 Num);  
11 -  
12 -  
13 -#endif  
SYSTEM/sys/dev.h
1 #ifndef __DEV_H 1 #ifndef __DEV_H
2 #define __DEV_H 2 #define __DEV_H
3 #include "stm32f4xx.h" 3 #include "stm32f4xx.h"
4 -#include "stm32f4xx_conf.h"  
5 -  
6 -#include "stdio.h"  
7 -#include "stdbool.h"  
8 -#include "stdlib.h"  
9 -#include "string.h"  
10 -  
11 -  
12 -//CH395A(USART6)  
13 -#define CH_TX_Pin GPIO_Pin_7  
14 -#define CH_TX_Port GPIOC  
15 -#define CH_RX_Pin GPIO_Pin_6  
16 -#define CH_RX_Port GPIOC  
17 -  
18 -//RS232(UART4)  
19 -#define U232_RX_Pin GPIO_Pin_11  
20 -#define U232_RX_Port GPIOC  
21 -#define U232_TX_Pin GPIO_Pin_10  
22 -#define U232_TX_Port GPIOC  
23 -  
24 -//RS485(UART5) 4 +//#include "stm32f4xx_conf.h"
  5 +//#include "stdio.h"
  6 +//#include "stdbool.h"
  7 +//#include "stdlib.h"
  8 +//#include "string.h"
25 #define U485_RX_Pin GPIO_Pin_2 9 #define U485_RX_Pin GPIO_Pin_2
26 #define U485_RX_Port GPIOD 10 #define U485_RX_Port GPIOD
27 #define U485_TX_Pin GPIO_Pin_12 11 #define U485_TX_Pin GPIO_Pin_12
28 #define U485_TX_Port GPIOC 12 #define U485_TX_Port GPIOC
29 -#define EN_485_Pin GPIO_Pin_3  
30 -#define EN_485_Port GPIOD  
31 13
32 -//DEBUG(USART1) 14 +//MFGW01A1版本
  15 +#define EN_485_Pin_1 GPIO_Pin_3
  16 +#define EN_485_Port_1 GPIOD
  17 +//MFGW01B1以后版本
  18 +#define EN_485_Pin_2 GPIO_Pin_10
  19 +#define EN_485_Port_2 GPIOF
  20 +
  21 +
33 #define DBG_RXD_Pin GPIO_Pin_9 22 #define DBG_RXD_Pin GPIO_Pin_9
34 #define DBG_RXD_Port GPIOA 23 #define DBG_RXD_Port GPIOA
35 #define DBG_TXD_Pin GPIO_Pin_10 24 #define DBG_TXD_Pin GPIO_Pin_10
36 #define DBG_TXD_Port GPIOA 25 #define DBG_TXD_Port GPIOA
37 26
38 -  
39 -  
40 -//LED  
41 #define ARM_LED1_Pin GPIO_Pin_8 27 #define ARM_LED1_Pin GPIO_Pin_8
42 #define ARM_LED1_Port GPIOA 28 #define ARM_LED1_Port GPIOA
43 #define ARM_LED2_Pin GPIO_Pin_8 29 #define ARM_LED2_Pin GPIO_Pin_8
@@ -48,249 +34,12 @@ @@ -48,249 +34,12 @@
48 #define ARM_LED4_Port GPIOG 34 #define ARM_LED4_Port GPIOG
49 35
50 36
51 -  
52 -  
53 -//DI、DO  
54 -#define IN1_Pin GPIO_Pin_0  
55 -#define IN1_Port GPIOB  
56 -#define IN2_Pin GPIO_Pin_1  
57 -#define IN2_Port GPIOB  
58 -#define CTRL1_Pin GPIO_Pin_2  
59 -#define CTRL1_Port GPIOC  
60 -#define CTRL2_Pin GPIO_Pin_3  
61 -#define CTRL2_Port GPIOC  
62 -  
63 -  
64 -//RMII  
65 -#define RMII_MDC_Pin GPIO_Pin_1  
66 -#define RMII_MDC_Port GPIOC  
67 -#define RMII_CLK_Pin GPIO_Pin_1  
68 -#define RMII_CLK_Port GPIOA  
69 -#define RMII_MDIO_Pin GPIO_Pin_2  
70 -#define RMII_MDIO_Port GPIOA  
71 -#define RMII_CRS_Pin GPIO_Pin_7  
72 -#define RMII_CRS_Port GPIOA  
73 -#define RMII_RXD0_Pin GPIO_Pin_4  
74 -#define RMII_RXD0_Port GPIOC  
75 -#define RMII_RXD1_Pin GPIO_Pin_5  
76 -#define RMII_RXD1_Port GPIOC  
77 -#define RMII_TXEN_Pin GPIO_Pin_11  
78 -#define RMII_TXEN_Port GPIOG  
79 -#define RMII_TXD0_Pin GPIO_Pin_13  
80 -#define RMII_TXD0_Port GPIOG  
81 -#define RMII_TXD1_Pin GPIO_Pin_14  
82 -#define RMII_TXD1_Port GPIOG  
83 -  
84 -  
85 -//FSMC  
86 -#define FSMC_A0_Pin GPIO_Pin_0  
87 -#define FSMC_A0_Port GPIOF  
88 -#define FSMC_A1_Pin GPIO_Pin_1  
89 -#define FSMC_A1_Port GPIOF  
90 -#define FSMC_A2_Pin GPIO_Pin_2  
91 -#define FSMC_A2_Port GPIOF  
92 -#define FSMC_A3_Pin GPIO_Pin_3  
93 -#define FSMC_A3_Port GPIOF  
94 -#define FSMC_A4_Pin GPIO_Pin_4  
95 -#define FSMC_A4_Port GPIOF  
96 -#define FSMC_A5_Pin GPIO_Pin_5  
97 -#define FSMC_A5_Port GPIOF  
98 -#define FSMC_A6_Pin GPIO_Pin_12  
99 -#define FSMC_A6_Port GPIOF  
100 -#define FSMC_A7_Pin GPIO_Pin_13  
101 -#define FSMC_A7_Port GPIOF  
102 -#define FSMC_A8_Pin GPIO_Pin_14  
103 -#define FSMC_A8_Port GPIOF  
104 -#define FSMC_A9_Pin GPIO_Pin_15  
105 -#define FSMC_A9_Port GPIOF  
106 -  
107 -#define FSMC_A10_Pin GPIO_Pin_0  
108 -#define FSMC_A10_Port GPIOG  
109 -#define FSMC_A11_Pin GPIO_Pin_1  
110 -#define FSMC_A11_Port GPIOG  
111 -#define FSMC_A12_Pin GPIO_Pin_2  
112 -#define FSMC_A12_Port GPIOG  
113 -#define FSMC_A13_Pin GPIO_Pin_3  
114 -#define FSMC_A13_Port GPIOG  
115 -#define FSMC_A14_Pin GPIO_Pin_4  
116 -#define FSMC_A14_Port GPIOG  
117 -#define FSMC_A15_Pin GPIO_Pin_5  
118 -#define FSMC_A15_Port GPIOG  
119 -  
120 -#define FSMC_A16_Pin GPIO_Pin_11  
121 -#define FSMC_A16_Port GPIOD  
122 -#define FSMC_A17_Pin GPIO_Pin_12  
123 -#define FSMC_A17_Port GPIOD  
124 -#define FSMC_A18_Pin GPIO_Pin_13  
125 -#define FSMC_A18_Port GPIOD  
126 -#define DB0_Pin GPIO_Pin_14  
127 -#define DB0_Port GPIOD  
128 -#define DB1_Pin GPIO_Pin_15  
129 -#define DB1_Port GPIOD  
130 -  
131 -#define DB2_Pin GPIO_Pin_0  
132 -#define DB2_Port GPIOD  
133 -#define DB3_Pin GPIO_Pin_1  
134 -#define DB3_Port GPIOD  
135 -  
136 -#define DB4_Pin GPIO_Pin_7  
137 -#define DB4_Port GPIOE  
138 -#define DB5_Pin GPIO_Pin_8  
139 -#define DB5_Port GPIOE  
140 -#define DB6_Pin GPIO_Pin_9  
141 -#define DB6_Port GPIOE  
142 -#define DB7_Pin GPIO_Pin_10  
143 -#define DB7_Port GPIOE  
144 -#define DB8_Pin GPIO_Pin_11  
145 -#define DB8_Port GPIOE  
146 -#define DB9_Pin GPIO_Pin_12  
147 -#define DB9_Port GPIOE  
148 -#define DB10_Pin GPIO_Pin_13  
149 -#define DB10_Port GPIOE  
150 -#define DB11_Pin GPIO_Pin_14  
151 -#define DB11_Port GPIOE  
152 -#define DB12_Pin GPIO_Pin_15  
153 -#define DB12_Port GPIOE  
154 -  
155 -#define DB13_Pin GPIO_Pin_8  
156 -#define DB13_Port GPIOD  
157 -#define DB14_Pin GPIO_Pin_9  
158 -#define DB14_Port GPIOD  
159 -#define DB15_Pin GPIO_Pin_10  
160 -#define DB15_Port GPIOD  
161 -  
162 -#define FSMC_BL1_Pin GPIO_Pin_1  
163 -#define FSMC_BL1_Port GPIOE  
164 -#define FSMC_BL0_Pin GPIO_Pin_0  
165 -#define FSMC_BL0_Port GPIOE  
166 -  
167 -#define FSMC_NE_Pin GPIO_Pin_7  
168 -#define FSMC_NE_Port GPIOD  
169 -#define FSMC_NWE_Pin GPIO_Pin_5  
170 -#define FSMC_NWE_Port GPIOD  
171 -#define FSMC_NOE_Pin GPIO_Pin_4  
172 -#define FSMC_NOE_Port GPIOD  
173 -  
174 -#define PHY_RESET_Pin GPIO_Pin_0  
175 -#define PHY_RESET_Port GPIOC  
176 -  
177 -  
178 -  
179 -//IIC(用于AI)  
180 -#define SDA_Pin GPIO_Pin_7  
181 -#define SDA_Port GPIOB  
182 -#define SCL_Pin GPIO_Pin_6  
183 -#define SCL_Port GPIOB  
184 -  
185 -  
186 -//SPI(外部EEPROM)  
187 -#define SSPI1_MOSI_Pin GPIO_Pin_5  
188 -#define SSPI1_MOSI_Port GBIOB  
189 -#define SSPI1_MISO_Pin GPIO_Pin_4  
190 -#define SSPI1_MISO_Port GBIOB  
191 -#define SSPI1_SCK_Pin GPIO_Pin_3  
192 -#define SSPI1_SLK_Port GBIOB  
193 -#define SSPI1_SSEL_Pin GPIO_Pin_15  
194 -#define SSPI1_SSEL_Port GBIOG  
195 -  
196 -//CH395Q  
197 -#define CH_MOSI_Pin GPIO_Pin_15  
198 -#define CH_MOSI_Port GPIOB  
199 -#define CH_MISO_Pin GPIO_Pin_14  
200 -#define CH_MISO_Port GPIOB  
201 -#define CH_SCK_Pin GPIO_Pin_13  
202 -#define CH_SCK_Port GPIOB  
203 -#define CH_CS_Pin GPIO_Pin_12  
204 -#define CH_CS_Port GPIOB  
205 -  
206 -  
207 -//EC20  
208 -#define GPRS_RST_Pin GPIO_Pin_9  
209 -#define GPRS_RST_Port GPIOB  
210 -#define GPRS_PWR_Pin GPIO_Pin_8  
211 -#define GPRS_PWR_Port GPIOB  
212 -#define GPRS_RX_Pin GPIO_Pin_10  
213 -#define GPRS_RX_Port GPIOB  
214 -#define GPRS_TX_Pin GPIO_Pin_11  
215 -#define GPRS_TX_Port GPIOB  
216 -  
217 -  
218 -//CH395Q  
219 -#define DATA_Pin GPIO_Pin_2  
220 -#define DATA_Port GPIOE  
221 -#define CH_RST_Pin GPIO_Pin_9  
222 -#define CH_RST_Port GPIOC  
223 -#define CH_IRQ_Pin GPIO_Pin_8  
224 -#define CH_IRQ_Port GPIOC  
225 -#define CH_TX_Pin GPIO_Pin_7  
226 -#define CH_TX_Port GPIOC  
227 -#define CH_RX_Pin GPIO_Pin_6  
228 -#define CH_RX_Port GPIOC  
229 -  
230 -  
231 -//电源开关  
232 -typedef enum power_switch  
233 -{  
234 - OFF,  
235 - ON  
236 -}power_switch;  
237 -  
238 -  
239 -  
240 -  
241 -#define IP_MAX_LENGTH 30  
242 -#define GATEWAY_ID_MAX_LENGTH 25  
243 -#define USERNAME_MAX_LENGTH 15  
244 -#define PASSWORD_MAX_LENGTH 15  
245 -#define CLIENT_ID_MAX_LENGTH 26  
246 -  
247 -typedef struct mqtt_server  
248 -{  
249 - char ip[IP_MAX_LENGTH];  
250 - char port[6];  
251 - char gateway_id[GATEWAY_ID_MAX_LENGTH];  
252 - char client_id[CLIENT_ID_MAX_LENGTH];  
253 -  
254 - char user_name[USERNAME_MAX_LENGTH];  
255 - char password[PASSWORD_MAX_LENGTH];  
256 - short iot_id;  
257 -}mqtt_server;  
258 -  
259 -  
260 -  
261 -typedef struct Gateway_struct  
262 -{  
263 - uint8_t dev_id;  
264 - uint32_t mapping_id;  
265 -  
266 - char soft_version[9]; //软件版本V01.02.03  
267 - uint32_t temperature; //芯片温度  
268 - uint32_t firmware_length;  
269 - uint8_t net1_mac[6]; //网口1 Mac地址  
270 - uint8_t net2_mac[6]; //网口2 Mac地址  
271 - uint8_t ota_server_url[80];  
272 - uint8_t ntp_server[30];  
273 -  
274 - mqtt_server mqtt_broker;  
275 -  
276 -}Gateway_struct;  
277 -  
278 -extern Gateway_struct dev_param;  
279 -  
280 -  
281 -  
282 //以下为汇编函数 37 //以下为汇编函数
283 void WFI_SET(void); //执行WFI指令 38 void WFI_SET(void); //执行WFI指令
284 void INTX_DISABLE(void); //关闭所有中断 39 void INTX_DISABLE(void); //关闭所有中断
285 void INTX_ENABLE(void); //开启所有中断 40 void INTX_ENABLE(void); //开启所有中断
286 void MSR_MSP(u32 addr); //设置堆栈地址 41 void MSR_MSP(u32 addr); //设置堆栈地址
287 42
288 -  
289 -  
290 -#define SRAM_INT_ADDR 0x20000000 //Internal SRAM基址  
291 -#define SRAM_CCM_ADDR 0x10000000 //CCM基址  
292 -#define SRAM_EXT_ADDR 0x68000000 //External SRAM基址  
293 -  
294 #define BOOTLOADER_RUN 0x1234ABCD 43 #define BOOTLOADER_RUN 0x1234ABCD
295 #define BOOTLOADER_LOAD 0x4567AABB 44 #define BOOTLOADER_LOAD 0x4567AABB
296 #define BOOTLOADER_DEFAULT 0xFFFFFFFF 45 #define BOOTLOADER_DEFAULT 0xFFFFFFFF
@@ -301,17 +50,17 @@ void MSR_MSP(u32 addr); //设置堆栈地址 @@ -301,17 +50,17 @@ void MSR_MSP(u32 addr); //设置堆栈地址
301 #define APP_LOAD_ADDR 0x08040000 //更新 50 #define APP_LOAD_ADDR 0x08040000 //更新
302 51
303 /********************************************************** 52 /**********************************************************
304 -* SECTOR | BLOCK BASE ADDR | SIZE 53 +* SECTOR | BLOCK BASE ADDR | SIZE
305 * 54 *
306 * sector0 | 0x0800 0000~0x0800 3FFF | 16K //BOOTLOADER 55 * sector0 | 0x0800 0000~0x0800 3FFF | 16K //BOOTLOADER
307 * 56 *
308 -* sector1 | 0x0800 4000~0x0800 7FFF | 16K //FLAG 57 +* sector1 | 0x0800 4000~0x0800 7FFF | 16K //FLAG
309 * 58 *
310 * sector2 | 0x0800 8000~0x0800 BFFF | 16K //PARAM 59 * sector2 | 0x0800 8000~0x0800 BFFF | 16K //PARAM
311 * 60 *
312 * sector3 | 0x0800 C000~0x0800 FFFF | 16K 61 * sector3 | 0x0800 C000~0x0800 FFFF | 16K
313 * 62 *
314 -* sector4 | 0x0801 0000~0x0801 FFFF | 64K //RUN APP 63 +* sector4 | 0x0801 0000~0x0801 FFFF | 64K //RUN APP
315 * 64 *
316 * sector5 | 0x0802 0000~0x0803 FFFF | 128K 65 * sector5 | 0x0802 0000~0x0803 FFFF | 128K
317 * 66 *
@@ -319,8 +68,6 @@ void MSR_MSP(u32 addr); //设置堆栈地址 @@ -319,8 +68,6 @@ void MSR_MSP(u32 addr); //设置堆栈地址
319 * 68 *
320 * sector7 | 0x0806 0000~0x0807 FFFF | 128K 69 * sector7 | 0x0806 0000~0x0807 FFFF | 128K
321 *************************************************************/ 70 *************************************************************/
322 -  
323 -  
324 #endif 71 #endif
325 72
326 73
SYSTEM/usart/debug.c 0 → 100644
  1 +#include "stdio.h"
  2 +#include "usart1.h"
  3 +#include "uart5.h"
  4 +#if 1
  5 +#pragma import(__use_no_semihosting)
  6 +struct __FILE
  7 +{
  8 + int handle;
  9 +};
  10 +
  11 +FILE __stdout;
  12 +void _sys_exit(int x)
  13 +{
  14 + x = x;
  15 +}
  16 +
  17 +#endif
  18 +
  19 +int fputc(int ch, FILE *f) //ÖØ¶¨Òåfputcº¯Êý
  20 +{
  21 + usart1_send_byte((uint8_t) ch);
  22 + uart5_send_byte((uint8_t) ch);
  23 + return ch;
  24 +}
SYSTEM/usart/timer3.c 0 → 100644
  1 +#include "timer3.h"
  2 +Uart_Timer timer3;
  3 +static void TIM3_Init(uint16_t arr,uint16_t psc)//定时器2中断初始化
  4 +{
  5 + TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  6 + NVIC_InitTypeDef NVIC_InitStructure;
  7 +
  8 + RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);//TIM3时钟使能
  9 +
  10 + TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
  11 + TIM_TimeBaseStructure.TIM_Prescaler = psc; //设置用来作为TIMx时钟频率除数的预分频值
  12 + TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
  13 + TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
  14 + TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);
  15 +
  16 + TIM_ClearFlag(TIM3, TIM_FLAG_Update);//解决了定时器初始化后立即进入中断的bug(无论是否定时器启动)!!!!!!!!!!!!!!!!!!!!
  17 +
  18 + TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE ); //使能指定的TIM3中断,允许更新中断
  19 +
  20 + NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
  21 + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //抢占优先级0
  22 + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //子优先级2
  23 + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
  24 + NVIC_Init(&NVIC_InitStructure);
  25 +
  26 + TIM_Cmd(TIM3, DISABLE); //关闭TIM3
  27 +}
  28 +static void TIM3_Start(void)
  29 +{
  30 + TIM_Cmd(TIM3, ENABLE); //关闭TIM3
  31 +}
  32 +static void TIM3_Stop(void)
  33 +{
  34 + TIM_ClearITPendingBit(TIM3, TIM_IT_Update);//清除TIM3更新中断标志
  35 + TIM_Cmd(TIM3, DISABLE); //关闭TIM3
  36 +}
  37 +static void TIM3_Clear(void)
  38 +{
  39 + TIM_SetCounter(TIM3,0);//计数器清空
  40 +}
  41 +void timer3_init(void (*callback)())
  42 +{
  43 + timer3.callback =callback;
  44 + timer3.start=TIM3_Start;
  45 + timer3.stop=TIM3_Stop;
  46 + timer3.timeclear=TIM3_Clear;
  47 +
  48 + TIM3_Init(10*20-1,7200-1); //设置最大超时时间为40ms
  49 +}
  50 +void TIM3_IRQHandler(void)//定时器4中断服务程序
  51 +{
  52 + if(TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)//是更新中断
  53 + {
  54 + timer3.stop();
  55 + timer3.callback();
  56 + }
  57 + else
  58 + {
  59 + }
  60 +}
  61 +
  62 +
SYSTEM/usart/timer3.h 0 → 100644
  1 +#ifndef _TIMER4_H
  2 +#define _TIMER4_H
  3 +
  4 +#include "stm32f4xx.h"
  5 +#include "uart.h"
  6 +#include "stdint.h"
  7 +extern Uart_Timer timer3;
  8 +extern void timer3_init(void (*callback)());
  9 +
  10 +#endif
  11 +
SYSTEM/usart/timer4.c 0 → 100644
  1 +#include "timer4.h"
  2 +Uart_Timer timer4;
  3 +static void TIM4_Init(uint16_t arr,uint16_t psc)//定时器2中断初始化
  4 +{
  5 + TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
  6 + NVIC_InitTypeDef NVIC_InitStructure;
  7 +
  8 + RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);//TIM4时钟使能
  9 +
  10 + TIM_TimeBaseStructure.TIM_Period = arr; //设置在下一个更新事件装入活动的自动重装载寄存器周期的值
  11 + TIM_TimeBaseStructure.TIM_Prescaler = psc; //设置用来作为TIMx时钟频率除数的预分频值
  12 + TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
  13 + TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
  14 + TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);
  15 +
  16 + TIM_ClearFlag(TIM4, TIM_FLAG_Update);//解决了定时器初始化后立即进入中断的bug(无论是否定时器启动)!!!!!!!!!!!!!!!!!!!!
  17 +
  18 + TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE ); //使能指定的TIM4中断,允许更新中断
  19 +
  20 + NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
  21 + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; //抢占优先级0
  22 + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 2; //子优先级2
  23 + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
  24 + NVIC_Init(&NVIC_InitStructure);
  25 +
  26 + TIM_Cmd(TIM4, DISABLE); //关闭TIM4
  27 +}
  28 +static void TIM4_Start(void)
  29 +{
  30 + TIM_Cmd(TIM4, ENABLE); //关闭TIM4
  31 +}
  32 +static void TIM4_Stop(void)
  33 +{
  34 + TIM_ClearITPendingBit(TIM4, TIM_IT_Update);//清除TIM4更新中断标志
  35 + TIM_Cmd(TIM4, DISABLE); //关闭TIM4
  36 +}
  37 +static void TIM4_Clear(void)
  38 +{
  39 + TIM_SetCounter(TIM4,0);//计数器清空
  40 +}
  41 +void timer4_init(void (*callback)())
  42 +{
  43 + timer4.callback =callback;
  44 + timer4.start=TIM4_Start;
  45 + timer4.stop=TIM4_Stop;
  46 + timer4.timeclear=TIM4_Clear;
  47 +
  48 + TIM4_Init(10*20-1,7200-1); //设置最大超时时间为40ms
  49 +}
  50 +void TIM4_IRQHandler(void)//定时器4中断服务程序
  51 +{
  52 + if(TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)//是更新中断
  53 + {
  54 + timer4.stop();
  55 + timer4.callback();
  56 + }
  57 + else
  58 + {
  59 + }
  60 +}
  61 +
  62 +
SYSTEM/usart/timer4.h 0 → 100644
  1 +#ifndef _TIMER4_H
  2 +#define _TIMER4_H
  3 +
  4 +#include "stm32f4xx.h"
  5 +#include "uart.h"
  6 +#include "stdint.h"
  7 +extern Uart_Timer timer4;
  8 +extern void timer4_init(void (*callback)());
  9 +
  10 +#endif
  11 +
SYSTEM/usart/uart.h 0 → 100644
  1 +#ifndef __UART_H
  2 +#define __UART_H
  3 +#include "stdint.h"
  4 +#define RX_END_BYTE_LEN 2
  5 +#define RX_END_BYTE_1 0x0D
  6 +#define RX_END_BYTE_2 0x0A
  7 +
  8 +typedef enum
  9 +{
  10 + RX_STA_RST = 0x00,
  11 + RX_RECEIVING =0x01,
  12 + RX_FINISHED =0x02,
  13 +}UART_RX_STATUS;
  14 +
  15 +typedef enum
  16 +{
  17 + TX_MODE = 0x00,
  18 + RX_MODE = 0x01,
  19 +}UART_TX_STATUS;
  20 +
  21 +typedef enum
  22 +{
  23 + BAUDRATE_4800 = 4800,
  24 + BAUDRATE_9600 = 9600,
  25 + BAUDRATE_19200 = 19200,
  26 + BAUDRATE_38400 = 38400,
  27 + BAUDRATE_57600 = 57600,
  28 + BAUDRATE_115200 = 115200,
  29 +}BaudRate_Value;
  30 +typedef struct uart_timer{
  31 + void (* start)();
  32 + void (* stop)();
  33 + void (* timeclear)();
  34 + void (* callback)();
  35 +} Uart_Timer;
  36 +
  37 +typedef struct uart_type{
  38 +
  39 + uint8_t * rx_buf;
  40 + uint16_t rx_len;
  41 + uint8_t * tx_buf;
  42 + uint16_t tx_len;
  43 + UART_RX_STATUS rx_status;
  44 + Uart_Timer *rxtimer;
  45 +} Uart_Type;
  46 +
  47 +#endif
  48 +
SYSTEM/usart/uart5.c 0 → 100644
  1 +#include "uart5.h"
  2 +#include "dev.h"
  3 +#include "delay.h"
  4 +#include "string.h"
  5 +#include "timer4.h"
  6 +
  7 +#define UART5_RX_MAX 40
  8 +#define UART5_TX_MAX 40
  9 +uint8_t UART5_RX_BUF[UART5_RX_MAX] = {0}; //接收缓存区
  10 +uint8_t UART5_TX_BUF[UART5_TX_MAX] = {0}; //发送缓存区
  11 +
  12 +Uart_Type u5;
  13 +void uart5_init(void)
  14 +{
  15 + GPIO_InitTypeDef GPIO_InitStructure;
  16 + USART_InitTypeDef USART_InitStructure;
  17 + NVIC_InitTypeDef NVIC_InitStructure;
  18 +
  19 + memset(UART5_RX_BUF,0,UART5_RX_MAX);
  20 + memset(UART5_TX_BUF,0,UART5_TX_MAX);
  21 +
  22 + u5.rx_buf=UART5_RX_BUF;
  23 + u5.tx_buf=UART5_TX_BUF;
  24 + u5.rx_len=0;
  25 + u5.tx_len=0;
  26 + u5.rx_status = RX_STA_RST;
  27 + u5.rxtimer = &timer4;
  28 +
  29 + timer4_init(uart5_rx_finished);
  30 +
  31 +
  32 + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOF,ENABLE);
  33 + RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART5,ENABLE);
  34 +
  35 + GPIO_PinAFConfig(U485_RX_Port,GPIO_PinSource2,GPIO_AF_UART5);
  36 + GPIO_PinAFConfig(U485_TX_Port,GPIO_PinSource12,GPIO_AF_UART5);
  37 +
  38 + GPIO_InitStructure.GPIO_Pin = U485_RX_Pin;
  39 + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  40 + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  41 + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  42 + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  43 + GPIO_Init(U485_RX_Port,&GPIO_InitStructure);
  44 +
  45 + GPIO_InitStructure.GPIO_Pin = U485_TX_Pin;
  46 + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  47 + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  48 + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  49 + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  50 + GPIO_Init(U485_TX_Port,&GPIO_InitStructure);
  51 +
  52 + GPIO_InitStructure.GPIO_Pin = EN_485_Pin_1;
  53 + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  54 + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  55 + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  56 + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  57 + GPIO_Init(EN_485_Port_1,&GPIO_InitStructure);
  58 +
  59 + GPIO_InitStructure.GPIO_Pin = EN_485_Pin_2;
  60 + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  61 + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  62 + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  63 + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  64 + GPIO_Init(EN_485_Port_2,&GPIO_InitStructure);
  65 +
  66 + USART_InitStructure.USART_BaudRate = U5_BAUDRETE;
  67 + USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  68 + USART_InitStructure.USART_StopBits = USART_StopBits_1;
  69 + USART_InitStructure.USART_Parity = USART_Parity_No;
  70 + USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  71 + USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
  72 + USART_Init(UART5, &USART_InitStructure);
  73 +
  74 + USART_Cmd(UART5, ENABLE);
  75 +
  76 + USART_ITConfig(UART5, USART_IT_RXNE, ENABLE);
  77 +
  78 + NVIC_InitStructure.NVIC_IRQChannel = UART5_IRQn;
  79 + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5;
  80 + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  81 + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  82 + NVIC_Init(&NVIC_InitStructure);
  83 +}
  84 +void uart5_rx_mode(void)
  85 +{
  86 + GPIO_ResetBits(EN_485_Port_1,EN_485_Pin_1);
  87 + GPIO_ResetBits(EN_485_Port_2,EN_485_Pin_2);
  88 +}
  89 +void uart5_tx_mode(void)
  90 +{
  91 + GPIO_SetBits(EN_485_Port_1,EN_485_Pin_1);
  92 + GPIO_SetBits(EN_485_Port_2,EN_485_Pin_2);
  93 + delay_ms(1);
  94 +}
  95 +void uart5_send_byte(uint8_t one_byte)
  96 +{
  97 + uart5_tx_mode();
  98 + while(USART_GetFlagStatus(UART5,USART_FLAG_TC)!=SET);//等待发送结束
  99 + USART_SendData(UART5,one_byte); //向串口3发送数据
  100 + uart5_rx_mode();
  101 +}
  102 +void uart5_send_bytes(uint8_t* buf,uint16_t length)
  103 +{
  104 + for(uint16_t i=0;i<length;i++)
  105 + {
  106 + uart5_send_byte(buf[i]);
  107 + }
  108 +}
  109 +void uart5_rx_reset(void)
  110 +{
  111 + u5.rx_len=0;
  112 + memset(u5.rx_buf,0,UART5_RX_MAX);//接收缓存区清零
  113 + u5.rx_status = RX_STA_RST;
  114 +}
  115 +void uart5_rx_receiving(void)
  116 +{
  117 + u5.rxtimer->timeclear();
  118 + u5.rxtimer->start();
  119 + u5.rx_status = RX_RECEIVING;
  120 +}
  121 +void uart5_rx_finished(void)
  122 +{
  123 + u5.rxtimer->stop();
  124 + u5.rx_status=RX_FINISHED;
  125 +}
  126 +void UART5_IRQHandler(void)//串口2中断服务程序
  127 +{
  128 + if(USART_GetITStatus(UART5, USART_IT_RXNE) != RESET)//接收中断
  129 + {
  130 + uint8_t res;
  131 + res = USART_ReceiveData(UART5);//读取接收到的数据
  132 + switch(u5.rx_status)
  133 + {
  134 + case RX_STA_RST:
  135 + {
  136 + u5.rx_len = 0;
  137 + u5.rx_buf[u5.rx_len++] = res;//记录接收到的值
  138 + uart5_rx_receiving();
  139 + } break;
  140 + case RX_RECEIVING:
  141 + {
  142 + u5.rx_buf[u5.rx_len++] = res;//记录接收到的值
  143 + if(u5.rx_len==UART5_RX_MAX)
  144 + {
  145 + uart5_rx_finished();
  146 + }
  147 + else
  148 + {
  149 + uart5_rx_receiving();
  150 + }
  151 + } break;
  152 + case RX_FINISHED:
  153 + {
  154 + } break;
  155 + default: break;
  156 + }
  157 + }
  158 + else
  159 + {
  160 +
  161 + }
  162 +}
SYSTEM/usart/uart5.h 0 → 100644
  1 +#ifndef __UART5_H
  2 +#define __UART5_H
  3 +
  4 +#include "stdint.h"
  5 +#include "uart.h"
  6 +extern Uart_Type u5;
  7 +#define U5_BAUDRETE 115200
  8 +typedef enum
  9 +{
  10 + RS485_WRITE = 0,
  11 + RS485_READ
  12 +}Rs485_Txrx_Type;
  13 +
  14 +void uart5_send_byte(uint8_t one_byte);
  15 +void uart5_send_bytes(uint8_t* buf,uint16_t length);
  16 +void uart5_rx_reset(void);
  17 +void uart5_rx_receiving(void);
  18 +void uart5_rx_finished(void);
  19 +void uart5_init(void);
  20 +
  21 +#endif
  22 +
  23 +
SYSTEM/usart/usart.c deleted
1 -#include "dev.h"  
2 -#include "usart.h"  
3 -#include "timer.h"  
4 -#include "delay.h"  
5 -  
6 -//加入以下代码,支持printf函数,而不需要选择use MicroLIB  
7 -#if 11  
8 -#pragma import(__use_no_semihosting)  
9 -//标准库需要的支持函数  
10 -struct __FILE  
11 -{  
12 - int handle;  
13 -};  
14 -  
15 -FILE __stdout;  
16 -//定义_sys_exit()以避免使用半主机模式  
17 -void _sys_exit(int x)  
18 -{  
19 - x = x;  
20 -}  
21 -  
22 -#endif  
23 -int fputc(int ch, FILE *f) //重定义fputc函数  
24 -{  
25 - while((USART1->SR&0X40)==0);//循环发送,直到发送完毕  
26 - USART1->DR = (uint8_t) ch;  
27 - return ch;  
28 -}  
29 -  
30 -  
31 -  
32 -  
33 -void USART1_Config(uint32_t bound)  
34 -{  
35 - GPIO_InitTypeDef GPIO_InitStructure;  
36 - USART_InitTypeDef USART_InitStructure;  
37 - NVIC_InitTypeDef NVIC_InitStructure;  
38 -  
39 - RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIOA时钟  
40 - RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //使能USART1时钟  
41 -  
42 - GPIO_PinAFConfig(DBG_RXD_Port,GPIO_PinSource9,GPIO_AF_USART1); //GPIOA9复用为USART1  
43 - GPIO_PinAFConfig(DBG_TXD_Port,GPIO_PinSource10,GPIO_AF_USART1); //GPIOA10复用为USART1  
44 -  
45 - GPIO_InitStructure.GPIO_Pin = DBG_RXD_Pin | DBG_TXD_Pin; //GPIOA9与GPIOA10  
46 - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用功能  
47 - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHz  
48 - GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出  
49 - GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉  
50 - GPIO_Init(DBG_RXD_Port,&GPIO_InitStructure); //初始化  
51 -  
52 - USART_InitStructure.USART_BaudRate = bound; //波特率设置  
53 - USART_InitStructure.USART_WordLength = USART_WordLength_8b; //字长为8位数据格式  
54 - USART_InitStructure.USART_StopBits = USART_StopBits_1; //一个停止位  
55 - USART_InitStructure.USART_Parity = USART_Parity_No; //无奇偶校验位  
56 - USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制  
57 - USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发模式  
58 - USART_Init(USART1, &USART_InitStructure); //初始化串口1  
59 -  
60 - USART_Cmd(USART1, ENABLE); //使能串口1  
61 -  
62 - USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //开启相关中断  
63 -  
64 - NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //串口1中断通道  
65 - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 3; //抢占优先级3  
66 - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //子优先级3  
67 - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能  
68 - NVIC_Init(&NVIC_InitStructure); //初始化VIC寄存器  
69 -}  
70 -  
71 -  
72 -  
73 -  
74 -/****************************************************  
75 -*@brief: 串口5配置  
76 -*@param: uart 串口指针  
77 -* bound 串口波特率  
78 -*@retval: 无返回值  
79 -*****************************************************/  
80 -void UART5_Config(uint32_t bound)  
81 -{  
82 - GPIO_InitTypeDef GPIO_InitStructure;  
83 - USART_InitTypeDef USART_InitStructure;  
84 - NVIC_InitTypeDef NVIC_InitStructure;  
85 -  
86 - RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD,ENABLE);  
87 - RCC_APB1PeriphClockCmd(RCC_APB1Periph_UART5,ENABLE);  
88 -  
89 - GPIO_PinAFConfig(U485_RX_Port,GPIO_PinSource2,GPIO_AF_UART5);  
90 - GPIO_PinAFConfig(U485_TX_Port,GPIO_PinSource12,GPIO_AF_UART5);  
91 -  
92 - GPIO_InitStructure.GPIO_Pin = U485_RX_Pin;  
93 - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;  
94 - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
95 - GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  
96 - GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;  
97 - GPIO_Init(U485_RX_Port,&GPIO_InitStructure);  
98 -  
99 - GPIO_InitStructure.GPIO_Pin = U485_TX_Pin;  
100 - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;  
101 - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
102 - GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  
103 - GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;  
104 - GPIO_Init(U485_TX_Port,&GPIO_InitStructure);  
105 -  
106 - GPIO_InitStructure.GPIO_Pin = EN_485_Pin;  
107 - GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;  
108 - GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
109 - GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;  
110 - GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;  
111 - GPIO_Init(EN_485_Port,&GPIO_InitStructure);  
112 -  
113 - UART5_Mode(RS485_READ);  
114 -  
115 - USART_InitStructure.USART_BaudRate = bound;  
116 - USART_InitStructure.USART_WordLength = USART_WordLength_8b;  
117 - USART_InitStructure.USART_StopBits = USART_StopBits_1;  
118 - USART_InitStructure.USART_Parity = USART_Parity_No;  
119 - USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;  
120 - USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;  
121 - USART_Init(UART5, &USART_InitStructure);  
122 -  
123 - USART_Cmd(UART5, ENABLE);  
124 -  
125 - USART_ITConfig(UART5, USART_IT_RXNE, ENABLE);  
126 -  
127 - NVIC_InitStructure.NVIC_IRQChannel = UART5_IRQn;  
128 - NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5;  
129 - NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  
130 - NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  
131 - NVIC_Init(&NVIC_InitStructure);  
132 -}  
133 -  
134 -  
135 -  
136 -  
137 -u32 UART_RX_CNT = 0;  
138 -u8 UART_RX_BUF[USART_REC_LEN] __attribute__ ((at(SRAM_EXT_ADDR))); //EXTI SRAM 200k  
139 -void UART5_IRQHandler(void)  
140 -{  
141 - if(USART_GetITStatus(UART5,USART_IT_RXNE) != RESET)  
142 - {  
143 - UART_RX_BUF[UART_RX_CNT++] = UART5->DR;  
144 - TIM3->CNT = 0;  
145 -  
146 - TIM_Cmd(TIM3,ENABLE);  
147 -  
148 - if(UART_RX_CNT == USART_REC_LEN) //防止溢出  
149 - {  
150 - UART_RX_CNT = 0;  
151 - }  
152 - }  
153 - USART_ClearITPendingBit(UART5, USART_IT_RXNE);  
154 -}  
155 -  
156 -  
157 -  
158 -void UART5_Mode(mode status)  
159 -{  
160 - if(status == RS485_WRITE)  
161 - {  
162 - GPIO_SetBits(EN_485_Port,EN_485_Pin);  
163 - }  
164 - else if(status == RS485_READ)  
165 - {  
166 - GPIO_ResetBits(EN_485_Port,EN_485_Pin);  
167 - }  
168 -}  
169 -  
170 -  
171 -  
172 -  
173 -  
174 -  
175 -/***************************  
176 -*  
177 -*  
178 -*  
179 -****************************/  
180 -void Clear_Uart5_Cache(void)  
181 -{  
182 - memset(UART_RX_BUF,0,UART_RX_CNT);  
183 - UART_RX_CNT = 0;  
184 -}  
185 -  
186 -  
187 -  
188 -void Uart5_Send(uint8_t *data,uint16_t length)  
189 -{  
190 - UART5_Mode(RS485_WRITE);  
191 - Tick_Delay_ms(1);  
192 - uint8_t i ;  
193 -  
194 - for(i=0;i<length;i++)  
195 - {  
196 - USART_SendData(UART5,data[i]);  
197 - while((UART5->SR&0X40)==0);  
198 - }  
199 -  
200 - Tick_Delay_ms(1);  
201 - UART5_Mode(RS485_READ);  
202 -}  
203 -  
204 -  
205 -  
206 -  
207 -  
208 -#if 1  
209 -void USART1_IRQHandler(void) //串口1中断服务程序  
210 -{  
211 -  
212 - USART_ClearITPendingBit(USART1, USART_IT_RXNE);  
213 -}  
214 -#endif  
215 -  
216 -  
217 -  
218 -  
SYSTEM/usart/usart.h deleted
1 -#ifndef __USART_H  
2 -#define __USART_H  
3 -#include "stdio.h"  
4 -#include "dev.h"  
5 -  
6 -  
7 -#define USART_REC_LEN 200*1024 //定义最大接收字节数 120K  
8 -  
9 -  
10 -extern uint8_t UART_RX_BUF[USART_REC_LEN]; //接收缓冲,最大USART_REC_LEN个字节  
11 -extern uint32_t UART_RX_CNT; //接收的字节数  
12 -  
13 -  
14 -  
15 -typedef enum  
16 -{  
17 - RS485_WRITE = 2,  
18 - RS485_READ  
19 -}mode;  
20 -  
21 -  
22 -  
23 -//如果想串口中断接收,请不要注释以下宏定义  
24 -void USART1_Config(uint32_t bound);  
25 -void UART5_Config(uint32_t bound);  
26 -  
27 -void UART5_Mode(mode status);  
28 -void Clear_Uart5_Cache(void);  
29 -  
30 -  
31 -void Uart5_Send(uint8_t *data,uint16_t length);  
32 -#endif  
33 -  
34 -  
SYSTEM/usart/usart1.c 0 → 100644
  1 +#include "usart1.h"
  2 +#include "dev.h"
  3 +#include "delay.h"
  4 +#include "string.h"
  5 +#include "timer3.h"
  6 +
  7 +#define USART1_RX_MAX 40
  8 +#define USART1_TX_MAX 40
  9 +uint8_t USART1_RX_BUF[USART1_RX_MAX] = {0}; //接收缓存区
  10 +uint8_t USART1_TX_BUF[USART1_TX_MAX] = {0}; //发送缓存区
  11 +
  12 +Uart_Type u1;
  13 +void usart1_init(uint32_t bound)
  14 +{
  15 + GPIO_InitTypeDef GPIO_InitStructure;
  16 + USART_InitTypeDef USART_InitStructure;
  17 + NVIC_InitTypeDef NVIC_InitStructure;
  18 +
  19 + memset(USART1_RX_BUF,0,USART1_RX_MAX);
  20 + memset(USART1_TX_BUF,0,USART1_TX_MAX);
  21 +
  22 + u1.rx_buf=USART1_RX_BUF;
  23 + u1.tx_buf=USART1_TX_BUF;
  24 + u1.rx_len=0;
  25 + u1.tx_len=0;
  26 + u1.rx_status = RX_STA_RST;
  27 + u1.rxtimer = &timer3;
  28 +
  29 + timer3_init(usart1_rx_finished);
  30 +
  31 + RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //使能GPIOA时钟
  32 + RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE); //使能USART1时钟
  33 +
  34 + GPIO_PinAFConfig(DBG_RXD_Port,GPIO_PinSource9,GPIO_AF_USART1); //GPIOA9复用为USART1
  35 + GPIO_PinAFConfig(DBG_TXD_Port,GPIO_PinSource10,GPIO_AF_USART1); //GPIOA10复用为USART1
  36 +
  37 + GPIO_InitStructure.GPIO_Pin = DBG_RXD_Pin | DBG_TXD_Pin; //GPIOA9与GPIOA10
  38 + GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //复用功能
  39 + GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //速度50MHz
  40 + GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出
  41 + GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP; //上拉
  42 + GPIO_Init(DBG_RXD_Port,&GPIO_InitStructure); //初始化
  43 +
  44 + USART_InitStructure.USART_BaudRate = U1_BAUDRETE; //波特率设置
  45 + USART_InitStructure.USART_WordLength = USART_WordLength_8b; //字长为8位数据格式
  46 + USART_InitStructure.USART_StopBits = USART_StopBits_1; //一个停止位
  47 + USART_InitStructure.USART_Parity = USART_Parity_No; //无奇偶校验位
  48 + USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//无硬件数据流控制
  49 + USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; //收发模式
  50 + USART_Init(USART1, &USART_InitStructure); //初始化串口1
  51 +
  52 + USART_Cmd(USART1, ENABLE); //使能串口1
  53 +
  54 + USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); //开启相关中断
  55 +
  56 + NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; //串口1中断通道
  57 + NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority= 3; //抢占优先级3
  58 + NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; //子优先级3
  59 + NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //IRQ通道使能
  60 + NVIC_Init(&NVIC_InitStructure); //初始化VIC寄存器
  61 +}
  62 +
  63 +void usart1_send_byte(uint8_t one_byte)
  64 +{
  65 +
  66 + while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//等待发送结束
  67 + USART_SendData(USART1,one_byte); //向串口3发送数据
  68 +
  69 +}
  70 +void usart1_send_bytes(uint8_t* buf,uint16_t length)
  71 +{
  72 + for(uint16_t i=0;i<length;i++)
  73 + {
  74 + usart1_send_byte(buf[i]);
  75 + }
  76 +}
  77 +void usart1_rx_reset(void)
  78 +{
  79 + u1.rx_len=0;
  80 + memset(u1.rx_buf,0,USART1_RX_MAX);//接收缓存区清零
  81 + u1.rx_status = RX_STA_RST;
  82 +}
  83 +void usart1_rx_receiving(void)
  84 +{
  85 + u1.rxtimer->timeclear();
  86 + u1.rxtimer->start();
  87 + u1.rx_status = RX_RECEIVING;
  88 +}
  89 +void usart1_rx_finished(void)
  90 +{
  91 + u1.rxtimer->stop();
  92 + u1.rx_status=RX_FINISHED;
  93 +}
  94 +void USART1_IRQHandler(void)//串口2中断服务程序
  95 +{
  96 + if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)//接收中断
  97 + {
  98 + uint8_t res;
  99 + res = USART_ReceiveData(USART1);//读取接收到的数据
  100 + switch(u1.rx_status)
  101 + {
  102 + case RX_STA_RST:
  103 + {
  104 + u1.rx_len = 0;
  105 + u1.rx_buf[u1.rx_len++] = res;//记录接收到的值
  106 + usart1_rx_receiving();
  107 + } break;
  108 + case RX_RECEIVING:
  109 + {
  110 + u1.rx_buf[u1.rx_len++] = res;//记录接收到的值
  111 + if(u1.rx_len==USART1_RX_MAX)
  112 + {
  113 + usart1_rx_finished();
  114 + }
  115 + else
  116 + {
  117 + usart1_rx_receiving();
  118 + }
  119 + } break;
  120 + case RX_FINISHED:
  121 + {
  122 + } break;
  123 + default: break;
  124 + }
  125 + }
  126 + else
  127 + {
  128 +
  129 + }
  130 +}
SYSTEM/usart/usart1.h 0 → 100644
  1 +#ifndef __USART1_H
  2 +#define __USART1_H
  3 +
  4 +#include "stdint.h"
  5 +#include "stdio.h"
  6 +#include "uart.h"
  7 +
  8 +#define U1_BAUDRETE 115200
  9 +extern Uart_Type u1;
  10 +
  11 +void usart1_send_byte(uint8_t one_byte);
  12 +void usart1_send_bytes(uint8_t* buf,uint16_t length);
  13 +void usart1_rx_reset(void);
  14 +void usart1_rx_receiving(void);
  15 +void usart1_rx_finished(void);
  16 +void uart1_init(void);
  17 +#endif
USER/IAP.uvguix.Admin
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
11 <View> 11 <View>
12 <WinId>38003</WinId> 12 <WinId>38003</WinId>
13 <ViewName>Registers</ViewName> 13 <ViewName>Registers</ViewName>
14 - <TableColWidths>118 112</TableColWidths> 14 + <TableColWidths>140 90</TableColWidths>
15 </View> 15 </View>
16 <View> 16 <View>
17 <WinId>346</WinId> 17 <WinId>346</WinId>
@@ -89,8 +89,8 @@ @@ -89,8 +89,8 @@
89 <flags>2</flags> 89 <flags>2</flags>
90 <showCmd>3</showCmd> 90 <showCmd>3</showCmd>
91 <MinPosition> 91 <MinPosition>
92 - <xPos>-1</xPos>  
93 - <yPos>-1</yPos> 92 + <xPos>-32000</xPos>
  93 + <yPos>-32000</yPos>
94 </MinPosition> 94 </MinPosition>
95 <MaxPosition> 95 <MaxPosition>
96 <xPos>-1</xPos> 96 <xPos>-1</xPos>
@@ -106,8 +106,8 @@ @@ -106,8 +106,8 @@
106 <MDIClientArea> 106 <MDIClientArea>
107 <RegID>0</RegID> 107 <RegID>0</RegID>
108 <MDITabState> 108 <MDITabState>
109 - <Len>242</Len>  
110 - <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000100000000000000010000002D453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C75736172745C75736172742E63000000000775736172742E6300000000C5D4F200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000009030000</Data> 109 + <Len>940</Len>
  110 + <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000B000000000000000100000024453A5C6769745C6769746C61625C426F6F744C6F616465725C555345525C6D61696E2E6300000000066D61696E2E6300000000BCA8E100FFFFFFFF2E453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C75736172745C7573617274312E6800000000087573617274312E6800000000FFDC7800FFFFFFFF2D453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C75736172745C75617274352E63000000000775617274352E6300000000BECEA100FFFFFFFF2E453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C75736172745C7573617274312E6300000000087573617274312E6300000000F0A0A100FFFFFFFF29453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C7379735C6465762E6800000000056465762E6800000000BCA8E100FFFFFFFF22453A5C6769745C6769746C61625C426F6F744C6F616465725C4941505C6961702E6300000000056961702E63000000009CC1B600FFFFFFFF2D453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C75736172745C75617274352E68000000000775617274352E6800000000F7B88600FFFFFFFF22453A5C6769745C6769746C61625C426F6F744C6F616465725C4941505C6961702E6800000000056961702E6800000000D9ADC200FFFFFFFF2F453A5C6769745C6769746C61625C426F6F744C6F616465725C48415244574152455C464C4153485C666C6173682E630000000007666C6173682E6300000000A5C2D700FFFFFFFF34453A5C6769745C6769746C61625C426F6F744C6F616465725C46574C49425C7372635C73746D3332663478785F666C6173682E63000000001173746D3332663478785F666C6173682E6300000000B3A6BE00FFFFFFFF34453A5C6769745C6769746C61625C426F6F744C6F616465725C46574C49425C696E635C73746D3332663478785F666C6173682E68000000001173746D3332663478785F666C6173682E6800000000EAD6A300FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000009030000</Data>
111 </MDITabState> 111 </MDITabState>
112 </MDIClientArea> 112 </MDIClientArea>
113 <ViewEx> 113 <ViewEx>
@@ -1156,7 +1156,7 @@ @@ -1156,7 +1156,7 @@
1156 <Window> 1156 <Window>
1157 <RegID>38007</RegID> 1157 <RegID>38007</RegID>
1158 <PaneID>38007</PaneID> 1158 <PaneID>38007</PaneID>
1159 - <IsVisible>0</IsVisible> 1159 + <IsVisible>1</IsVisible>
1160 <IsFloating>0</IsFloating> 1160 <IsFloating>0</IsFloating>
1161 <IsTabbed>0</IsTabbed> 1161 <IsTabbed>0</IsTabbed>
1162 <IsActivated>0</IsActivated> 1162 <IsActivated>0</IsActivated>
@@ -1795,14 +1795,14 @@ @@ -1795,14 +1795,14 @@
1795 </Window> 1795 </Window>
1796 <DockMan> 1796 <DockMan>
1797 <Len>3312</Len> 1797 <Len>3312</Len>
1798 - <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000F2020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000009030000000000004F000000F0000000F20200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000F202000080070000F60200000100000001000010040000000100000002FDFFFF8E000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000000D03000080070000FD03000000000000F602000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data> 1798 + <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000F2020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000009030000000000004F000000F0000000F20200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000F202000080070000F60200000100000001000010040000000100000002FDFFFF8E000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000000D03000080070000FD03000000000000F602000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
1799 </DockMan> 1799 </DockMan>
1800 <ToolBar> 1800 <ToolBar>
1801 <RegID>59392</RegID> 1801 <RegID>59392</RegID>
1802 <Name>File</Name> 1802 <Name>File</Name>
1803 <Buttons> 1803 <Buttons>
1804 - <Len>2355</Len>  
1805 - <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001561745F687474705F657272636F64655F7061727365960000000000000008001561745F687474705F657272636F64655F70617273650661745F7572630D7572635F73656E645F66756E63054C4F475F45054C4F475F441273746172745F6E6574776F726B5F7461736B067072696E7466077072696E7466280000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000</Data> 1804 + <Len>2419</Len>
  1805 + <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000003525443960000000000000013000D5469636B5F44656C61795F6D73000454494D340674696D657234065553415254350555415254350275350575617274350674696D6572360454494D360452585F520853656E64427974650A454E5F3438355F50696E0B454E5F3438355F506F7274035254430751555243434647042B435351044E554C4C06514D5443464700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000</Data>
1806 </Buttons> 1806 </Buttons>
1807 <OriginalItems> 1807 <OriginalItems>
1808 <Len>1423</Len> 1808 <Len>1423</Len>
@@ -1818,7 +1818,7 @@ @@ -1818,7 +1818,7 @@
1818 <Name>Build</Name> 1818 <Name>Build</Name>
1819 <Buttons> 1819 <Buttons>
1820 <Len>966</Len> 1820 <Len>966</Len>
1821 - <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000034941509600000000000000010003494150000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data> 1821 + <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000002001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000034941509600000000000000010003494150000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
1822 </Buttons> 1822 </Buttons>
1823 <OriginalItems> 1823 <OriginalItems>
1824 <Len>583</Len> 1824 <Len>583</Len>
@@ -1834,7 +1834,7 @@ @@ -1834,7 +1834,7 @@
1834 <Name>Debug</Name> 1834 <Name>Debug</Name>
1835 <Buttons> 1835 <Buttons>
1836 <Len>2373</Len> 1836 <Len>2373</Len>
1837 - <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data> 1837 + <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
1838 </Buttons> 1838 </Buttons>
1839 <OriginalItems> 1839 <OriginalItems>
1840 <Len>898</Len> 1840 <Len>898</Len>
@@ -1860,10 +1860,100 @@ @@ -1860,10 +1860,100 @@
1860 <Size>100</Size> 1860 <Size>100</Size>
1861 <ActiveTab>0</ActiveTab> 1861 <ActiveTab>0</ActiveTab>
1862 <Doc> 1862 <Doc>
1863 - <Name>..\SYSTEM\usart\usart.c</Name> 1863 + <Name>.\main.c</Name>
  1864 + <ColumnNumber>2</ColumnNumber>
  1865 + <TopLine>39</TopLine>
  1866 + <CurrentLine>90</CurrentLine>
  1867 + <Folding>1</Folding>
  1868 + <ContractedFolders>45,61</ContractedFolders>
  1869 + <PaneID>0</PaneID>
  1870 + </Doc>
  1871 + <Doc>
  1872 + <Name>..\SYSTEM\usart\usart1.h</Name>
  1873 + <ColumnNumber>2</ColumnNumber>
  1874 + <TopLine>1</TopLine>
  1875 + <CurrentLine>9</CurrentLine>
  1876 + <Folding>1</Folding>
  1877 + <ContractedFolders></ContractedFolders>
  1878 + <PaneID>0</PaneID>
  1879 + </Doc>
  1880 + <Doc>
  1881 + <Name>..\SYSTEM\usart\uart5.c</Name>
  1882 + <ColumnNumber>21</ColumnNumber>
  1883 + <TopLine>68</TopLine>
  1884 + <CurrentLine>123</CurrentLine>
  1885 + <Folding>1</Folding>
  1886 + <ContractedFolders>84,89,95,102,115,126</ContractedFolders>
  1887 + <PaneID>0</PaneID>
  1888 + </Doc>
  1889 + <Doc>
  1890 + <Name>..\SYSTEM\usart\usart1.c</Name>
  1891 + <ColumnNumber>13</ColumnNumber>
  1892 + <TopLine>1</TopLine>
  1893 + <CurrentLine>1</CurrentLine>
  1894 + <Folding>1</Folding>
  1895 + <ContractedFolders></ContractedFolders>
  1896 + <PaneID>0</PaneID>
  1897 + </Doc>
  1898 + <Doc>
  1899 + <Name>..\SYSTEM\sys\dev.h</Name>
  1900 + <ColumnNumber>0</ColumnNumber>
  1901 + <TopLine>36</TopLine>
  1902 + <CurrentLine>48</CurrentLine>
  1903 + <Folding>1</Folding>
  1904 + <ContractedFolders></ContractedFolders>
  1905 + <PaneID>0</PaneID>
  1906 + </Doc>
  1907 + <Doc>
  1908 + <Name>..\IAP\iap.c</Name>
  1909 + <ColumnNumber>0</ColumnNumber>
  1910 + <TopLine>128</TopLine>
  1911 + <CurrentLine>158</CurrentLine>
  1912 + <Folding>1</Folding>
  1913 + <ContractedFolders></ContractedFolders>
  1914 + <PaneID>0</PaneID>
  1915 + </Doc>
  1916 + <Doc>
  1917 + <Name>..\SYSTEM\usart\uart5.h</Name>
  1918 + <ColumnNumber>20</ColumnNumber>
  1919 + <TopLine>1</TopLine>
  1920 + <CurrentLine>6</CurrentLine>
  1921 + <Folding>1</Folding>
  1922 + <ContractedFolders></ContractedFolders>
  1923 + <PaneID>0</PaneID>
  1924 + </Doc>
  1925 + <Doc>
  1926 + <Name>..\IAP\iap.h</Name>
  1927 + <ColumnNumber>23</ColumnNumber>
  1928 + <TopLine>1</TopLine>
  1929 + <CurrentLine>19</CurrentLine>
  1930 + <Folding>1</Folding>
  1931 + <ContractedFolders></ContractedFolders>
  1932 + <PaneID>0</PaneID>
  1933 + </Doc>
  1934 + <Doc>
  1935 + <Name>..\HARDWARE\FLASH\flash.c</Name>
  1936 + <ColumnNumber>41</ColumnNumber>
  1937 + <TopLine>1</TopLine>
  1938 + <CurrentLine>43</CurrentLine>
  1939 + <Folding>1</Folding>
  1940 + <ContractedFolders></ContractedFolders>
  1941 + <PaneID>0</PaneID>
  1942 + </Doc>
  1943 + <Doc>
  1944 + <Name>..\FWLIB\src\stm32f4xx_flash.c</Name>
  1945 + <ColumnNumber>0</ColumnNumber>
  1946 + <TopLine>454</TopLine>
  1947 + <CurrentLine>469</CurrentLine>
  1948 + <Folding>1</Folding>
  1949 + <ContractedFolders></ContractedFolders>
  1950 + <PaneID>0</PaneID>
  1951 + </Doc>
  1952 + <Doc>
  1953 + <Name>..\FWLIB\inc\stm32f4xx_flash.h</Name>
1864 <ColumnNumber>0</ColumnNumber> 1954 <ColumnNumber>0</ColumnNumber>
1865 - <TopLine>176</TopLine>  
1866 - <CurrentLine>188</CurrentLine> 1955 + <TopLine>123</TopLine>
  1956 + <CurrentLine>135</CurrentLine>
1867 <Folding>1</Folding> 1957 <Folding>1</Folding>
1868 <ContractedFolders></ContractedFolders> 1958 <ContractedFolders></ContractedFolders>
1869 <PaneID>0</PaneID> 1959 <PaneID>0</PaneID>
USER/IAP.uvoptx
@@ -374,8 +374,8 @@ @@ -374,8 +374,8 @@
374 <tvExp>0</tvExp> 374 <tvExp>0</tvExp>
375 <tvExpOptDlg>0</tvExpOptDlg> 375 <tvExpOptDlg>0</tvExpOptDlg>
376 <bDave2>0</bDave2> 376 <bDave2>0</bDave2>
377 - <PathWithFileName>..\SYSTEM\usart\usart.c</PathWithFileName>  
378 - <FilenameWithoutPath>usart.c</FilenameWithoutPath> 377 + <PathWithFileName>..\SYSTEM\delay\delay.c</PathWithFileName>
  378 + <FilenameWithoutPath>delay.c</FilenameWithoutPath>
379 <RteFlg>0</RteFlg> 379 <RteFlg>0</RteFlg>
380 <bShared>0</bShared> 380 <bShared>0</bShared>
381 </File> 381 </File>
@@ -386,8 +386,8 @@ @@ -386,8 +386,8 @@
386 <tvExp>0</tvExp> 386 <tvExp>0</tvExp>
387 <tvExpOptDlg>0</tvExpOptDlg> 387 <tvExpOptDlg>0</tvExpOptDlg>
388 <bDave2>0</bDave2> 388 <bDave2>0</bDave2>
389 - <PathWithFileName>..\SYSTEM\delay\delay.c</PathWithFileName>  
390 - <FilenameWithoutPath>delay.c</FilenameWithoutPath> 389 + <PathWithFileName>..\SYSTEM\CRC\crc.c</PathWithFileName>
  390 + <FilenameWithoutPath>crc.c</FilenameWithoutPath>
391 <RteFlg>0</RteFlg> 391 <RteFlg>0</RteFlg>
392 <bShared>0</bShared> 392 <bShared>0</bShared>
393 </File> 393 </File>
@@ -398,8 +398,8 @@ @@ -398,8 +398,8 @@
398 <tvExp>0</tvExp> 398 <tvExp>0</tvExp>
399 <tvExpOptDlg>0</tvExpOptDlg> 399 <tvExpOptDlg>0</tvExpOptDlg>
400 <bDave2>0</bDave2> 400 <bDave2>0</bDave2>
401 - <PathWithFileName>..\SYSTEM\TIMER\timer.c</PathWithFileName>  
402 - <FilenameWithoutPath>timer.c</FilenameWithoutPath> 401 + <PathWithFileName>..\SYSTEM\usart\uart5.c</PathWithFileName>
  402 + <FilenameWithoutPath>uart5.c</FilenameWithoutPath>
403 <RteFlg>0</RteFlg> 403 <RteFlg>0</RteFlg>
404 <bShared>0</bShared> 404 <bShared>0</bShared>
405 </File> 405 </File>
@@ -410,8 +410,8 @@ @@ -410,8 +410,8 @@
410 <tvExp>0</tvExp> 410 <tvExp>0</tvExp>
411 <tvExpOptDlg>0</tvExpOptDlg> 411 <tvExpOptDlg>0</tvExpOptDlg>
412 <bDave2>0</bDave2> 412 <bDave2>0</bDave2>
413 - <PathWithFileName>..\SYSTEM\CRC\crc.c</PathWithFileName>  
414 - <FilenameWithoutPath>crc.c</FilenameWithoutPath> 413 + <PathWithFileName>..\SYSTEM\usart\timer4.c</PathWithFileName>
  414 + <FilenameWithoutPath>timer4.c</FilenameWithoutPath>
415 <RteFlg>0</RteFlg> 415 <RteFlg>0</RteFlg>
416 <bShared>0</bShared> 416 <bShared>0</bShared>
417 </File> 417 </File>
@@ -422,8 +422,32 @@ @@ -422,8 +422,32 @@
422 <tvExp>0</tvExp> 422 <tvExp>0</tvExp>
423 <tvExpOptDlg>0</tvExpOptDlg> 423 <tvExpOptDlg>0</tvExpOptDlg>
424 <bDave2>0</bDave2> 424 <bDave2>0</bDave2>
425 - <PathWithFileName>..\SYSTEM\fsmc\fsmc.c</PathWithFileName>  
426 - <FilenameWithoutPath>fsmc.c</FilenameWithoutPath> 425 + <PathWithFileName>..\SYSTEM\usart\usart1.c</PathWithFileName>
  426 + <FilenameWithoutPath>usart1.c</FilenameWithoutPath>
  427 + <RteFlg>0</RteFlg>
  428 + <bShared>0</bShared>
  429 + </File>
  430 + <File>
  431 + <GroupNumber>3</GroupNumber>
  432 + <FileNumber>9</FileNumber>
  433 + <FileType>1</FileType>
  434 + <tvExp>0</tvExp>
  435 + <tvExpOptDlg>0</tvExpOptDlg>
  436 + <bDave2>0</bDave2>
  437 + <PathWithFileName>..\SYSTEM\usart\debug.c</PathWithFileName>
  438 + <FilenameWithoutPath>debug.c</FilenameWithoutPath>
  439 + <RteFlg>0</RteFlg>
  440 + <bShared>0</bShared>
  441 + </File>
  442 + <File>
  443 + <GroupNumber>3</GroupNumber>
  444 + <FileNumber>10</FileNumber>
  445 + <FileType>1</FileType>
  446 + <tvExp>0</tvExp>
  447 + <tvExpOptDlg>0</tvExpOptDlg>
  448 + <bDave2>0</bDave2>
  449 + <PathWithFileName>..\SYSTEM\usart\timer3.c</PathWithFileName>
  450 + <FilenameWithoutPath>timer3.c</FilenameWithoutPath>
427 <RteFlg>0</RteFlg> 451 <RteFlg>0</RteFlg>
428 <bShared>0</bShared> 452 <bShared>0</bShared>
429 </File> 453 </File>
@@ -437,7 +461,7 @@ @@ -437,7 +461,7 @@
437 <RteFlg>0</RteFlg> 461 <RteFlg>0</RteFlg>
438 <File> 462 <File>
439 <GroupNumber>4</GroupNumber> 463 <GroupNumber>4</GroupNumber>
440 - <FileNumber>9</FileNumber> 464 + <FileNumber>11</FileNumber>
441 <FileType>2</FileType> 465 <FileType>2</FileType>
442 <tvExp>0</tvExp> 466 <tvExp>0</tvExp>
443 <tvExpOptDlg>0</tvExpOptDlg> 467 <tvExpOptDlg>0</tvExpOptDlg>
@@ -457,7 +481,7 @@ @@ -457,7 +481,7 @@
457 <RteFlg>0</RteFlg> 481 <RteFlg>0</RteFlg>
458 <File> 482 <File>
459 <GroupNumber>5</GroupNumber> 483 <GroupNumber>5</GroupNumber>
460 - <FileNumber>10</FileNumber> 484 + <FileNumber>12</FileNumber>
461 <FileType>1</FileType> 485 <FileType>1</FileType>
462 <tvExp>0</tvExp> 486 <tvExp>0</tvExp>
463 <tvExpOptDlg>0</tvExpOptDlg> 487 <tvExpOptDlg>0</tvExpOptDlg>
@@ -469,7 +493,7 @@ @@ -469,7 +493,7 @@
469 </File> 493 </File>
470 <File> 494 <File>
471 <GroupNumber>5</GroupNumber> 495 <GroupNumber>5</GroupNumber>
472 - <FileNumber>11</FileNumber> 496 + <FileNumber>13</FileNumber>
473 <FileType>1</FileType> 497 <FileType>1</FileType>
474 <tvExp>0</tvExp> 498 <tvExp>0</tvExp>
475 <tvExpOptDlg>0</tvExpOptDlg> 499 <tvExpOptDlg>0</tvExpOptDlg>
@@ -481,7 +505,7 @@ @@ -481,7 +505,7 @@
481 </File> 505 </File>
482 <File> 506 <File>
483 <GroupNumber>5</GroupNumber> 507 <GroupNumber>5</GroupNumber>
484 - <FileNumber>12</FileNumber> 508 + <FileNumber>14</FileNumber>
485 <FileType>1</FileType> 509 <FileType>1</FileType>
486 <tvExp>0</tvExp> 510 <tvExp>0</tvExp>
487 <tvExpOptDlg>0</tvExpOptDlg> 511 <tvExpOptDlg>0</tvExpOptDlg>
@@ -493,7 +517,7 @@ @@ -493,7 +517,7 @@
493 </File> 517 </File>
494 <File> 518 <File>
495 <GroupNumber>5</GroupNumber> 519 <GroupNumber>5</GroupNumber>
496 - <FileNumber>13</FileNumber> 520 + <FileNumber>15</FileNumber>
497 <FileType>1</FileType> 521 <FileType>1</FileType>
498 <tvExp>0</tvExp> 522 <tvExp>0</tvExp>
499 <tvExpOptDlg>0</tvExpOptDlg> 523 <tvExpOptDlg>0</tvExpOptDlg>
@@ -505,7 +529,7 @@ @@ -505,7 +529,7 @@
505 </File> 529 </File>
506 <File> 530 <File>
507 <GroupNumber>5</GroupNumber> 531 <GroupNumber>5</GroupNumber>
508 - <FileNumber>14</FileNumber> 532 + <FileNumber>16</FileNumber>
509 <FileType>1</FileType> 533 <FileType>1</FileType>
510 <tvExp>0</tvExp> 534 <tvExp>0</tvExp>
511 <tvExpOptDlg>0</tvExpOptDlg> 535 <tvExpOptDlg>0</tvExpOptDlg>
@@ -517,7 +541,7 @@ @@ -517,7 +541,7 @@
517 </File> 541 </File>
518 <File> 542 <File>
519 <GroupNumber>5</GroupNumber> 543 <GroupNumber>5</GroupNumber>
520 - <FileNumber>15</FileNumber> 544 + <FileNumber>17</FileNumber>
521 <FileType>1</FileType> 545 <FileType>1</FileType>
522 <tvExp>0</tvExp> 546 <tvExp>0</tvExp>
523 <tvExpOptDlg>0</tvExpOptDlg> 547 <tvExpOptDlg>0</tvExpOptDlg>
@@ -529,7 +553,7 @@ @@ -529,7 +553,7 @@
529 </File> 553 </File>
530 <File> 554 <File>
531 <GroupNumber>5</GroupNumber> 555 <GroupNumber>5</GroupNumber>
532 - <FileNumber>16</FileNumber> 556 + <FileNumber>18</FileNumber>
533 <FileType>1</FileType> 557 <FileType>1</FileType>
534 <tvExp>0</tvExp> 558 <tvExp>0</tvExp>
535 <tvExpOptDlg>0</tvExpOptDlg> 559 <tvExpOptDlg>0</tvExpOptDlg>
@@ -541,7 +565,7 @@ @@ -541,7 +565,7 @@
541 </File> 565 </File>
542 <File> 566 <File>
543 <GroupNumber>5</GroupNumber> 567 <GroupNumber>5</GroupNumber>
544 - <FileNumber>17</FileNumber> 568 + <FileNumber>19</FileNumber>
545 <FileType>1</FileType> 569 <FileType>1</FileType>
546 <tvExp>0</tvExp> 570 <tvExp>0</tvExp>
547 <tvExpOptDlg>0</tvExpOptDlg> 571 <tvExpOptDlg>0</tvExpOptDlg>
@@ -553,7 +577,7 @@ @@ -553,7 +577,7 @@
553 </File> 577 </File>
554 <File> 578 <File>
555 <GroupNumber>5</GroupNumber> 579 <GroupNumber>5</GroupNumber>
556 - <FileNumber>18</FileNumber> 580 + <FileNumber>20</FileNumber>
557 <FileType>1</FileType> 581 <FileType>1</FileType>
558 <tvExp>0</tvExp> 582 <tvExp>0</tvExp>
559 <tvExpOptDlg>0</tvExpOptDlg> 583 <tvExpOptDlg>0</tvExpOptDlg>
@@ -573,7 +597,7 @@ @@ -573,7 +597,7 @@
573 <RteFlg>0</RteFlg> 597 <RteFlg>0</RteFlg>
574 <File> 598 <File>
575 <GroupNumber>6</GroupNumber> 599 <GroupNumber>6</GroupNumber>
576 - <FileNumber>19</FileNumber> 600 + <FileNumber>21</FileNumber>
577 <FileType>1</FileType> 601 <FileType>1</FileType>
578 <tvExp>0</tvExp> 602 <tvExp>0</tvExp>
579 <tvExpOptDlg>0</tvExpOptDlg> 603 <tvExpOptDlg>0</tvExpOptDlg>
@@ -593,7 +617,7 @@ @@ -593,7 +617,7 @@
593 <RteFlg>0</RteFlg> 617 <RteFlg>0</RteFlg>
594 <File> 618 <File>
595 <GroupNumber>7</GroupNumber> 619 <GroupNumber>7</GroupNumber>
596 - <FileNumber>20</FileNumber> 620 + <FileNumber>22</FileNumber>
597 <FileType>5</FileType> 621 <FileType>5</FileType>
598 <tvExp>0</tvExp> 622 <tvExp>0</tvExp>
599 <tvExpOptDlg>0</tvExpOptDlg> 623 <tvExpOptDlg>0</tvExpOptDlg>
USER/IAP.uvprojx
@@ -408,29 +408,39 @@ @@ -408,29 +408,39 @@
408 <FilePath>..\SYSTEM\sys\sys.c</FilePath> 408 <FilePath>..\SYSTEM\sys\sys.c</FilePath>
409 </File> 409 </File>
410 <File> 410 <File>
411 - <FileName>usart.c</FileName> 411 + <FileName>delay.c</FileName>
412 <FileType>1</FileType> 412 <FileType>1</FileType>
413 - <FilePath>..\SYSTEM\usart\usart.c</FilePath> 413 + <FilePath>..\SYSTEM\delay\delay.c</FilePath>
414 </File> 414 </File>
415 <File> 415 <File>
416 - <FileName>delay.c</FileName> 416 + <FileName>crc.c</FileName>
417 <FileType>1</FileType> 417 <FileType>1</FileType>
418 - <FilePath>..\SYSTEM\delay\delay.c</FilePath> 418 + <FilePath>..\SYSTEM\CRC\crc.c</FilePath>
419 </File> 419 </File>
420 <File> 420 <File>
421 - <FileName>timer.c</FileName> 421 + <FileName>uart5.c</FileName>
422 <FileType>1</FileType> 422 <FileType>1</FileType>
423 - <FilePath>..\SYSTEM\TIMER\timer.c</FilePath> 423 + <FilePath>..\SYSTEM\usart\uart5.c</FilePath>
424 </File> 424 </File>
425 <File> 425 <File>
426 - <FileName>crc.c</FileName> 426 + <FileName>timer4.c</FileName>
427 <FileType>1</FileType> 427 <FileType>1</FileType>
428 - <FilePath>..\SYSTEM\CRC\crc.c</FilePath> 428 + <FilePath>..\SYSTEM\usart\timer4.c</FilePath>
  429 + </File>
  430 + <File>
  431 + <FileName>usart1.c</FileName>
  432 + <FileType>1</FileType>
  433 + <FilePath>..\SYSTEM\usart\usart1.c</FilePath>
  434 + </File>
  435 + <File>
  436 + <FileName>debug.c</FileName>
  437 + <FileType>1</FileType>
  438 + <FilePath>..\SYSTEM\usart\debug.c</FilePath>
429 </File> 439 </File>
430 <File> 440 <File>
431 - <FileName>fsmc.c</FileName> 441 + <FileName>timer3.c</FileName>
432 <FileType>1</FileType> 442 <FileType>1</FileType>
433 - <FilePath>..\SYSTEM\fsmc\fsmc.c</FilePath> 443 + <FilePath>..\SYSTEM\usart\timer3.c</FilePath>
434 </File> 444 </File>
435 </Files> 445 </Files>
436 </Group> 446 </Group>
USER/main.c
@@ -8,40 +8,35 @@ @@ -8,40 +8,35 @@
8 * BootLoader预留空间为16K 8 * BootLoader预留空间为16K
9 ****************************************************************************/ 9 ****************************************************************************/
10 #include "delay.h" 10 #include "delay.h"
11 -#include "usart.h" 11 +#include "string.h"
  12 +#include "usart1.h"
  13 +#include "uart5.h"
12 #include "iap.h" 14 #include "iap.h"
13 -#include "flash.h"  
14 -#include "timer.h"  
15 -#include "fsmc.h" 15 +#include "flash.h"
16 16
17 17
18 -  
19 -  
20 int main(void) 18 int main(void)
21 { 19 {
22 uint32_t handle; 20 uint32_t handle;
23 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4 21 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4
24 22
25 - Delay_init();  
26 - USART1_Config(115200); //debug  
27 - UART5_Config(115200); //IAP  
28 - TIM3_Config(2048,2048); //Fram control  
29 - FSMC_SRAM_Init(); //EXT SRAM  
30 -  
31 - printf("\r\n**********BootLoader**********\r\n");  
32 -  
33 - memset(UART_RX_BUF,0,USART_REC_LEN); 23 + delay_init();
  24 + uart1_init();
  25 + uart5_init();
34 26
35 Detection_Update(); //本地升级 27 Detection_Update(); //本地升级
36 28
37 handle = STMFLASH_ReadWord(FLAG_BASE_ADDR); 29 handle = STMFLASH_ReadWord(FLAG_BASE_ADDR);
38 30
  31 + //检测是否OTA
  32 + //检测是否本地
  33 + //执行
39 switch(handle) //选择加载那一部分的固件 34 switch(handle) //选择加载那一部分的固件
40 { 35 {
41 case BOOTLOADER_RUN: //运行段 36 case BOOTLOADER_RUN: //运行段
42 printf("\r\n**********Runing Firmware **********\r\n"); 37 printf("\r\n**********Runing Firmware **********\r\n");
43 38
44 - Tick_Delay_ms(20); 39 + delay_ms(20);
45 Run_Flash_App(APP_RUN_ADDR); 40 Run_Flash_App(APP_RUN_ADDR);
46 break; 41 break;
47 42
@@ -51,12 +46,12 @@ int main(void) @@ -51,12 +46,12 @@ int main(void)
51 #if 0 46 #if 0
52 handle = APP_RUN_ADDR; 47 handle = APP_RUN_ADDR;
53 STMFLASH_Write(APP_BACK_ADDR,(uint32_t *)handle,128*1024); 48 STMFLASH_Write(APP_BACK_ADDR,(uint32_t *)handle,128*1024);
54 - Tick_Delay_ms(10); 49 + delay_ms(10);
55 #endif 50 #endif
56 51
57 handle = APP_LOAD_ADDR; 52 handle = APP_LOAD_ADDR;
58 - STMFLASH_Write(APP_RUN_ADDR,(uint32_t *)handle,128*1024);  
59 - Tick_Delay_ms(10); 53 + STMFLASH_Write(APP_RUN_ADDR,(uint32_t *)handle,192*1024);
  54 + delay_ms(10);
60 55
61 handle = BOOTLOADER_RUN; 56 handle = BOOTLOADER_RUN;
62 STMFLASH_Write(FLAG_BASE_ADDR,(uint32_t *)&handle,4); 57 STMFLASH_Write(FLAG_BASE_ADDR,(uint32_t *)&handle,4);
@@ -70,11 +65,11 @@ int main(void) @@ -70,11 +65,11 @@ int main(void)
70 65
71 handle = APP_BACK_ADDR; 66 handle = APP_BACK_ADDR;
72 STMFLASH_Write(APP_RUN_ADDR,(uint32_t *)handle,128*1024); 67 STMFLASH_Write(APP_RUN_ADDR,(uint32_t *)handle,128*1024);
73 - Tick_Delay_ms(10); 68 + delay_ms(10);
74 69
75 handle = BOOTLOADER_RUN; 70 handle = BOOTLOADER_RUN;
76 STMFLASH_Write(FLAG_BASE_ADDR,(uint32_t *)&handle,4); 71 STMFLASH_Write(FLAG_BASE_ADDR,(uint32_t *)&handle,4);
77 - Tick_Delay_ms(10); 72 + delay_ms(10);
78 73
79 Run_Flash_App(APP_RUN_ADDR); 74 Run_Flash_App(APP_RUN_ADDR);
80 break; 75 break;
@@ -97,6 +92,6 @@ int main(void) @@ -97,6 +92,6 @@ int main(void)
97 while(1) //预留通过网口升级的接口(CH395Q) 92 while(1) //预留通过网口升级的接口(CH395Q)
98 { 93 {
99 printf("\r\n********IDLE********\r\n"); 94 printf("\r\n********IDLE********\r\n");
100 - Tick_Delay_ms(5000); 95 + delay_ms(5000);
101 } 96 }
102 } 97 }