Commit 0e00ed59d8ded63d236710504fba7d82d055077d

Authored by NightIsDark
1 parent feb212ec

modfly the driver

IAP/iap.c
1 1 #include "iap.h"
2 2 #include "usart.h"
3   -#include "timer.h"
4 3 #include "crc.h"
5 4 #include "flash.h"
6 5 #include "delay.h"
7   -
  6 +#include "usart1.h"
  7 +#include "uart5.h"
8 8  
9 9 iapfun jump2app;
10 10  
... ... @@ -57,17 +57,17 @@ void Local_Update(void)
57 57 uint16_t crc = 0xFFFF;
58 58 uint32_t handle;
59 59  
60   - Tick_Delay_ms(70);
  60 + delay_ms(70);
61 61 Uart5_Send(Manual_Line,sizeof(Manual_Line));
62   - Tick_Delay_ms(70);
  62 + delay_ms(70);
63 63 Uart5_Send(Manual_Labal,sizeof(Manual_Labal));
64   - Tick_Delay_ms(70);
  64 + delay_ms(70);
65 65 Uart5_Send(Manual_Start,sizeof(Manual_Start));
66   - Tick_Delay_ms(70);
  66 + delay_ms(70);
67 67 Uart5_Send(Manual_Ack,sizeof(Manual_Ack));
68   - Tick_Delay_ms(70);
  68 + delay_ms(70);
69 69 Uart5_Send(Manual_Cancel,sizeof(Manual_Cancel));
70   - Tick_Delay_ms(70);
  70 + delay_ms(70);
71 71 Uart5_Send(Manual_Line,sizeof(Manual_Line));
72 72  
73 73  
... ... @@ -140,7 +140,7 @@ void Detection_Update(void)
140 140  
141 141 for(i=0;i<WAIT_TIME;i++)
142 142 {
143   - Tick_Delay_ms(1000);
  143 + delay_ms(1000);
144 144 if(UART_FINISH)
145 145 {
146 146 UART_FINISH= false;
... ... @@ -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 12 //void Local_Update(void);
13 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 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 1 #include "delay.h"
2 2  
3 3  
4   -void Delay_init(void)
  4 +void delay_init(void)
5 5 {
6 6 RCC_ClocksTypeDef RCC_Clocks;
7 7 RCC_GetClocksFreq(&RCC_Clocks);
... ... @@ -16,10 +16,7 @@ void SysTick_Handler(void)
16 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 21 uint32_t curTick = mTick;
25 22  
... ... @@ -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 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 1 #ifndef __DEV_H
2 2 #define __DEV_H
3 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 9 #define U485_RX_Pin GPIO_Pin_2
26 10 #define U485_RX_Port GPIOD
27 11 #define U485_TX_Pin GPIO_Pin_12
28 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 22 #define DBG_RXD_Pin GPIO_Pin_9
34 23 #define DBG_RXD_Port GPIOA
35 24 #define DBG_TXD_Pin GPIO_Pin_10
36 25 #define DBG_TXD_Port GPIOA
37 26  
38   -
39   -
40   -//LED
41 27 #define ARM_LED1_Pin GPIO_Pin_8
42 28 #define ARM_LED1_Port GPIOA
43 29 #define ARM_LED2_Pin GPIO_Pin_8
... ... @@ -48,249 +34,12 @@
48 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 38 void WFI_SET(void); //执行WFI指令
284 39 void INTX_DISABLE(void); //关闭所有中断
285 40 void INTX_ENABLE(void); //开启所有中断
286 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 43 #define BOOTLOADER_RUN 0x1234ABCD
295 44 #define BOOTLOADER_LOAD 0x4567AABB
296 45 #define BOOTLOADER_DEFAULT 0xFFFFFFFF
... ... @@ -301,17 +50,17 @@ void MSR_MSP(u32 addr); //设置堆栈地址
301 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 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 59 * sector2 | 0x0800 8000~0x0800 BFFF | 16K //PARAM
311 60 *
312 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 65 * sector5 | 0x0802 0000~0x0803 FFFF | 128K
317 66 *
... ... @@ -319,8 +68,6 @@ void MSR_MSP(u32 addr); //设置堆栈地址
319 68 *
320 69 * sector7 | 0x0806 0000~0x0807 FFFF | 128K
321 70 *************************************************************/
322   -
323   -
324 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 11 <View>
12 12 <WinId>38003</WinId>
13 13 <ViewName>Registers</ViewName>
14   - <TableColWidths>118 112</TableColWidths>
  14 + <TableColWidths>140 90</TableColWidths>
15 15 </View>
16 16 <View>
17 17 <WinId>346</WinId>
... ... @@ -89,8 +89,8 @@
89 89 <flags>2</flags>
90 90 <showCmd>3</showCmd>
91 91 <MinPosition>
92   - <xPos>-1</xPos>
93   - <yPos>-1</yPos>
  92 + <xPos>-32000</xPos>
  93 + <yPos>-32000</yPos>
94 94 </MinPosition>
95 95 <MaxPosition>
96 96 <xPos>-1</xPos>
... ... @@ -106,8 +106,8 @@
106 106 <MDIClientArea>
107 107 <RegID>0</RegID>
108 108 <MDITabState>
109   - <Len>242</Len>
110   - <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000100000000000000010000002D453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C75736172745C75736172742E63000000000775736172742E6300000000C5D4F200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000009030000</Data>
  109 + <Len>940</Len>
  110 + <Data>0100000004000000010000000100000001000000010000000000000002000000000000000100000001000000000000002800000028000000010000000B000000000000000100000024453A5C6769745C6769746C61625C426F6F744C6F616465725C555345525C6D61696E2E6300000000066D61696E2E6300000000BCA8E100FFFFFFFF2E453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C75736172745C7573617274312E6800000000087573617274312E6800000000FFDC7800FFFFFFFF2D453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C75736172745C75617274352E63000000000775617274352E6300000000BECEA100FFFFFFFF2E453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C75736172745C7573617274312E6300000000087573617274312E6300000000F0A0A100FFFFFFFF29453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C7379735C6465762E6800000000056465762E6800000000BCA8E100FFFFFFFF22453A5C6769745C6769746C61625C426F6F744C6F616465725C4941505C6961702E6300000000056961702E63000000009CC1B600FFFFFFFF2D453A5C6769745C6769746C61625C426F6F744C6F616465725C53595354454D5C75736172745C75617274352E68000000000775617274352E6800000000F7B88600FFFFFFFF22453A5C6769745C6769746C61625C426F6F744C6F616465725C4941505C6961702E6800000000056961702E6800000000D9ADC200FFFFFFFF2F453A5C6769745C6769746C61625C426F6F744C6F616465725C48415244574152455C464C4153485C666C6173682E630000000007666C6173682E6300000000A5C2D700FFFFFFFF34453A5C6769745C6769746C61625C426F6F744C6F616465725C46574C49425C7372635C73746D3332663478785F666C6173682E63000000001173746D3332663478785F666C6173682E6300000000B3A6BE00FFFFFFFF34453A5C6769745C6769746C61625C426F6F744C6F616465725C46574C49425C696E635C73746D3332663478785F666C6173682E68000000001173746D3332663478785F666C6173682E6800000000EAD6A300FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000F4000000660000008007000009030000</Data>
111 111 </MDITabState>
112 112 </MDIClientArea>
113 113 <ViewEx>
... ... @@ -1156,7 +1156,7 @@
1156 1156 <Window>
1157 1157 <RegID>38007</RegID>
1158 1158 <PaneID>38007</PaneID>
1159   - <IsVisible>0</IsVisible>
  1159 + <IsVisible>1</IsVisible>
1160 1160 <IsFloating>0</IsFloating>
1161 1161 <IsTabbed>0</IsTabbed>
1162 1162 <IsActivated>0</IsActivated>
... ... @@ -1795,14 +1795,14 @@
1795 1795 </Window>
1796 1796 <DockMan>
1797 1797 <Len>3312</Len>
1798   - <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000F2020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000009030000000000004F000000F0000000F20200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000F202000080070000F60200000100000001000010040000000100000002FDFFFF8E000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000000D03000080070000FD03000000000000F602000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572000000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
  1798 + <Data>000000000B000000000000000020000000000000FFFFFFFFFFFFFFFFF4000000DF00000090050000E3000000000000000100000004000000010000000000000000000000FFFFFFFF08000000CB00000057010000CC000000F08B00005A01000079070000D601000045890000FFFF02000B004354616262656450616E650020000000000000F40000006600000090050000F6000000F40000004F00000090050000DF0000000000000040280046080000000B446973617373656D626C7900000000CB00000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A6572000000005701000001000000FFFFFFFFFFFFFFFF14506572666F726D616E636520416E616C797A657200000000CC00000001000000FFFFFFFFFFFFFFFF0E4C6F67696320416E616C797A657200000000F08B000001000000FFFFFFFFFFFFFFFF0D436F646520436F766572616765000000005A01000001000000FFFFFFFFFFFFFFFF11496E737472756374696F6E205472616365000000007907000001000000FFFFFFFFFFFFFFFF0F53797374656D20416E616C797A657200000000D601000001000000FFFFFFFFFFFFFFFF104576656E742053746174697374696373000000004589000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFCB00000001000000FFFFFFFFCB000000000000000040000000000000FFFFFFFFFFFFFFFF9C0400004F000000A004000029020000000000000200000004000000010000000000000000000000FFFFFFFF2B000000E2050000CA0900002D8C00002E8C00002F8C0000308C0000318C0000328C0000338C0000348C0000358C0000368C0000378C0000388C0000398C00003A8C00003B8C00003C8C00003D8C00003E8C00003F8C0000408C0000418C000050C3000051C3000052C3000053C3000054C3000055C3000056C3000057C3000058C3000059C300005AC300005BC300005CC300005DC300005EC300005FC3000060C3000061C3000062C3000063C3000001800040000000000000A0040000660000009005000040020000A00400004F000000900500002902000000000000404100462B0000000753796D626F6C7300000000E205000001000000FFFFFFFFFFFFFFFF0A5472616365204461746100000000CA09000001000000FFFFFFFFFFFFFFFF00000000002D8C000001000000FFFFFFFFFFFFFFFF00000000002E8C000001000000FFFFFFFFFFFFFFFF00000000002F8C000001000000FFFFFFFFFFFFFFFF0000000000308C000001000000FFFFFFFFFFFFFFFF0000000000318C000001000000FFFFFFFFFFFFFFFF0000000000328C000001000000FFFFFFFFFFFFFFFF0000000000338C000001000000FFFFFFFFFFFFFFFF0000000000348C000001000000FFFFFFFFFFFFFFFF0000000000358C000001000000FFFFFFFFFFFFFFFF0000000000368C000001000000FFFFFFFFFFFFFFFF0000000000378C000001000000FFFFFFFFFFFFFFFF0000000000388C000001000000FFFFFFFFFFFFFFFF0000000000398C000001000000FFFFFFFFFFFFFFFF00000000003A8C000001000000FFFFFFFFFFFFFFFF00000000003B8C000001000000FFFFFFFFFFFFFFFF00000000003C8C000001000000FFFFFFFFFFFFFFFF00000000003D8C000001000000FFFFFFFFFFFFFFFF00000000003E8C000001000000FFFFFFFFFFFFFFFF00000000003F8C000001000000FFFFFFFFFFFFFFFF0000000000408C000001000000FFFFFFFFFFFFFFFF0000000000418C000001000000FFFFFFFFFFFFFFFF000000000050C3000001000000FFFFFFFFFFFFFFFF000000000051C3000001000000FFFFFFFFFFFFFFFF000000000052C3000001000000FFFFFFFFFFFFFFFF000000000053C3000001000000FFFFFFFFFFFFFFFF000000000054C3000001000000FFFFFFFFFFFFFFFF000000000055C3000001000000FFFFFFFFFFFFFFFF000000000056C3000001000000FFFFFFFFFFFFFFFF000000000057C3000001000000FFFFFFFFFFFFFFFF000000000058C3000001000000FFFFFFFFFFFFFFFF000000000059C3000001000000FFFFFFFFFFFFFFFF00000000005AC3000001000000FFFFFFFFFFFFFFFF00000000005BC3000001000000FFFFFFFFFFFFFFFF00000000005CC3000001000000FFFFFFFFFFFFFFFF00000000005DC3000001000000FFFFFFFFFFFFFFFF00000000005EC3000001000000FFFFFFFFFFFFFFFF00000000005FC3000001000000FFFFFFFFFFFFFFFF000000000060C3000001000000FFFFFFFFFFFFFFFF000000000061C3000001000000FFFFFFFFFFFFFFFF000000000062C3000001000000FFFFFFFFFFFFFFFF000000000063C3000001000000FFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000000000000000000001000000FFFFFFFFE205000001000000FFFFFFFFE2050000000000000010000001000000FFFFFFFFFFFFFFFFF00000004F000000F4000000F2020000010000000200001004000000010000000000000000000000FFFFFFFF05000000ED0300006D000000C3000000C400000073940000018000100000010000000000000066000000F000000009030000000000004F000000F0000000F20200000000000040410056050000000750726F6A65637401000000ED03000001000000FFFFFFFFFFFFFFFF05426F6F6B73010000006D00000001000000FFFFFFFFFFFFFFFF0946756E6374696F6E7301000000C300000001000000FFFFFFFFFFFFFFFF0954656D706C6174657301000000C400000001000000FFFFFFFFFFFFFFFF09526567697374657273000000007394000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFED03000001000000FFFFFFFFED030000000000000080000000000000FFFFFFFFFFFFFFFF0000000015020000900500001902000000000000010000000400000001000000000000000000000000000000000000000000000001000000C6000000FFFFFFFF0F0000008F070000930700009407000095070000960700009007000091070000B5010000B801000038030000B9050000BA050000BB050000BC050000CB09000001800080000000000000000000003002000090050000D4020000000000001902000090050000BD02000000000000404100460F0000001343616C6C20537461636B202B204C6F63616C73000000008F07000001000000FFFFFFFFFFFFFFFF0755415254202331000000009307000001000000FFFFFFFFFFFFFFFF0755415254202332000000009407000001000000FFFFFFFFFFFFFFFF0755415254202333000000009507000001000000FFFFFFFFFFFFFFFF15446562756720287072696E74662920566965776572000000009607000001000000FFFFFFFFFFFFFFFF0757617463682031000000009007000001000000FFFFFFFFFFFFFFFF0757617463682032000000009107000001000000FFFFFFFFFFFFFFFF10547261636520457863657074696F6E7300000000B501000001000000FFFFFFFFFFFFFFFF0E4576656E7420436F756E7465727300000000B801000001000000FFFFFFFFFFFFFFFF09554C494E4B706C7573000000003803000001000000FFFFFFFFFFFFFFFF084D656D6F7279203100000000B905000001000000FFFFFFFFFFFFFFFF084D656D6F7279203200000000BA05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203300000000BB05000001000000FFFFFFFFFFFFFFFF084D656D6F7279203400000000BC05000001000000FFFFFFFFFFFFFFFF105472616365204E617669676174696F6E00000000CB09000001000000FFFFFFFFFFFFFFFFFFFFFFFF0000000001000000000000000000000001000000FFFFFFFFC802000019020000CC020000BD02000000000000020000000400000000000000000000000000000000000000000000000000000002000000C6000000FFFFFFFF8F07000001000000FFFFFFFF8F07000001000000C6000000000000000080000001000000FFFFFFFFFFFFFFFF00000000F202000080070000F60200000100000001000010040000000100000002FDFFFF8E000000FFFFFFFF06000000C5000000C7000000B4010000D2010000CF0100007794000001800080000001000000000000000D03000080070000FD03000000000000F602000080070000E60300000000000040820056060000000C4275696C64204F757470757401000000C500000001000000FFFFFFFFFFFFFFFF0D46696E6420496E2046696C657301000000C700000001000000FFFFFFFFFFFFFFFF0A4572726F72204C69737400000000B401000001000000FFFFFFFFFFFFFFFF0E536F757263652042726F7773657200000000D201000001000000FFFFFFFFFFFFFFFF0E416C6C205265666572656E63657300000000CF01000001000000FFFFFFFFFFFFFFFF0742726F77736572010000007794000001000000FFFFFFFFFFFFFFFF00000000000000000000000000000000000000000000000001000000FFFFFFFFC500000001000000FFFFFFFFC5000000000000000000000000000000</Data>
1799 1799 </DockMan>
1800 1800 <ToolBar>
1801 1801 <RegID>59392</RegID>
1802 1802 <Name>File</Name>
1803 1803 <Buttons>
1804   - <Len>2355</Len>
1805   - <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000004000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000004000900000000000000000000000000000000010000000100000001807B8A0000000004000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE803000000000000000000000000000000000000000000000001000000010000009600000002002050000000001561745F687474705F657272636F64655F7061727365960000000000000008001561745F687474705F657272636F64655F70617273650661745F7572630D7572635F73656E645F66756E63054C4F475F45054C4F475F441273746172745F6E6574776F726B5F7461736B067072696E7466077072696E7466280000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000</Data>
  1804 + <Len>2419</Len>
  1805 + <Data>00200000010000002800FFFF01001100434D4643546F6F6C426172427574746F6E00E100000000000000000000000000000000000000000000000100000001000000018001E100000000000001000000000000000000000000000000000100000001000000018003E1000000000000020000000000000000000000000000000001000000010000000180CD7F0000000000000300000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018023E100000000040004000000000000000000000000000000000100000001000000018022E100000000040005000000000000000000000000000000000100000001000000018025E10000000000000600000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001802BE10000000000000700000000000000000000000000000000010000000100000001802CE10000000004000800000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001807A8A0000000000000900000000000000000000000000000000010000000100000001807B8A0000000000000A00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180D3B00000000000000B000000000000000000000000000000000100000001000000018015B10000000004000C0000000000000000000000000000000001000000010000000180F4B00000000004000D000000000000000000000000000000000100000001000000018036B10000000004000E00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FF88000000000400460000000000000000000000000000000001000000010000000180FE880000000004004500000000000000000000000000000000010000000100000001800B810000000004001300000000000000000000000000000000010000000100000001800C810000000004001400000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180F0880000020000000F000000000000000000000000000000000100000001000000FFFF0100120043555646696E64436F6D626F427574746F6EE8030000000000000000000000000000000000000000000000010000000100000096000000020020500000000003525443960000000000000013000D5469636B5F44656C61795F6D73000454494D340674696D657234065553415254350555415254350275350575617274350674696D6572360454494D360452585F520853656E64427974650A454E5F3438355F50696E0B454E5F3438355F506F7274035254430751555243434647042B435351044E554C4C06514D5443464700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018024E10000000000001100000000000000000000000000000000010000000100000001800A810000000000001200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E2280000002000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B46350000000000000000000000000100000001000000000000000000000001000000020021802280000000000000150000002153746172742F53746F70202644656275672053657373696F6E094374726C2B4635000000000000000000000000010000000100000000000000000000000100000000002180E0010000000000007500000021456E65726779204D6561737572656D656E742026776974686F75742044656275670000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C488000000000000160000000000000000000000000000000001000000010000000180C988000000000400180000000000000000000000000000000001000000010000000180C788000000000000190000000000000000000000000000000001000000010000000180C8880000000000001700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000021804C010000020001001A0000000F2650726F6A6563742057696E646F77000000000000000000000000010000000100000000000000000000000100000008002180DD880000000000001A0000000750726F6A656374000000000000000000000000010000000100000000000000000000000100000000002180DC8B0000000000003A00000005426F6F6B73000000000000000000000000010000000100000000000000000000000100000000002180E18B0000000000003B0000000946756E6374696F6E73000000000000000000000000010000000100000000000000000000000100000000002180E28B000000000000400000000954656D706C6174657300000000000000000000000001000000010000000000000000000000010000000000218018890000000000003D0000000E536F757263652042726F777365720000000000000000000000000100000001000000000000000000000001000000000021800000000000000400FFFFFFFF00000000000000000001000000000000000100000000000000000000000100000000002180D988000000000000390000000C4275696C64204F7574707574000000000000000000000000010000000100000000000000000000000100000000002180E38B000000000000410000000B46696E64204F75747075740000000000000000000000000100000001000000000000000000000001000000000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180FB7F0000000000001B000000000000000000000000000000000100000001000000000000000446696C65B9030000</Data>
1806 1806 </Buttons>
1807 1807 <OriginalItems>
1808 1808 <Len>1423</Len>
... ... @@ -1818,7 +1818,7 @@
1818 1818 <Name>Build</Name>
1819 1819 <Buttons>
1820 1820 <Len>966</Len>
1821   - <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000000001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000034941509600000000000000010003494150000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
  1821 + <Data>00200000010000001000FFFF01001100434D4643546F6F6C426172427574746F6ECF7F0000000000001C0000000000000000000000000000000001000000010000000180D07F0000000002001D000000000000000000000000000000000100000001000000018030800000000000001E000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6EC7040000000000006A0000000C4261746368204275696C2664000000000000000000000000010000000100000000000000000000000100000004000580C7040000000000006A0000000C4261746368204275696C266400000000000000000000000001000000010000000000000000000000010000000000058046070000000000006B0000000D42617463682052656275696C640000000000000000000000000100000001000000000000000000000001000000000005804707000000000000FFFFFFFF0B426174636820436C65616E0100000000000000000000000100000001000000000000000000000001000000000005809E8A0000000000001F0000000F4261746326682053657475702E2E2E000000000000000000000000010000000100000000000000000000000100000000000180D17F0000000004002000000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001804C8A0000000000002100000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000FFFF01001900434D4643546F6F6C426172436F6D626F426F78427574746F6EBA0000000000000000000000000000000000000000000000000100000001000000960000000300205000000000034941509600000000000000010003494150000000000180EB880000000000002200000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180C07F000000000000230000000000000000000000000000000001000000010000000180B08A000000000400240000000000000000000000000000000001000000010000000180A8010000000000004E00000000000000000000000000000000010000000100000001807202000000000000530000000000000000000000000000000001000000010000000180BE010000000000005000000000000000000000000000000000010000000100000000000000054275696C64DC010000</Data>
1822 1822 </Buttons>
1823 1823 <OriginalItems>
1824 1824 <Len>583</Len>
... ... @@ -1834,7 +1834,7 @@
1834 1834 <Name>Debug</Name>
1835 1835 <Buttons>
1836 1836 <Len>2373</Len>
1837   - <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
  1837 + <Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000003400000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
1838 1838 </Buttons>
1839 1839 <OriginalItems>
1840 1840 <Len>898</Len>
... ... @@ -1860,10 +1860,100 @@
1860 1860 <Size>100</Size>
1861 1861 <ActiveTab>0</ActiveTab>
1862 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 1954 <ColumnNumber>0</ColumnNumber>
1865   - <TopLine>176</TopLine>
1866   - <CurrentLine>188</CurrentLine>
  1955 + <TopLine>123</TopLine>
  1956 + <CurrentLine>135</CurrentLine>
1867 1957 <Folding>1</Folding>
1868 1958 <ContractedFolders></ContractedFolders>
1869 1959 <PaneID>0</PaneID>
... ...
USER/IAP.uvoptx
... ... @@ -374,8 +374,8 @@
374 374 <tvExp>0</tvExp>
375 375 <tvExpOptDlg>0</tvExpOptDlg>
376 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 379 <RteFlg>0</RteFlg>
380 380 <bShared>0</bShared>
381 381 </File>
... ... @@ -386,8 +386,8 @@
386 386 <tvExp>0</tvExp>
387 387 <tvExpOptDlg>0</tvExpOptDlg>
388 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 391 <RteFlg>0</RteFlg>
392 392 <bShared>0</bShared>
393 393 </File>
... ... @@ -398,8 +398,8 @@
398 398 <tvExp>0</tvExp>
399 399 <tvExpOptDlg>0</tvExpOptDlg>
400 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 403 <RteFlg>0</RteFlg>
404 404 <bShared>0</bShared>
405 405 </File>
... ... @@ -410,8 +410,8 @@
410 410 <tvExp>0</tvExp>
411 411 <tvExpOptDlg>0</tvExpOptDlg>
412 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 415 <RteFlg>0</RteFlg>
416 416 <bShared>0</bShared>
417 417 </File>
... ... @@ -422,8 +422,32 @@
422 422 <tvExp>0</tvExp>
423 423 <tvExpOptDlg>0</tvExpOptDlg>
424 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 451 <RteFlg>0</RteFlg>
428 452 <bShared>0</bShared>
429 453 </File>
... ... @@ -437,7 +461,7 @@
437 461 <RteFlg>0</RteFlg>
438 462 <File>
439 463 <GroupNumber>4</GroupNumber>
440   - <FileNumber>9</FileNumber>
  464 + <FileNumber>11</FileNumber>
441 465 <FileType>2</FileType>
442 466 <tvExp>0</tvExp>
443 467 <tvExpOptDlg>0</tvExpOptDlg>
... ... @@ -457,7 +481,7 @@
457 481 <RteFlg>0</RteFlg>
458 482 <File>
459 483 <GroupNumber>5</GroupNumber>
460   - <FileNumber>10</FileNumber>
  484 + <FileNumber>12</FileNumber>
461 485 <FileType>1</FileType>
462 486 <tvExp>0</tvExp>
463 487 <tvExpOptDlg>0</tvExpOptDlg>
... ... @@ -469,7 +493,7 @@
469 493 </File>
470 494 <File>
471 495 <GroupNumber>5</GroupNumber>
472   - <FileNumber>11</FileNumber>
  496 + <FileNumber>13</FileNumber>
473 497 <FileType>1</FileType>
474 498 <tvExp>0</tvExp>
475 499 <tvExpOptDlg>0</tvExpOptDlg>
... ... @@ -481,7 +505,7 @@
481 505 </File>
482 506 <File>
483 507 <GroupNumber>5</GroupNumber>
484   - <FileNumber>12</FileNumber>
  508 + <FileNumber>14</FileNumber>
485 509 <FileType>1</FileType>
486 510 <tvExp>0</tvExp>
487 511 <tvExpOptDlg>0</tvExpOptDlg>
... ... @@ -493,7 +517,7 @@
493 517 </File>
494 518 <File>
495 519 <GroupNumber>5</GroupNumber>
496   - <FileNumber>13</FileNumber>
  520 + <FileNumber>15</FileNumber>
497 521 <FileType>1</FileType>
498 522 <tvExp>0</tvExp>
499 523 <tvExpOptDlg>0</tvExpOptDlg>
... ... @@ -505,7 +529,7 @@
505 529 </File>
506 530 <File>
507 531 <GroupNumber>5</GroupNumber>
508   - <FileNumber>14</FileNumber>
  532 + <FileNumber>16</FileNumber>
509 533 <FileType>1</FileType>
510 534 <tvExp>0</tvExp>
511 535 <tvExpOptDlg>0</tvExpOptDlg>
... ... @@ -517,7 +541,7 @@
517 541 </File>
518 542 <File>
519 543 <GroupNumber>5</GroupNumber>
520   - <FileNumber>15</FileNumber>
  544 + <FileNumber>17</FileNumber>
521 545 <FileType>1</FileType>
522 546 <tvExp>0</tvExp>
523 547 <tvExpOptDlg>0</tvExpOptDlg>
... ... @@ -529,7 +553,7 @@
529 553 </File>
530 554 <File>
531 555 <GroupNumber>5</GroupNumber>
532   - <FileNumber>16</FileNumber>
  556 + <FileNumber>18</FileNumber>
533 557 <FileType>1</FileType>
534 558 <tvExp>0</tvExp>
535 559 <tvExpOptDlg>0</tvExpOptDlg>
... ... @@ -541,7 +565,7 @@
541 565 </File>
542 566 <File>
543 567 <GroupNumber>5</GroupNumber>
544   - <FileNumber>17</FileNumber>
  568 + <FileNumber>19</FileNumber>
545 569 <FileType>1</FileType>
546 570 <tvExp>0</tvExp>
547 571 <tvExpOptDlg>0</tvExpOptDlg>
... ... @@ -553,7 +577,7 @@
553 577 </File>
554 578 <File>
555 579 <GroupNumber>5</GroupNumber>
556   - <FileNumber>18</FileNumber>
  580 + <FileNumber>20</FileNumber>
557 581 <FileType>1</FileType>
558 582 <tvExp>0</tvExp>
559 583 <tvExpOptDlg>0</tvExpOptDlg>
... ... @@ -573,7 +597,7 @@
573 597 <RteFlg>0</RteFlg>
574 598 <File>
575 599 <GroupNumber>6</GroupNumber>
576   - <FileNumber>19</FileNumber>
  600 + <FileNumber>21</FileNumber>
577 601 <FileType>1</FileType>
578 602 <tvExp>0</tvExp>
579 603 <tvExpOptDlg>0</tvExpOptDlg>
... ... @@ -593,7 +617,7 @@
593 617 <RteFlg>0</RteFlg>
594 618 <File>
595 619 <GroupNumber>7</GroupNumber>
596   - <FileNumber>20</FileNumber>
  620 + <FileNumber>22</FileNumber>
597 621 <FileType>5</FileType>
598 622 <tvExp>0</tvExp>
599 623 <tvExpOptDlg>0</tvExpOptDlg>
... ...
USER/IAP.uvprojx
... ... @@ -408,29 +408,39 @@
408 408 <FilePath>..\SYSTEM\sys\sys.c</FilePath>
409 409 </File>
410 410 <File>
411   - <FileName>usart.c</FileName>
  411 + <FileName>delay.c</FileName>
412 412 <FileType>1</FileType>
413   - <FilePath>..\SYSTEM\usart\usart.c</FilePath>
  413 + <FilePath>..\SYSTEM\delay\delay.c</FilePath>
414 414 </File>
415 415 <File>
416   - <FileName>delay.c</FileName>
  416 + <FileName>crc.c</FileName>
417 417 <FileType>1</FileType>
418   - <FilePath>..\SYSTEM\delay\delay.c</FilePath>
  418 + <FilePath>..\SYSTEM\CRC\crc.c</FilePath>
419 419 </File>
420 420 <File>
421   - <FileName>timer.c</FileName>
  421 + <FileName>uart5.c</FileName>
422 422 <FileType>1</FileType>
423   - <FilePath>..\SYSTEM\TIMER\timer.c</FilePath>
  423 + <FilePath>..\SYSTEM\usart\uart5.c</FilePath>
424 424 </File>
425 425 <File>
426   - <FileName>crc.c</FileName>
  426 + <FileName>timer4.c</FileName>
427 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 439 </File>
430 440 <File>
431   - <FileName>fsmc.c</FileName>
  441 + <FileName>timer3.c</FileName>
432 442 <FileType>1</FileType>
433   - <FilePath>..\SYSTEM\fsmc\fsmc.c</FilePath>
  443 + <FilePath>..\SYSTEM\usart\timer3.c</FilePath>
434 444 </File>
435 445 </Files>
436 446 </Group>
... ...
USER/main.c
... ... @@ -8,40 +8,35 @@
8 8 * BootLoader预留空间为16K
9 9 ****************************************************************************/
10 10 #include "delay.h"
11   -#include "usart.h"
  11 +#include "string.h"
  12 +#include "usart1.h"
  13 +#include "uart5.h"
12 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 18 int main(void)
21 19 {
22 20 uint32_t handle;
23 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 27 Detection_Update(); //本地升级
36 28  
37 29 handle = STMFLASH_ReadWord(FLAG_BASE_ADDR);
38 30  
  31 + //检测是否OTA
  32 + //检测是否本地
  33 + //执行
39 34 switch(handle) //选择加载那一部分的固件
40 35 {
41 36 case BOOTLOADER_RUN: //运行段
42 37 printf("\r\n**********Runing Firmware **********\r\n");
43 38  
44   - Tick_Delay_ms(20);
  39 + delay_ms(20);
45 40 Run_Flash_App(APP_RUN_ADDR);
46 41 break;
47 42  
... ... @@ -51,12 +46,12 @@ int main(void)
51 46 #if 0
52 47 handle = APP_RUN_ADDR;
53 48 STMFLASH_Write(APP_BACK_ADDR,(uint32_t *)handle,128*1024);
54   - Tick_Delay_ms(10);
  49 + delay_ms(10);
55 50 #endif
56 51  
57 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 56 handle = BOOTLOADER_RUN;
62 57 STMFLASH_Write(FLAG_BASE_ADDR,(uint32_t *)&handle,4);
... ... @@ -70,11 +65,11 @@ int main(void)
70 65  
71 66 handle = APP_BACK_ADDR;
72 67 STMFLASH_Write(APP_RUN_ADDR,(uint32_t *)handle,128*1024);
73   - Tick_Delay_ms(10);
  68 + delay_ms(10);
74 69  
75 70 handle = BOOTLOADER_RUN;
76 71 STMFLASH_Write(FLAG_BASE_ADDR,(uint32_t *)&handle,4);
77   - Tick_Delay_ms(10);
  72 + delay_ms(10);
78 73  
79 74 Run_Flash_App(APP_RUN_ADDR);
80 75 break;
... ... @@ -97,6 +92,6 @@ int main(void)
97 92 while(1) //预留通过网口升级的接口(CH395Q)
98 93 {
99 94 printf("\r\n********IDLE********\r\n");
100   - Tick_Delay_ms(5000);
  95 + delay_ms(5000);
101 96 }
102 97 }
... ...