📄 probe_rs232.lst
字号:
140 * LOCAL GLOBAL VARIABLES
141 *********************************************************************************************************
142 */
143
144 /* -------------- RX state variables ------------------ */
145 static CPU_INT08U ProbeRS232_RxState; /* ... Current state of RX state machine */
\ ProbeRS232_RxState:
\ 00000000 DS8 1
\ 00000001 DS8 1
\ 00000002 DS8 1
\ 00000003 DS8 1
\ 00000004 DS8 1
\ 00000005 DS8 1
\ 00000006 DS8 2
\ 00000008 DS8 2
\ 0000000A DS8 2
\ 0000000C DS8 2
\ 0000000E DS8 2
\ CPU_INT32U __data ProbeRS232_RxCtr
\ ProbeRS232_RxCtr:
\ 00000010 DS8 4
\ CPU_INT32U __data ProbeRS232_RxPktCtr
\ ProbeRS232_RxPktCtr:
\ 00000014 DS8 4
\ CPU_INT32U __data ProbeRS232_TxCtr
\ ProbeRS232_TxCtr:
\ 00000018 DS8 4
\ CPU_INT32U __data ProbeRS232_TxPktCtr
\ ProbeRS232_TxPktCtr:
\ 0000001C DS8 4
146 static CPU_INT16U ProbeRS232_RxRemainLen; /* ... Remaining bytes of data to read */
147
148 /* -------------- RX packet variables ----------------- */
149 static CPU_INT16U ProbeRS232_RxLen; /* ... Length of data in current packet */
\ In segment DATA_Z, align 4, align-sorted
150 static CPU_INT08U ProbeRS232_RxBuf[PROBE_RS232_RX_BUF_SIZE]; /* ... Data of current packet */
\ ProbeRS232_RxBuf:
\ 00000000 DS8 64
151 static CPU_INT08U ProbeRS232_RxChkSum; /* ... Checksum of current packet */
152
153 /* ------------ RX data buffer variable --------------- */
\ In segment DATA_Z, align 2, align-sorted
154 static CPU_INT16U ProbeRS232_RxBufWrIx; /* ... Index of next write; also number of bytes in buf*/
\ ProbeRS232_RxBufWrIx:
\ 00000000 DS8 2
155
156 /* -------------- TX state variables ------------------ */
157 static CPU_INT08U ProbeRS232_TxState; /* ... Current state of TX state machine */
158 static CPU_BOOLEAN ProbeRS232_TxActiveFlag; /* ... Indicates TX is currently active */
159
160 /* -------------- TX packet variables ---------------- */
161 static CPU_INT16U ProbeRS232_TxLen; /* ... Length of data in current packet */
\ In segment DATA_Z, align 4, align-sorted
162 static CPU_INT08U ProbeRS232_TxBuf[PROBE_RS232_TX_BUF_SIZE]; /* ... Data of current packet */
\ ProbeRS232_TxBuf:
\ 00000000 DS8 64
163 static CPU_INT08U ProbeRS232_TxChkSum; /* ... Checksum of current packet */
164
165 /* ----------- TX data buffer variables --------------- */
166 static CPU_BOOLEAN ProbeRS232_TxBufInUse; /* ... Indicates TX buffer currently holds a packet */
167 static CPU_INT16U ProbeRS232_TxBufRdIx; /* ... Index of next read */
168
169
170
171 /*
172 *********************************************************************************************************
173 * LOCAL FUNCTION PROTOTYPES
174 *********************************************************************************************************
175 */
176
177 static CPU_INT16U ProbeRS232_ParseRxPkt(void);
178
179 static void ProbeRS232_RxPkt (void);
180
181 static void ProbeRS232_RxStoINT8U(CPU_INT08U rx_data);
182
183 static void ProbeRS232_RxBufClr (void);
184
185 static void ProbeRS232_TxStart (void);
186
187
188 /*
189 *********************************************************************************************************
190 * LOCAL CONFIGURATION ERRORS
191 *********************************************************************************************************
192 */
193
194
195 /*
196 *********************************************************************************************************
197 *********************************************************************************************************
198 ** Initialization
199 *********************************************************************************************************
200 *********************************************************************************************************
201 */
202
203 /*
204 *********************************************************************************************************
205 * Initialize uC/Probe RS-232 Communication Module
206 *
207 * Description: This function initializes the module.
208 *
209 * Argument(s): baud_rate is the RS-232 baud rate which will be passed to the hardware initialization.
210 *
211 * Returns : None
212 *********************************************************************************************************
213 */
214
\ In segment CODE, align 4, keep-with-next
215 void ProbeRS232_Init (CPU_INT32U baud_rate)
216 {
\ ProbeRS232_Init:
\ 00000000 10B5 PUSH {R4,LR}
\ 00000002 0400 MOVS R4,R0
217 ProbeRS232_RxState = PROBE_RS232_RX_STATE_SD0; /* Setup Rx and Tx state machines */
\ 00000004 0020 MOVS R0,#+0
\ 00000006 .... LDR.N R1,??DataTable4 ;; ProbeRS232_RxState
\ 00000008 0200 MOVS R2,R0
\ 0000000A 0A70 STRB R2,[R1, #+0]
218 ProbeRS232_TxState = PROBE_RS232_TX_STATE_SD0;
\ 0000000C 8A70 STRB R2,[R1, #+2]
219
220 ProbeRS232_TxLen = 0;
\ 0000000E 4881 STRH R0,[R1, #+10]
221 ProbeRS232_TxActiveFlag = DEF_FALSE;
\ 00000010 CA70 STRB R2,[R1, #+3]
222 ProbeRS232_TxBufInUse = DEF_FALSE;
\ 00000012 4871 STRB R0,[R1, #+5]
223
224 #if (PROBE_RS232_PARSE_TASK > 0)
225 ProbeRS232_OS_Init();
\ 00000014 ........ _BLF ProbeRS232_OS_Init,??ProbeRS232_OS_Init??rT
226 #endif
227
228 ProbeRS232_InitTarget(baud_rate); /* Initialize target specific code */
\ 00000018 2000 MOVS R0,R4
\ 0000001A ........ _BLF ProbeRS232_InitTarget,??ProbeRS232_InitTarget??rT
229 }
\ 0000001E 10BD POP {R4,PC} ;; return
230
231
232 /*
233 *********************************************************************************************************
234 *********************************************************************************************************
235 ** Task
236 *********************************************************************************************************
237 *********************************************************************************************************
238 */
239
240 /*
241 *********************************************************************************************************
242 * Task for uC/Probe RS-232 Communication Module
243 *
244 * Description: This task parses the received packet, forms a response, and begins transmission.
245 *
246 * Argument(s): p_arg is passed to ProbeRS232_Task() by OSCreateTask().
247 *
248 * Returns : None
249 *********************************************************************************************************
250 */
251
252 #if (PROBE_RS232_PARSE_TASK > 0)
\ In segment CODE, align 4, keep-with-next
253 void ProbeRS232_Task (void *p_arg)
254 {
\ ProbeRS232_Task:
\ 00000000 00B5 PUSH {LR}
255 CPU_INT16U len;
256
257
258 (void)p_arg;
259
260 while (DEF_TRUE) {
261 ProbeRS232_OS_Pend(); /* Wait for a packet to be received */
\ ??ProbeRS232_Task_0:
\ 00000002 ........ _BLF ProbeRS232_OS_Pend,??ProbeRS232_OS_Pend??rT
262
263 len = ProbeRS232_ParseRxPkt(); /* Parse packet and formulate a response */
\ 00000006 ........ BL ProbeRS232_ParseRxPkt
264
265 if (len > 0) { /* If we have a response */
\ 0000000A 0100 MOVS R1,R0
\ 0000000C F9D0 BEQ.N ??ProbeRS232_Task_0
266 ProbeRS232_TxLen = len;
\ 0000000E 0249 LDR.N R1,??ProbeRS232_Task_1 ;; ProbeRS232_RxState + 10
\ 00000010 0880 STRH R0,[R1, #+0]
267 ProbeRS232_TxStart();
\ 00000012 ........ BL ProbeRS232_TxStart
\ 00000016 F4E7 B.N ??ProbeRS232_Task_0
\ ??ProbeRS232_Task_1:
\ 00000018 ........ DC32 ProbeRS232_RxState + 10
268 }
269 }
270 }
271 #endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -