UCOS_TI_LM3S_Keil
 全部 结构体 文件 函数 变量 类型定义 宏定义 
bsp_ser.h 文件参考
#include <bsp.h>
#include <stdarg.h>
bsp_ser.h 的引用(Include)关系图:
此图展示该文件直接或间接的被哪些文件引用了:

浏览源代码.

宏定义

#define BSP_SER_EXT   extern
 
#define BSP_SER_ID_UART0   0u
 
#define BSP_SER_ID_UART1   1u
 
#define BSP_SER_ID_UART2   2u
 

函数

CPU_BOOLEAN BSP_SerInit (CPU_DATA port_id, CPU_INT32U baudrate)
 
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_src, 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 *fmt,...)
 
int BSP_Print (char const *fmt,...)
 

宏定义说明

#define BSP_SER_EXT   extern

在文件 bsp_ser.h51 行定义.

#define BSP_SER_ID_UART0   0u

在文件 bsp_ser.h71 行定义.

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

#define BSP_SER_ID_UART1   1u

在文件 bsp_ser.h72 行定义.

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

#define BSP_SER_ID_UART2   2u

在文件 bsp_ser.h73 行定义.

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

函数说明

CPU_BOOLEAN BSP_SerInit ( CPU_DATA  port_id,
CPU_INT32U  baudrate 
)

在文件 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_src,
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 fmt,
  ... 
)

在文件 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 ( char const *  fmt,
  ... 
)

在文件 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 }

函数调用图: