You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
454 lines
17 KiB
454 lines
17 KiB
C51 COMPILER V9.54 MSP_UARTN 09/06/2024 14:32:50 PAGE 1
|
|
|
|
|
|
C51 COMPILER V9.54, COMPILATION OF MODULE MSP_UARTN
|
|
OBJECT MODULE PLACED IN ..\out\msp_uartN.obj
|
|
COMPILER INVOKED BY: E:\KeilC51\C51\BIN\C51.EXE ..\source\msp\uart\msp_uartN.c LARGE OMF2 OPTIMIZE(0,SIZE) BROWSE ORDER
|
|
-NOINTPROMOTE INCDIR(..\source\bsp;..\source\msp;..\source\app;..\source\clib;..\source\cpu;..\source\ctask;..\source\tpc
|
|
-;..\source\asp;..\source\debug;..\source\msp\uart;..\source\msp\simiic;..\source\bsp\oled;..\source\bsp\TTSSbsp) DEBUG P
|
|
-RINT(..\out\msp_uartN.lst) TABS(2) OBJECT(..\out\msp_uartN.obj)
|
|
|
|
line level source
|
|
|
|
1 //////////////////////////////////////////////////////////////////////////
|
|
2 /// COPYRIGHT NOTICE
|
|
3 /// Copyright (c) 2023 CCSENS
|
|
4 /// All rights reserved.
|
|
5 ///
|
|
6 /// @file main.c
|
|
7 /// @brief main app
|
|
8 ///
|
|
9 ///(本文件实现的功能的详述)
|
|
10 ///
|
|
11 /// @version 1.1 CCsens technology
|
|
12 /// @author CC
|
|
13 /// @date 20150102
|
|
14 ///
|
|
15 ///
|
|
16 /// 修订说明:最�版本
|
|
17 /// Modified by:
|
|
18 /// Modified date:
|
|
19 /// Version:
|
|
20 /// Descriptions:
|
|
21 // 20160413 CC-ACC-VH02
|
|
22
|
|
23 /*****************************************************************************
|
|
24 update by cc @20220305
|
|
25
|
|
26
|
|
27
|
|
28 针对多串å�£ å’Œ å�•一串å�£ 有区别 æ¯�个串å�£æ˜¯ç‹¬ç«‹çš„还是分开的有讲究 程åº�是å¤�æ�
|
|
-‚的还是软件应用简å�•是
|
|
29 个需�平衡的事情.
|
|
30
|
|
31 clib/clib.c:
|
|
32 公用的函数 å’Œç¡¬ä»¶æ— å…³
|
|
33 放置串行模å¼�(串å�£ç‰å…¶ä»–通讯总线类的输出)输出的函数,
|
|
34 一些覆盖模å¼�输出的(lcdç‰å›ºå±�输出的)的也å�¯ä½¿ç”¨
|
|
35 void Lc_print(void (*L0pf_send_uc)(char ww), char *dat,...)
|
|
36 -----------------------------------------------------------------------------------------
|
|
37
|
|
38 app
|
|
39 asp
|
|
40 bsp
|
|
41
|
|
42 debug 选择哪个串�作为debug�议的通讯
|
|
43
|
|
44 -----------------------------------------------------------------------------------------
|
|
45
|
|
46 -----------------------------------------------------------------------------------------
|
|
47 tpc/: 接收到的数æ�®æ”¾å…¥åˆ°æŒ‡å�‘特定å��议的缓å˜ä¸ï¼Œå’Œå��è®®çš„æ ¼å¼�有关 一般分为 æ
|
|
-‡å¤´å¼�æˆ–è€…æ ‡å°¾å¼�
|
|
48 公用的串�通讯定义
|
|
49 struct _s_uart_rec_ 的公共�议包(关键的结构体)的声明------struct _s_uart_rec_
|
|
50 void L1_uart_2buf(struct _s_uart_rec_ *p)串行数æ�®ä¿�å˜åˆ°æŒ‡å�‘特定å��议的缓冲ä¸
|
|
C51 COMPILER V9.54 MSP_UARTN 09/06/2024 14:32:50 PAGE 2
|
|
|
|
51
|
|
52 --------------------------------------------------------------------------------------------
|
|
53 msp/msp_uartx.c
|
|
54
|
|
55
|
|
56
|
|
57
|
|
58
|
|
59 --------------------------------------------------------------------------------------------
|
|
60 msp/msp_uart0.c 底层代ç � å’Œcpu相关 缓å˜å�‘é€�也放在里é�¢
|
|
61 L0_UART0_Init
|
|
62 UART0_IRQHandler
|
|
63 L0_Usend_uc------UserDef
|
|
64 -----------------------------------------------------------------------------------------
|
|
65 ********************************************************************************/
|
|
66
|
|
67 #include "msp_uartN.h"
|
|
*** WARNING C320 IN LINE 51 OF ..\source\bsp\TTSSbsp\bsp_config.h: "MainFre_22M"
|
|
68
|
|
69 TS_Uart_Send_ ts_Usend[SERIAL_MAX_NUM]= {0};
|
|
70 TS_send_buf_ ts_Usendbuf;
|
|
71
|
|
72 TS_rec_road_ ts_Urec[SERIAL_MAX_NUM]= {0};
|
|
73 TS_rec_buf_ ts_Urecbuf;
|
|
74 code vU16 S_send_max[4]=
|
|
75 {
|
|
76 D_send1_max,
|
|
77 D_send2_max,
|
|
78 D_send3_max,
|
|
79 D_send4_max
|
|
80 };
|
|
81
|
|
82 void L0_uartN_set(U8 uartx,U8 x)
|
|
83 {
|
|
84 1 switch(uartx)
|
|
85 1 {
|
|
86 2 case 0:
|
|
87 2 SBUF = (x);
|
|
88 2 break;
|
|
89 2 case 1:
|
|
90 2 S2BUF = (x);///
|
|
91 2 break;
|
|
92 2 case 2:
|
|
93 2 S3BUF = (x);
|
|
94 2 break;
|
|
95 2 case 3:
|
|
96 2 S4BUF = (x);
|
|
97 2 break;
|
|
98 2 default:break;
|
|
99 2 }
|
|
100 1 }
|
|
101 /*
|
|
102 void L0_waitFree_uartN888(U8 uartx)
|
|
103 {
|
|
104 ts_Usend[uartx].over = 0;
|
|
105 while(ts_Usend[uartx].now != 0)
|
|
106 {
|
|
107 #if 10 //��数�特别快时,�些情况下会导致数���出错
|
|
108 if(ts_Usend[uartx].over ++ > 600000)///è¿™æ ·å†™å±…ç„¶å‡ºé”™
|
|
109
|
|
110 {////ts_uart[uartx].p->ok = D_ready;
|
|
111
|
|
C51 COMPILER V9.54 MSP_UARTN 09/06/2024 14:32:50 PAGE 3
|
|
|
|
112 ts_Usend[uartx].now = 0;
|
|
113 break;
|
|
114 }
|
|
115 #endif
|
|
116 }
|
|
117 }
|
|
118 */
|
|
119
|
|
120 void L0_waitFree_uartN(U8 uartx)
|
|
121 {
|
|
122 1 ts_Usend[uartx].over = 0;
|
|
123 1 while(ts_Usend[uartx].now != 0)
|
|
124 1 {
|
|
125 2 #if 10 //��数�特别快时,�些情况下会导致数���出错
|
|
126 2 /// if(ts_uart[uartx].p->over ++ > 600000)///è¿™æ ·å†™å±…ç„¶å‡ºé”™(vU32)
|
|
127 2 ts_Usend[uartx].over ++;
|
|
128 2 if(ts_Usend[uartx].over > 20000)////600 000--4s
|
|
129 2 {////ts_uart[uartx].p->ok = D_ready;
|
|
130 3 ts_Usend[uartx].max = ts_Usend[uartx].now;
|
|
131 3 ts_Usend[uartx].ok = D_ready;
|
|
132 3 // ts_Usend[uartx].over = 0;
|
|
133 3 // ts_Usend[uartx].now = 1;
|
|
134 3 ts_Usend[uartx].now = 0;
|
|
135 3 break;
|
|
136 3 }
|
|
137 2 #endif
|
|
138 2 }
|
|
139 1 }
|
|
140
|
|
141 #define D_485R 0
|
|
142 #define D_485S 1
|
|
143
|
|
144
|
|
145 void L0_uartN_485(U8 uartx,U8 x)
|
|
146 {
|
|
147 1 if (D_485R == x)
|
|
148 1 {
|
|
149 2 switch(uartx)
|
|
150 2 {
|
|
151 3 case 0:
|
|
152 3 // D_UART1_485_RX();
|
|
153 3 break;
|
|
154 3 case 1:
|
|
155 3 break;
|
|
156 3 case 2:
|
|
157 3 break;
|
|
158 3 case 3:
|
|
159 3 //// D_UART4_485_RX();
|
|
160 3 break;
|
|
161 3 default:break;
|
|
162 3 }
|
|
163 2 }else
|
|
164 1 {
|
|
165 2 switch(uartx)
|
|
166 2 {
|
|
167 3 case 0:
|
|
168 3 // D_UART1_485_TX();
|
|
169 3 break;
|
|
170 3 case 1:
|
|
171 3 break;
|
|
172 3 case 2:
|
|
173 3 break;
|
|
C51 COMPILER V9.54 MSP_UARTN 09/06/2024 14:32:50 PAGE 4
|
|
|
|
174 3 case 3:
|
|
175 3 //// D_UART4_485_TX();
|
|
176 3 break;
|
|
177 3 default:break;
|
|
178 3 }
|
|
179 2 }
|
|
180 1
|
|
181 1 }
|
|
182
|
|
183 void L0_uartN_Array(U8 uartx,void *buf,U16 len)
|
|
184 {
|
|
185 1 u16 i;
|
|
186 1
|
|
187 1 L0_waitFree_uartN(uartx);
|
|
188 1
|
|
189 1 L0_uartN_485(uartx,D_485S);
|
|
190 1 ts_Usend[uartx].ok = D_ready;
|
|
191 1 ts_Usend[uartx].over = 0;
|
|
192 1 ts_Usend[uartx].now = 1;
|
|
193 1 if (len > ts_Usend[uartx].max_def)
|
|
194 1 {
|
|
195 2 len = ts_Usend[uartx].max_def - 1;
|
|
196 2 }
|
|
197 1 ts_Usend[uartx].max = len;
|
|
198 1 //将�数buf拷�至内部buf
|
|
199 1 for(i = 0;i < len;i ++)
|
|
200 1 {
|
|
201 2 ts_Usend[uartx].sbuf[i] = ((U8*)buf)[i];
|
|
202 2 }
|
|
203 1 L0_uartN_set(uartx,ts_Usend[uartx].sbuf[0]);
|
|
204 1 }
|
|
205
|
|
206
|
|
207 void L0_uartN_Arraylong(U8 uartx,U8 *buf,U16 usStart,U16 usEnd)
|
|
208 {
|
|
209 1 //L0_uart0_sendbuf(str,strlen(str));
|
|
210 1 U16 t;
|
|
211 1 t = usEnd-usStart;
|
|
212 1 t ++;
|
|
213 1 L0_uartN_Array(uartx,&buf[usStart],t);
|
|
214 1 }
|
|
215
|
|
216
|
|
217 void L0_uartN_uc(U8 uartx,U8 ww)
|
|
218 {
|
|
219 1 L0_uartN_Array(uartx,&ww,1);
|
|
220 1 }
|
|
221
|
|
222 void L0_uartN_us(U8 uartx,vU16 ww)
|
|
223 {
|
|
224 1 U_U16 uStemp;
|
|
225 1 uStemp.word = ww;
|
|
226 1 ts_Usend[uartx].buf3[0] = uStemp.BYTE2.h;
|
|
227 1 ts_Usend[uartx].buf3[1] = uStemp.BYTE2.l;
|
|
228 1 L0_uartN_Array(uartx,ts_Usend[uartx].buf3,2);
|
|
229 1 }
|
|
230
|
|
231 void L0_uartN_ul(U8 uartx,vU32 ww)
|
|
232 {
|
|
233 1 U_U32 uStemp;
|
|
234 1 L0_waitFree_uartN(uartx);
|
|
235 1 uStemp.dWord = ww;
|
|
C51 COMPILER V9.54 MSP_UARTN 09/06/2024 14:32:50 PAGE 5
|
|
|
|
236 1 ts_Usend[uartx].buf3[0] = uStemp.BYTE4.byte0;
|
|
237 1 ts_Usend[uartx].buf3[1] = uStemp.BYTE4.byte1;
|
|
238 1 ts_Usend[uartx].buf3[2] = uStemp.BYTE4.byte2;
|
|
239 1 ts_Usend[uartx].buf3[3] = uStemp.BYTE4.byte3;
|
|
240 1 L0_uartN_Array(uartx,ts_Usend[uartx].buf3,4);
|
|
241 1 }
|
|
242
|
|
243 void L0_uartN_0d0a(U8 uartx)
|
|
244 {
|
|
245 1 L0_waitFree_uartN(uartx);
|
|
246 1 ts_Usend[uartx].buf3[0] = 0x0d;
|
|
247 1 ts_Usend[uartx].buf3[1] = 0x0a;
|
|
248 1 L0_uartN_Array(uartx,ts_Usend[uartx].buf3,2);
|
|
249 1 }
|
|
250
|
|
251 void L0_uartN_uchex(U8 uartx,U8 ww)
|
|
252 {
|
|
253 1 L0_waitFree_uartN(uartx);
|
|
254 1 ts_Usend[uartx].buf3[0] = cguHex2Char[D_uc_high(ww)][1];
|
|
255 1 ts_Usend[uartx].buf3[1] = cguHex2Char[D_uc_low (ww)][1];
|
|
256 1 L0_uartN_Array(uartx,ts_Usend[uartx].buf3,2);
|
|
257 1 }
|
|
258
|
|
259 void L0_uartN_ushex(U8 uartx,vU16 ww)
|
|
260 {
|
|
261 1 U_F16 k;
|
|
262 1 L0_waitFree_uartN(uartx);
|
|
263 1 k.us = ww;
|
|
264 1 ts_Usend[uartx].buf3[0] = cguHex2Char[D_uc_high(k.BYTE2.H)][1];
|
|
265 1 ts_Usend[uartx].buf3[1] = cguHex2Char[D_uc_low (k.BYTE2.H)][1];
|
|
266 1 ts_Usend[uartx].buf3[2] = cguHex2Char[D_uc_high(k.BYTE2.L)][1];
|
|
267 1 ts_Usend[uartx].buf3[3] = cguHex2Char[D_uc_low (k.BYTE2.L)][1];
|
|
268 1 L0_uartN_Array(uartx,ts_Usend[uartx].buf3,4);
|
|
269 1 }
|
|
270
|
|
271 void L0_uartN_ulhex(U8 uartx,U32 ww)
|
|
272 {
|
|
273 1 U_U32 k;
|
|
274 1 L0_waitFree_uartN(uartx);
|
|
275 1 k.dWord = ww;
|
|
276 1 ts_Usend[uartx].buf3[0] = cguHex2Char[D_uc_high(k.BYTE4.byte0)][1];
|
|
277 1 ts_Usend[uartx].buf3[1] = cguHex2Char[D_uc_low (k.BYTE4.byte0)][1];
|
|
278 1 ts_Usend[uartx].buf3[2] = cguHex2Char[D_uc_high(k.BYTE4.byte1)][1];
|
|
279 1 ts_Usend[uartx].buf3[3] = cguHex2Char[D_uc_low (k.BYTE4.byte1)][1];
|
|
280 1 ts_Usend[uartx].buf3[4] = cguHex2Char[D_uc_high(k.BYTE4.byte2)][1];
|
|
281 1 ts_Usend[uartx].buf3[5] = cguHex2Char[D_uc_low (k.BYTE4.byte2)][1];
|
|
282 1 ts_Usend[uartx].buf3[6] = cguHex2Char[D_uc_high(k.BYTE4.byte3)][1];
|
|
283 1 ts_Usend[uartx].buf3[7] = cguHex2Char[D_uc_low (k.BYTE4.byte3)][1];
|
|
284 1 L0_uartN_Array(uartx,ts_Usend[uartx].buf3,8);
|
|
285 1 }
|
|
286
|
|
287 void L0_uartN_str(U8 uartx,U8 *str)
|
|
288 {
|
|
289 1 L0_uartN_Array(uartx,str,Lc_strlen(str));
|
|
290 1 }
|
|
291
|
|
292 void L0_uartN_uchexArray(U8 uartx,vU8 *buf,U16 n)
|
|
293 {
|
|
294 1 int i;
|
|
295 1 for(i=0;i<n;i++)
|
|
296 1 {
|
|
297 2 L0_uartN_uchex(uartx,buf[i]);
|
|
C51 COMPILER V9.54 MSP_UARTN 09/06/2024 14:32:50 PAGE 6
|
|
|
|
298 2 L0_uartN_uc(uartx,' ');
|
|
299 2 }
|
|
300 1 /// L0_uartN_0d0a(uartx);
|
|
301 1 }
|
|
302
|
|
303
|
|
304
|
|
305
|
|
306 void L0_uartN_ushexArray(U8 uartx,vU16 *buf,U16 n)
|
|
307 {
|
|
308 1 int i;
|
|
309 1 for(i=0;i<n;i++)
|
|
310 1 {
|
|
311 2 L0_uartN_ushex(uartx,buf[i]);
|
|
312 2 L0_uartN_uc(uartx,' ');
|
|
313 2 }
|
|
314 1 /// L0_uartN_0d0a(uartx);
|
|
315 1 }
|
|
316
|
|
317
|
|
318 ///////>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//withoutbuf>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
|
319
|
|
320 void L0_uartN_sbuf(U8 uartx)/////cc 2023/04/23--4:23:19 ä¿®æ£bug 调用时放到ts_Usend[uartx].max å¤�å
|
|
-ˆ¶çš„å‰�é�¢
|
|
321 {
|
|
322 1 ts_Usend[uartx].max = 0;
|
|
323 1 ts_Usend[uartx].now = 0;
|
|
324 1 ts_Usend[uartx].ok = D_ready;
|
|
325 1 ts_Usend[uartx].max_def = S_send_max[uartx];
|
|
326 1 switch(uartx)
|
|
327 1 {
|
|
328 2 case 0:
|
|
329 2 ts_Usend[uartx].sbuf = ts_Usendbuf.s1;
|
|
330 2 break;
|
|
331 2 case 1:
|
|
332 2 ts_Usend[uartx].sbuf = ts_Usendbuf.s2;
|
|
333 2 break;
|
|
334 2 case 2:
|
|
335 2 ts_Usend[uartx].sbuf = ts_Usendbuf.s3;
|
|
336 2 break;
|
|
337 2 case 3:
|
|
338 2 ts_Usend[uartx].sbuf = ts_Usendbuf.s4;
|
|
339 2 break;
|
|
340 2 default:break;
|
|
341 2 }
|
|
342 1 }
|
|
343
|
|
344 ////使用内置的usend bufçš„å�‘é€� cc 2023/04/23--4:25:8 调用的时候ä¸�å�¯ä½¿ç”¨æœ¬é€šé�“的缓å
|
|
-˜
|
|
345 void L0_uartN_Array_withoutbuf(U8 uartx,U16 len)
|
|
346 {
|
|
347 1 /// u16 i;
|
|
348 1 L0_waitFree_uartN(uartx);
|
|
349 1
|
|
350 1 L0_uartN_485(uartx,D_485S);
|
|
351 1 L0_uartN_sbuf(uartx);
|
|
352 1
|
|
353 1 if (len > ts_Usend[uartx].max_def)
|
|
354 1 {
|
|
355 2 len = ts_Usend[uartx].max_def - 1;
|
|
356 2 }
|
|
357 1 ts_Usend[uartx].max = len;
|
|
C51 COMPILER V9.54 MSP_UARTN 09/06/2024 14:32:50 PAGE 7
|
|
|
|
358 1 ts_Usend[uartx].now = 1;
|
|
359 1 L0_uartN_set(uartx,ts_Usend[uartx].sbuf[0]);
|
|
360 1 }
|
|
361
|
|
362 ///cc 2023/04/23--4:25:8 调用的时候ä¸�å�¯ä½¿ç”¨æœ¬é€šé�“的缓å˜
|
|
363 void L0_uartN_Arrayhex_withoutbuf(U8 uartx,vU8 *buf,U16 len)
|
|
364 {
|
|
365 1 vU16 i;vU16 t;
|
|
366 1
|
|
367 1 L0_waitFree_uartN(uartx);
|
|
368 1 L0_uartN_sbuf(uartx);
|
|
369 1 if (len > (ts_Usend[uartx].max_def/3))
|
|
370 1 {
|
|
371 2 len = ts_Usend[uartx].max_def/3 - 1;
|
|
372 2 }
|
|
373 1 for(i = 0;i < len;i ++)
|
|
374 1 {
|
|
375 2
|
|
376 2 t = i * 3;
|
|
377 2 ts_Usend[uartx].sbuf[t] = cguHex2Char[D_uc_high(buf[i])][1];/// 34 '3'--33
|
|
378 2 t ++;
|
|
379 2 ts_Usend[uartx].sbuf[t] = cguHex2Char[D_uc_low (buf[i])][1];/// 34 '3'--33
|
|
380 2 t ++;
|
|
381 2 ts_Usend[uartx].sbuf[t] = ' ';
|
|
382 2 t ++;
|
|
383 2
|
|
384 2 }
|
|
385 1 // len 2 11x 22x \0
|
|
386 1 ts_Usend[uartx].sbuf[t] = ' ';
|
|
387 1 t++;
|
|
388 1 ts_Usend[uartx].sbuf[t] = 0x00;
|
|
389 1 L0_uartN_Array_withoutbuf(uartx,t-1);
|
|
390 1
|
|
391 1 }
|
|
392
|
|
393
|
|
394
|
|
395
|
|
396
|
|
397
|
|
398
|
|
399
|
|
400
|
|
401
|
|
402
|
|
403
|
|
404
|
|
405
|
|
|
|
|
|
MODULE INFORMATION: STATIC OVERLAYABLE
|
|
CODE SIZE = 3362 ----
|
|
CONSTANT SIZE = 8 ----
|
|
XDATA SIZE = 392 ----
|
|
PDATA SIZE = ---- ----
|
|
DATA SIZE = ---- ----
|
|
IDATA SIZE = ---- ----
|
|
BIT SIZE = ---- ----
|
|
EDATA SIZE = ---- ----
|
|
HDATA SIZE = ---- ----
|
|
XDATA CONST SIZE = ---- ----
|
|
FAR CONST SIZE = ---- ----
|
|
C51 COMPILER V9.54 MSP_UARTN 09/06/2024 14:32:50 PAGE 8
|
|
|
|
END OF MODULE INFORMATION.
|
|
|
|
|
|
C51 COMPILATION COMPLETE. 1 WARNING(S), 0 ERROR(S)
|
|
|