UCOS_TI_LM3S_Keil
 全部 结构体 文件 函数 变量 类型定义 宏定义 
bsp_ser.c 文件参考
#include <bsp.h>
bsp_ser.c 的引用(Include)关系图:

浏览源代码.

结构体

struct  LM3SXXXX_STRUCT_UART
 

宏定义

#define BSP_SER_MODULE
 
#define BSP_SER_PORT_NBR_MAX   BSP_SER_ID_UART0
 
#define LM3SXXXX_BASE_UART0   0x4000C000uL
 
#define LM3SXXXX_BASE_UART1   0x4000D000uL
 
#define LM3SXXXX_BASE_UART2   0x4000E000uL
 
#define LM3SXXXX_BIT_UARTDR_FE   DEF_BIT_08
 
#define LM3SXXXX_BIT_UARTDR_PE   DEF_BIT_09
 
#define LM3SXXXX_BIT_UARTDR_BE   DEF_BIT_10
 
#define LM3SXXXX_BIT_UARTDR_OE   DEF_BIT_11
 
#define LM3SXXXX_BIT_UARTRSR_FE   DEF_BIT_00
 
#define LM3SXXXX_BIT_UARTRSR_PE   DEF_BIT_01
 
#define LM3SXXXX_BIT_UARTRSR_BE   DEF_BIT_02
 
#define LM3SXXXX_BIT_UARTRSR_OE   DEF_BIT_03
 
#define LM3SXXXX_BIT_UARTFR_CTS   DEF_BIT_00
 
#define LM3SXXXX_BIT_UARTFR_DSR   DEF_BIT_01
 
#define LM3SXXXX_BIT_UARTFR_DCD   DEF_BIT_02
 
#define LM3SXXXX_BIT_UARTFR_BUSY   DEF_BIT_03
 
#define LM3SXXXX_BIT_UARTFR_RXFE   DEF_BIT_04
 
#define LM3SXXXX_BIT_UARTFR_TXFF   DEF_BIT_05
 
#define LM3SXXXX_BIT_UARTFR_RXFF   DEF_BIT_06
 
#define LM3SXXXX_BIT_UARTFR_TXFE   DEF_BIT_07
 
#define LM3SXXXX_BIT_UARTFR_RI   DEF_BIT_08
 
#define LM3SXXXX_BIT_UARTLCRH_BRK   DEF_BIT_00
 
#define LM3SXXXX_BIT_UARTLCRH_PEN   DEF_BIT_01
 
#define LM3SXXXX_BIT_UARTLCRH_EPS   DEF_BIT_02
 
#define LM3SXXXX_BIT_UARTLCRH_STP2   DEF_BIT_03
 
#define LM3SXXXX_BIT_UARTLCRH_FEN   DEF_BIT_04
 
#define LM3SXXXX_BIT_UARTLCRH_WLEN_5   0x00000000
 
#define LM3SXXXX_BIT_UARTLCRH_WLEN_6   0x00000020
 
#define LM3SXXXX_BIT_UARTLCRH_WLEN_7   0x00000040
 
#define LM3SXXXX_BIT_UARTLCRH_WLEN_8   0x00000060
 
#define LM3SXXXX_BIT_UARTCTL_UARTEN   DEF_BIT_00
 
#define LM3SXXXX_BIT_UARTCTL_SIREN   DEF_BIT_01
 
#define LM3SXXXX_BIT_UARTCTL_SIRLP   DEF_BIT_02
 
#define LM3SXXXX_BIT_UARTCTL_SMART   DEF_BIT_03
 
#define LM3SXXXX_BIT_UARTCTL_EOT   DEF_BIT_04
 
#define LM3SXXXX_BIT_UARTCTL_HSE   DEF_BIT_05
 
#define LM3SXXXX_BIT_UARTCTL_LIN   DEF_BIT_06
 
#define LM3SXXXX_BIT_UARTCTL_LBE   DEF_BIT_07
 
#define LM3SXXXX_BIT_UARTCTL_TXE   DEF_BIT_08
 
#define LM3SXXXX_BIT_UARTCTL_RXE   DEF_BIT_09
 
#define LM3SXXXX_BIT_UARTCTL_DTR   DEF_BIT_10
 
#define LM3SXXXX_BIT_UARTCTL_RTS   DEF_BIT_11
 
#define LM3SXXXX_BIT_UARTFLS_RX_1_8   0x00000000
 
#define LM3SXXXX_BIT_UARTFLS_RX_1_4   0x00000080
 
#define LM3SXXXX_BIT_UARTFLS_RX_1_2   0x00000100
 
#define LM3SXXXX_BIT_UARTFLS_RX_3_4   0x00000180
 
#define LM3SXXXX_BIT_UARTFLS_RX_7_8   0x00000200
 
#define LM3SXXXX_BIT_UARTFLS_TX_1_8   0x00000000
 
#define LM3SXXXX_BIT_UARTFLS_TX_1_4   0x00000001
 
#define LM3SXXXX_BIT_UARTFLS_TX_1_2   0x00000002
 
#define LM3SXXXX_BIT_UARTFLS_TX_3_4   0x00000003
 
#define LM3SXXXX_BIT_UARTFLS_TX_7_8   0x00000004
 
#define LM3SXXXX_BIT_UARTINT_RX   DEF_BIT_04
 
#define LM3SXXXX_BIT_UARTINT_TX   DEF_BIT_05
 
#define LM3SXXXX_BIT_UARTINT_RT   DEF_BIT_06
 
#define LM3SXXXX_BIT_UARTINT_FE   DEF_BIT_07
 
#define LM3SXXXX_BIT_UARTINT_PE   DEF_BIT_08
 
#define LM3SXXXX_BIT_UARTINT_BE   DEF_BIT_09
 
#define LM3SXXXX_BIT_UARTINT_OE   DEF_BIT_10
 

函数

CPU_BOOLEAN BSP_SerInit (CPU_DATA port_id, CPU_INT32U baud_rate)
 
CPU_SIZE_T BSP_SerRd (CPU_DATA port_id, void *p_dest, CPU_SIZE_T size)
 
CPU_SIZE_T BSP_SerRdLine (CPU_DATA port_id, void *p_dest, CPU_SIZE_T size)
 
CPU_SIZE_T BSP_SerWr (CPU_DATA port_id, void *p_src, CPU_SIZE_T size)
 
CPU_SIZE_T BSP_SerPrint (CPU_DATA port_id, CPU_CHAR *format,...)
 
int BSP_Print (const char *format,...)
 

结构体说明

struct LM3SXXXX_STRUCT_UART

在文件 bsp_ser.c133 行定义.

LM3SXXXX_STRUCT_UART 的协作图:
Collaboration graph
成员变量
CPU_REG32 DR
CPU_REG32 RSR_ECR
CPU_REG32 Dummy1
CPU_REG32 Dummy2
CPU_REG32 Dummy3
CPU_REG32 Dummy4
CPU_REG32 FR
CPU_REG32 Dummy5
CPU_REG32 ILPR
CPU_REG32 IBRD
CPU_REG32 FBRD
CPU_REG32 LCRH
CPU_REG32 CTL
CPU_REG32 IFLS
CPU_REG32 IM
CPU_REG32 RIS
CPU_REG32 MIS
CPU_REG32 ICR
CPU_REG32 DMACTL

宏定义说明

#define BSP_SER_MODULE

在文件 bsp_ser.c35 行定义.

#define BSP_SER_PORT_NBR_MAX   BSP_SER_ID_UART0

在文件 bsp_ser.c45 行定义.

参考自 BSP_SerInit(), BSP_SerRd(), BSP_SerRdLine() , 以及 BSP_SerWr().

#define LM3SXXXX_BASE_UART0   0x4000C000uL

在文件 bsp_ser.c47 行定义.

参考自 BSP_SerInit(), BSP_SerRd(), BSP_SerRdLine() , 以及 BSP_SerWr().

#define LM3SXXXX_BASE_UART1   0x4000D000uL

在文件 bsp_ser.c48 行定义.

参考自 BSP_SerInit(), BSP_SerRd(), BSP_SerRdLine() , 以及 BSP_SerWr().

#define LM3SXXXX_BASE_UART2   0x4000E000uL

在文件 bsp_ser.c49 行定义.

参考自 BSP_SerInit(), BSP_SerRd(), BSP_SerRdLine() , 以及 BSP_SerWr().

#define LM3SXXXX_BIT_UARTDR_FE   DEF_BIT_08

在文件 bsp_ser.c57 行定义.

#define LM3SXXXX_BIT_UARTDR_PE   DEF_BIT_09

在文件 bsp_ser.c58 行定义.

#define LM3SXXXX_BIT_UARTDR_BE   DEF_BIT_10

在文件 bsp_ser.c59 行定义.

#define LM3SXXXX_BIT_UARTDR_OE   DEF_BIT_11

在文件 bsp_ser.c60 行定义.

#define LM3SXXXX_BIT_UARTRSR_FE   DEF_BIT_00

在文件 bsp_ser.c62 行定义.

#define LM3SXXXX_BIT_UARTRSR_PE   DEF_BIT_01

在文件 bsp_ser.c63 行定义.

#define LM3SXXXX_BIT_UARTRSR_BE   DEF_BIT_02

在文件 bsp_ser.c64 行定义.

#define LM3SXXXX_BIT_UARTRSR_OE   DEF_BIT_03

在文件 bsp_ser.c65 行定义.

#define LM3SXXXX_BIT_UARTFR_CTS   DEF_BIT_00

在文件 bsp_ser.c67 行定义.

#define LM3SXXXX_BIT_UARTFR_DSR   DEF_BIT_01

在文件 bsp_ser.c68 行定义.

#define LM3SXXXX_BIT_UARTFR_DCD   DEF_BIT_02

在文件 bsp_ser.c69 行定义.

#define LM3SXXXX_BIT_UARTFR_BUSY   DEF_BIT_03

在文件 bsp_ser.c70 行定义.

#define LM3SXXXX_BIT_UARTFR_RXFE   DEF_BIT_04

在文件 bsp_ser.c71 行定义.

参考自 BSP_SerRd() , 以及 BSP_SerRdLine().

#define LM3SXXXX_BIT_UARTFR_TXFF   DEF_BIT_05

在文件 bsp_ser.c72 行定义.

参考自 BSP_SerWr().

#define LM3SXXXX_BIT_UARTFR_RXFF   DEF_BIT_06

在文件 bsp_ser.c73 行定义.

#define LM3SXXXX_BIT_UARTFR_TXFE   DEF_BIT_07

在文件 bsp_ser.c74 行定义.

#define LM3SXXXX_BIT_UARTFR_RI   DEF_BIT_08

在文件 bsp_ser.c75 行定义.

#define LM3SXXXX_BIT_UARTLCRH_BRK   DEF_BIT_00

在文件 bsp_ser.c77 行定义.

#define LM3SXXXX_BIT_UARTLCRH_PEN   DEF_BIT_01

在文件 bsp_ser.c78 行定义.

#define LM3SXXXX_BIT_UARTLCRH_EPS   DEF_BIT_02

在文件 bsp_ser.c79 行定义.

#define LM3SXXXX_BIT_UARTLCRH_STP2   DEF_BIT_03

在文件 bsp_ser.c80 行定义.

#define LM3SXXXX_BIT_UARTLCRH_FEN   DEF_BIT_04

在文件 bsp_ser.c81 行定义.

参考自 BSP_SerInit().

#define LM3SXXXX_BIT_UARTLCRH_WLEN_5   0x00000000

在文件 bsp_ser.c82 行定义.

#define LM3SXXXX_BIT_UARTLCRH_WLEN_6   0x00000020

在文件 bsp_ser.c83 行定义.

#define LM3SXXXX_BIT_UARTLCRH_WLEN_7   0x00000040

在文件 bsp_ser.c84 行定义.

#define LM3SXXXX_BIT_UARTLCRH_WLEN_8   0x00000060

在文件 bsp_ser.c85 行定义.

参考自 BSP_SerInit().

#define LM3SXXXX_BIT_UARTCTL_UARTEN   DEF_BIT_00

在文件 bsp_ser.c87 行定义.

参考自 BSP_SerInit().

#define LM3SXXXX_BIT_UARTCTL_SIREN   DEF_BIT_01

在文件 bsp_ser.c88 行定义.

#define LM3SXXXX_BIT_UARTCTL_SIRLP   DEF_BIT_02

在文件 bsp_ser.c89 行定义.

#define LM3SXXXX_BIT_UARTCTL_SMART   DEF_BIT_03

在文件 bsp_ser.c90 行定义.

#define LM3SXXXX_BIT_UARTCTL_EOT   DEF_BIT_04

在文件 bsp_ser.c91 行定义.

#define LM3SXXXX_BIT_UARTCTL_HSE   DEF_BIT_05

在文件 bsp_ser.c92 行定义.

#define LM3SXXXX_BIT_UARTCTL_LIN   DEF_BIT_06

在文件 bsp_ser.c93 行定义.

#define LM3SXXXX_BIT_UARTCTL_LBE   DEF_BIT_07

在文件 bsp_ser.c94 行定义.

#define LM3SXXXX_BIT_UARTCTL_TXE   DEF_BIT_08

在文件 bsp_ser.c95 行定义.

参考自 BSP_SerInit().

#define LM3SXXXX_BIT_UARTCTL_RXE   DEF_BIT_09

在文件 bsp_ser.c96 行定义.

参考自 BSP_SerInit().

#define LM3SXXXX_BIT_UARTCTL_DTR   DEF_BIT_10

在文件 bsp_ser.c97 行定义.

#define LM3SXXXX_BIT_UARTCTL_RTS   DEF_BIT_11

在文件 bsp_ser.c98 行定义.

#define LM3SXXXX_BIT_UARTFLS_RX_1_8   0x00000000

在文件 bsp_ser.c100 行定义.

#define LM3SXXXX_BIT_UARTFLS_RX_1_4   0x00000080

在文件 bsp_ser.c101 行定义.

#define LM3SXXXX_BIT_UARTFLS_RX_1_2   0x00000100

在文件 bsp_ser.c102 行定义.

#define LM3SXXXX_BIT_UARTFLS_RX_3_4   0x00000180

在文件 bsp_ser.c103 行定义.

#define LM3SXXXX_BIT_UARTFLS_RX_7_8   0x00000200

在文件 bsp_ser.c104 行定义.

#define LM3SXXXX_BIT_UARTFLS_TX_1_8   0x00000000

在文件 bsp_ser.c105 行定义.

#define LM3SXXXX_BIT_UARTFLS_TX_1_4   0x00000001

在文件 bsp_ser.c106 行定义.

#define LM3SXXXX_BIT_UARTFLS_TX_1_2   0x00000002

在文件 bsp_ser.c107 行定义.

#define LM3SXXXX_BIT_UARTFLS_TX_3_4   0x00000003

在文件 bsp_ser.c108 行定义.

#define LM3SXXXX_BIT_UARTFLS_TX_7_8   0x00000004

在文件 bsp_ser.c109 行定义.

#define LM3SXXXX_BIT_UARTINT_RX   DEF_BIT_04

在文件 bsp_ser.c111 行定义.

参考自 BSP_SerInit().

#define LM3SXXXX_BIT_UARTINT_TX   DEF_BIT_05

在文件 bsp_ser.c112 行定义.

参考自 BSP_SerInit().

#define LM3SXXXX_BIT_UARTINT_RT   DEF_BIT_06

在文件 bsp_ser.c113 行定义.

参考自 BSP_SerInit().

#define LM3SXXXX_BIT_UARTINT_FE   DEF_BIT_07

在文件 bsp_ser.c114 行定义.

参考自 BSP_SerInit().

#define LM3SXXXX_BIT_UARTINT_PE   DEF_BIT_08

在文件 bsp_ser.c115 行定义.

参考自 BSP_SerInit().

#define LM3SXXXX_BIT_UARTINT_BE   DEF_BIT_09

在文件 bsp_ser.c116 行定义.

参考自 BSP_SerInit().

#define LM3SXXXX_BIT_UARTINT_OE   DEF_BIT_10

在文件 bsp_ser.c117 行定义.

参考自 BSP_SerInit().

函数说明

CPU_BOOLEAN BSP_SerInit ( CPU_DATA  port_id,
CPU_INT32U  baud_rate 
)

在文件 bsp_ser.c203 行定义.

参考 BSP_CPU_ClkFreq(), BSP_SER_ID_UART0, BSP_SER_ID_UART1, BSP_SER_ID_UART2, BSP_SER_PORT_NBR_MAX, LM3SXXXX_STRUCT_UART::CTL, DEF_NO, DEF_YES, LM3SXXXX_STRUCT_UART::FBRD, LM3SXXXX_STRUCT_UART::FR, LM3SXXXX_STRUCT_UART::IBRD, LM3SXXXX_STRUCT_UART::ICR, LM3SXXXX_STRUCT_UART::IFLS, LM3SXXXX_STRUCT_UART::LCRH, LM3SXXXX_BASE_UART0, LM3SXXXX_BASE_UART1, LM3SXXXX_BASE_UART2, LM3SXXXX_BIT_UARTCTL_RXE, LM3SXXXX_BIT_UARTCTL_TXE, LM3SXXXX_BIT_UARTCTL_UARTEN, LM3SXXXX_BIT_UARTINT_BE, LM3SXXXX_BIT_UARTINT_FE, LM3SXXXX_BIT_UARTINT_OE, LM3SXXXX_BIT_UARTINT_PE, LM3SXXXX_BIT_UARTINT_RT, LM3SXXXX_BIT_UARTINT_RX, LM3SXXXX_BIT_UARTINT_TX, LM3SXXXX_BIT_UARTLCRH_FEN , 以及 LM3SXXXX_BIT_UARTLCRH_WLEN_8.

参考自 App_TaskStart().

205 {
206  LM3SXXXX_STRUCT_UART *uart;
207  CPU_INT32U idiv;
208  CPU_INT32U fdiv;
209  CPU_INT32U clk_freq;
210 
211 
212 
213  if (port_id > BSP_SER_PORT_NBR_MAX) {
214  return (DEF_NO);
215  }
216 
217 
218  /* --------------- COMPUTE DIV BAUD RATE -------------- */
219  clk_freq = BSP_CPU_ClkFreq();
220  idiv = clk_freq / (16u * baud_rate);
221  fdiv = clk_freq % (16u * baud_rate);
222  fdiv = ((((2u * fdiv * 4u) / baud_rate) + 1u) / 2u);
223 
224 
225  /* --------------------- INIT PORT -------------------- */
226  switch (port_id) {
227  case BSP_SER_ID_UART0:
228  SysCtlPeripheralEnable(SYSCTL_PERIPH_UART0);
229  SysCtlPeripheralReset(SYSCTL_PERIPH_UART0);
230  SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
231  GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_0 | GPIO_PIN_1);
233  break;
234 
235 #if (BSP_SER_PORT_NBR_MAX >= BSP_SER_ID_UART1)
236  case BSP_SER_ID_UART1:
237  SysCtlPeripheralEnable(SYSCTL_PERIPH_UART1);
238  SysCtlPeripheralReset(SYSCTL_PERIPH_UART1);
239  SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOA);
240  GPIOPinTypeUART(GPIO_PORTA_BASE, GPIO_PIN_2 | GPIO_PIN_3);
242  break;
243 #endif
244 
245 #if (BSP_SER_PORT_NBR_MAX >= BSP_SER_ID_UART2)
246  case BSP_SER_ID_UART2:
247  SysCtlPeripheralEnable(SYSCTL_PERIPH_UART2);
248  SysCtlPeripheralReset(SYSCTL_PERIPH_UART2);
249  SysCtlPeripheralEnable(SYSCTL_PERIPH_GPIOG);
250  GPIOPinTypeUART(GPIO_PORTG_BASE, GPIO_PIN_0 | GPIO_PIN_1);
252  break;
253 #endif
254 
255  default:
256  return (DEF_NO);
257  }
258 
259  uart->IBRD = idiv;
260  uart->FBRD = fdiv;
263  uart->FR = 0x00000000;
265  uart->IFLS = 0x00000000;
268 
269  return (DEF_YES);
270 }

函数调用图:

这是这个函数的调用关系图:

CPU_SIZE_T BSP_SerRd ( CPU_DATA  port_id,
void *  p_dest,
CPU_SIZE_T  size 
)

在文件 bsp_ser.c293 行定义.

参考 BSP_OS_Dly_ms(), BSP_SER_ID_UART0, BSP_SER_ID_UART1, BSP_SER_ID_UART2, BSP_SER_PORT_NBR_MAX, DEF_BIT_IS_SET, DEF_NO, DEF_YES, LM3SXXXX_STRUCT_UART::DR, LM3SXXXX_STRUCT_UART::FR, LM3SXXXX_BASE_UART0, LM3SXXXX_BASE_UART1, LM3SXXXX_BASE_UART2 , 以及 LM3SXXXX_BIT_UARTFR_RXFE.

296 {
297  LM3SXXXX_STRUCT_UART *uart;
298  CPU_INT08U *p_dest_08;
299  CPU_SIZE_T cnt;
300  CPU_INT08U datum;
301  CPU_INT32U fr;
302 
303 
304  if (port_id > BSP_SER_PORT_NBR_MAX) {
305  return (DEF_NO);
306  }
307 
308  switch (port_id) {
309  case BSP_SER_ID_UART0:
311  break;
312 
313 #if (BSP_SER_PORT_NBR_MAX >= BSP_SER_ID_UART1)
314  case BSP_SER_ID_UART1:
316  break;
317 #endif
318 
319 #if (BSP_SER_PORT_NBR_MAX >= BSP_SER_ID_UART2)
320  case BSP_SER_ID_UART2:
322  break;
323 #endif
324 
325  default:
326  return (0u);
327  }
328 
329 
330  p_dest_08 = (CPU_INT08U *)p_dest;
331  cnt = 0u;
332  while (cnt < size) {
333  fr = uart->FR;
335  BSP_OS_Dly_ms(1u);
336  fr = uart->FR;
337  }
338  datum = (CPU_INT08U)uart->DR;
339  *p_dest_08 = datum;
340  p_dest_08++;
341  cnt++;
342  }
343  return (cnt);
344 }

函数调用图:

CPU_SIZE_T BSP_SerRdLine ( CPU_DATA  port_id,
void *  p_dest,
CPU_SIZE_T  size 
)

在文件 bsp_ser.c367 行定义.

参考 ASCII_CHAR_BACKSPACE, ASCII_CHAR_CARRIAGE_RETURN, ASCII_CHAR_NULL, ASCII_IS_PRINT, BSP_OS_Dly_ms(), BSP_SER_ID_UART0, BSP_SER_ID_UART1, BSP_SER_ID_UART2, BSP_SER_PORT_NBR_MAX, BSP_SerWr(), DEF_BIT_IS_SET, DEF_NO, DEF_YES, LM3SXXXX_STRUCT_UART::DR, LM3SXXXX_STRUCT_UART::FR, LM3SXXXX_BASE_UART0, LM3SXXXX_BASE_UART1, LM3SXXXX_BASE_UART2 , 以及 LM3SXXXX_BIT_UARTFR_RXFE.

370 {
371  LM3SXXXX_STRUCT_UART *uart;
372  CPU_INT08U *p_dest_08;
373  CPU_SIZE_T cnt;
374  CPU_INT08U datum;
375  CPU_INT32U fr;
376  CPU_BOOLEAN print;
377 
378 
379  if (port_id > BSP_SER_PORT_NBR_MAX) {
380  return (DEF_NO);
381  }
382 
383  switch (port_id) {
384  case BSP_SER_ID_UART0:
386  break;
387 
388 #if (BSP_SER_PORT_NBR_MAX >= BSP_SER_ID_UART1)
389  case BSP_SER_ID_UART1:
391  break;
392 #endif
393 
394 #if (BSP_SER_PORT_NBR_MAX >= BSP_SER_ID_UART2)
395  case BSP_SER_ID_UART2:
397  break;
398 #endif
399 
400  default:
401  return (0u);
402  }
403 
404 
405  p_dest_08 = (CPU_INT08U *)p_dest;
406  cnt = 0u;
407  while (cnt < size - 1u) {
408  fr = uart->FR;
410  BSP_OS_Dly_ms(1u);
411  fr = uart->FR;
412  }
413  datum = (CPU_INT08U)uart->DR;
414 
415  print = ASCII_IS_PRINT(datum);
416  if (print == DEF_YES) {
417  *p_dest_08 = datum;
418  p_dest_08++;
419  BSP_SerWr(port_id, (void *)&datum, 1);
420  } else {
421  if (datum == ASCII_CHAR_BACKSPACE) {
422  if (cnt > 0u) {
423  BSP_SerWr(port_id, (void *)"\b \b", 3);
424  cnt--;
425  }
426  } else if (datum == ASCII_CHAR_CARRIAGE_RETURN) {
427  *p_dest_08 = (CPU_CHAR)ASCII_CHAR_NULL;
428  return (cnt);
429  }
430  }
431  cnt++;
432  }
433  *p_dest_08 = (CPU_CHAR)ASCII_CHAR_NULL;
434  return (cnt);
435 }

函数调用图:

CPU_SIZE_T BSP_SerWr ( CPU_DATA  port_id,
void *  p_src,
CPU_SIZE_T  size 
)

在文件 bsp_ser.c458 行定义.

参考 BSP_OS_Dly_ms(), BSP_SER_ID_UART0, BSP_SER_ID_UART1, BSP_SER_ID_UART2, BSP_SER_PORT_NBR_MAX, DEF_BIT_IS_SET, DEF_NO, DEF_YES, LM3SXXXX_STRUCT_UART::DR, LM3SXXXX_STRUCT_UART::FR, LM3SXXXX_BASE_UART0, LM3SXXXX_BASE_UART1, LM3SXXXX_BASE_UART2 , 以及 LM3SXXXX_BIT_UARTFR_TXFF.

参考自 BSP_Print(), BSP_SerPrint() , 以及 BSP_SerRdLine().

461 {
462  LM3SXXXX_STRUCT_UART *uart;
463  CPU_INT08U *p_src_08;
464  CPU_SIZE_T cnt;
465  CPU_INT08U datum;
466  CPU_INT32U fr;
467 
468 
469  if (port_id > BSP_SER_PORT_NBR_MAX) {
470  return (DEF_NO);
471  }
472 
473  switch (port_id) {
474  case BSP_SER_ID_UART0:
476  break;
477 
478 #if (BSP_SER_PORT_NBR_MAX >= BSP_SER_ID_UART1)
479  case BSP_SER_ID_UART1:
481  break;
482 #endif
483 
484 #if (BSP_SER_PORT_NBR_MAX >= BSP_SER_ID_UART2)
485  case BSP_SER_ID_UART2:
487  break;
488 #endif
489 
490  default:
491  return (0u);
492  }
493 
494 
495  p_src_08 = (CPU_INT08U *)p_src;
496  cnt = 0u;
497  while (cnt < size) {
498  fr = uart->FR;
500  BSP_OS_Dly_ms(1u);
501  fr = uart->FR;
502  }
503  datum = *p_src_08;
504  uart->DR = datum;
505  p_src_08++;
506  cnt++;
507  }
508  return (cnt);
509 }

函数调用图:

这是这个函数的调用关系图:

CPU_SIZE_T BSP_SerPrint ( CPU_DATA  port_id,
CPU_CHAR format,
  ... 
)

在文件 bsp_ser.c532 行定义.

参考 ASCII_CHAR_NULL, BSP_SerWr() , 以及 Str_Len().

535 {
536  CPU_CHAR buf[128u + 1u];
537  CPU_SIZE_T len;
538  CPU_SIZE_T len_wr;
539  va_list vArgs;
540 
541 
542  buf[0] = (CPU_CHAR)ASCII_CHAR_NULL;
543 
544  va_start(vArgs, format);
545  vsnprintf((char *)buf, sizeof(buf) - 1, (char const *)format, vArgs);
546  va_end(vArgs);
547 
548  len = Str_Len(buf);
549  len_wr = BSP_SerWr ( port_id,
550  (void *)buf,
551  len);
552 
553  return (len_wr);
554 }

函数调用图:

int BSP_Print ( const char *  format,
  ... 
)

在文件 bsp_ser.c575 行定义.

参考 ASCII_CHAR_NULL, BSP_SER_ID_UART0, BSP_SerWr() , 以及 Str_Len().

577 {
578  CPU_CHAR buf[128u + 1u];
579  CPU_SIZE_T len;
580  CPU_SIZE_T len_wr;
581  va_list vArgs;
582 
583 
584  buf[0] = (CPU_CHAR)ASCII_CHAR_NULL;
585 
586  va_start(vArgs, format);
587  vsnprintf((char *)buf, sizeof(buf) - 1, (char const *)format, vArgs);
588  va_end(vArgs);
589 
590  len = Str_Len(buf);
591  len_wr = BSP_SerWr ( BSP_SER_ID_UART0,
592  (void *)buf,
593  len);
594 
595  return ((int)len_wr);
596 }

函数调用图: