ESP8266 Centre + NB
宏定义 | 函数 | 变量
uart.c 文件参考
#include "ets_sys.h"
#include "osapi.h"
#include "driver/uart.h"
#include "driver/uart_register.h"
#include "mem.h"
#include "os_type.h"
#include "room_info.h"
uart.c 的引用(Include)关系图:

宏定义

#define uart_recvTaskPrio   0
 
#define uart_recvTaskQueueLen   10
 
#define DBG
 
#define DBG1   uart1_sendStr_no_wait
 
#define DBG2   os_printf
 

函数

void NB_RxMsgHandler (uint8 *nb_msg)
 NB消息处理函数 更多...
 
LOCAL void uart0_rx_intr_handler (void *para)
 
LOCAL void ICACHE_FLASH_ATTR uart_config (uint8 uart_no)
 
STATUS uart_tx_one_char (uint8 uart, uint8 TxChar)
 
LOCAL void ICACHE_FLASH_ATTR uart1_write_char (char c)
 
LOCAL void ICACHE_FLASH_ATTR uart0_write_char_no_wait (char c)
 
void ICACHE_FLASH_ATTR uart0_tx_buffer (uint8 *buf, uint16 len)
 
void ICACHE_FLASH_ATTR uart1_tx_buffer (uint8 *buf, uint16 len)
 
void ICACHE_FLASH_ATTR uart0_sendStr (const char *str)
 
void at_port_print (const char *str) __attribute__((alias("uart0_sendStr")))
 
LOCAL void ICACHE_FLASH_ATTR uart_recvTask (os_event_t *events)
 
void ICACHE_FLASH_ATTR uart_init (UartBautRate uart0_br, UartBautRate uart1_br)
 
void ICACHE_FLASH_ATTR uart_reattach ()
 
STATUS uart_tx_one_char_no_wait (uint8 uart, uint8 TxChar)
 
STATUS uart0_tx_one_char_no_wait (uint8 TxChar)
 
void uart1_sendStr_no_wait (const char *str)
 
void uart_rx_intr_disable (uint8 uart_no)
 
void uart_rx_intr_enable (uint8 uart_no)
 
LOCAL void uart0_write_char (char c)
 
void ICACHE_FLASH_ATTR UART_SetWordLength (uint8 uart_no, UartBitsNum4Char len)
 
void ICACHE_FLASH_ATTR UART_SetStopBits (uint8 uart_no, UartStopBitsNum bit_num)
 
void ICACHE_FLASH_ATTR UART_SetLineInverse (uint8 uart_no, UART_LineLevelInverse inverse_mask)
 
void ICACHE_FLASH_ATTR UART_SetParity (uint8 uart_no, UartParityMode Parity_mode)
 
void ICACHE_FLASH_ATTR UART_SetBaudrate (uint8 uart_no, uint32 baud_rate)
 
void ICACHE_FLASH_ATTR UART_SetFlowCtrl (uint8 uart_no, UART_HwFlowCtrl flow_ctrl, uint8 rx_thresh)
 
void ICACHE_FLASH_ATTR UART_WaitTxFifoEmpty (uint8 uart_no, uint32 time_out_us)
 
bool ICACHE_FLASH_ATTR UART_CheckOutputFinished (uint8 uart_no, uint32 time_out_us)
 
void ICACHE_FLASH_ATTR UART_ResetFifo (uint8 uart_no)
 
void ICACHE_FLASH_ATTR UART_ClearIntrStatus (uint8 uart_no, uint32 clr_mask)
 
void ICACHE_FLASH_ATTR UART_SetIntrEna (uint8 uart_no, uint32 ena_mask)
 
void ICACHE_FLASH_ATTR UART_SetPrintPort (uint8 uart_no)
 
void ICACHE_FLASH_ATTR uart_init_2 (UartBautRate uart0_br, UartBautRate uart1_br)
 

变量

UartDevice UartDev
 
LOCAL struct UartBufferpTxBuffer = NULL
 
LOCAL struct UartBufferpRxBuffer = NULL
 
os_event_t uart_recvTaskQueue [uart_recvTaskQueueLen]
 

宏定义说明

#define uart_recvTaskPrio   0
#define uart_recvTaskQueueLen   10
#define DBG
#define DBG1   uart1_sendStr_no_wait
#define DBG2   os_printf

函数说明

void NB_RxMsgHandler ( uint8 nb_msg)

NB消息处理函数

NB消息有以下几种类型:

  • 动作指令的执行情况。如“OK”、“ERROR”
  • 查询指令的查询结果

云端下发的控制命令。以“+NNMI:”为前缀

当NB发送消息来的时候,我们先判断在接收到这条消息之前有没有发送过指令,即判断响应标志位 response_flag是否被置位,再决定是否去匹配响应消息。

参数
[in]nb_msg串口接收到的NB消息
106  {
107 
108  if (response_flag != 0 ) { /* 等待响应匹配 */
109 
110  ESP_DEBUG("response_flag = 1");
111 
112  if (0 != os_strstr(nb_msg, response_msg)) {
113 
114  ESP_DEBUG("OK! response message parse!");
115 
116  os_memset(response_msg, 0, sizeof(response_msg));
117  response_flag = 0;
118 
119  NB_Init();
120 
121  return;
122  } else {
123 
124  ESP_DEBUG("ERROR! response message parse failed");
125 
126  return;
127  }
128  } else {
129 
130  ESP_DEBUG("response_flag = 0");
131 
132  /* 匹配下发消息前缀 */
133 
134  /* 命令下发 */
135 
136  }
137 
138 }
uint8 response_msg[128]
Definition: nb_bc35.c:23
uint8 response_flag
Definition: nb_bc35.c:22
#define ESP_DEBUG(fmt,...)
Definition: driver/uart.h:35
#define os_memset
Definition: osapi.h:38
#define os_strstr
Definition: osapi.h:46
void NB_Init(void)
Definition: nb_bc35.c:140

函数调用图:

LOCAL void uart0_rx_intr_handler ( void *  para)
247 {
248  /* uart0 and uart1 intr combine togther, when interrupt occur, see reg 0x3ff20020, bit2, bit0 represents
249  * uart1 and uart0 respectively
250  */
251  uint8 RcvChar;
252  uint8 uart_no = UART0;//UartDev.buff_uart_no;
253  uint8 fifo_len = 0;
254  uint8 buf_idx = 0;
255  uint8 temp,cnt;
256  //RcvMsgBuff *pRxBuff = (RcvMsgBuff *)para;
257 
258  /*ATTENTION:*/
259  /*IN NON-OS VERSION SDK, DO NOT USE "ICACHE_FLASH_ATTR" FUNCTIONS IN THE WHOLE HANDLER PROCESS*/
260  /*ALL THE FUNCTIONS CALLED IN INTERRUPT HANDLER MUST BE DECLARED IN RAM */
261  /*IF NOT , POST AN EVENT AND PROCESS IN SYSTEM TASK */
263  DBG1("FRM_ERR\r\n");
266  DBG("f");
271  DBG("t");
276  DBG("e");
277  /* to output uart data from uart buffer directly in empty interrupt handler*/
278  /*instead of processing in system event, in order not to wait for current task/function to quit */
279  /*ATTENTION:*/
280  /*IN NON-OS VERSION SDK, DO NOT USE "ICACHE_FLASH_ATTR" FUNCTIONS IN THE WHOLE HANDLER PROCESS*/
281  /*ALL THE FUNCTIONS CALLED IN INTERRUPT HANDLER MUST BE DECLARED IN RAM */
283  #if UART_BUFF_EN
285  #endif
286  //system_os_post(uart_recvTaskPrio, 1, 0);
288 
291  DBG1("RX OVF!!\r\n");
292  }
293 
294 }
bool system_os_post(uint8 prio, os_signal_t sig, os_param_t par)
#define READ_PERI_REG(addr)
Definition: eagle_soc.h:68
#define UART_INT_ENA(i)
Definition: driver/uart_register.h:57
void uart_rx_intr_disable(uint8 uart_no)
Definition: uart.c:649
#define UART_RXFIFO_OVF_INT_CLR
Definition: driver/uart_register.h:73
#define UART_INT_ST(i)
Definition: driver/uart_register.h:46
#define UART_RXFIFO_FULL_INT_ST
Definition: driver/uart_register.h:55
#define WRITE_PERI_REG(addr, val)
Definition: eagle_soc.h:69
#define UART_TXFIFO_EMPTY_INT_CLR
Definition: driver/uart_register.h:76
#define UART_TXFIFO_EMPTY_INT_ST
Definition: driver/uart_register.h:54
#define CLEAR_PERI_REG_MASK(reg, mask)
Definition: eagle_soc.h:70
void tx_start_uart_buffer(uint8 uart_no)
#define UART_FRM_ERR_INT_ST
Definition: driver/uart_register.h:52
#define UART_RXFIFO_TOUT_INT_CLR
Definition: driver/uart_register.h:69
unsigned char uint8
Definition: c_types.h:43
uint8 temp
Definition: room_info.c:5
#define UART_RXFIFO_FULL_INT_CLR
Definition: driver/uart_register.h:77
#define UART_RXFIFO_TOUT_INT_ST
Definition: driver/uart_register.h:47
#define UART0
Definition: driver/uart.h:56
#define uart_recvTaskPrio
Definition: uart.c:50
#define UART_RXFIFO_OVF_INT_ST
Definition: driver/uart_register.h:51
#define UART_INT_CLR(i)
Definition: driver/uart_register.h:68
#define UART_FRM_ERR_INT_CLR
Definition: driver/uart_register.h:74
#define DBG
Definition: uart.c:54
#define UART_TXFIFO_EMPTY_INT_ENA
Definition: driver/uart_register.h:65
#define DBG1
Definition: uart.c:55

函数调用图:

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

LOCAL void ICACHE_FLASH_ATTR uart_config ( uint8  uart_no)
71 {
72  if (uart_no == UART1){
74  }else{
75  /* rcv_buff size if 0x100 */
79  #if UART_HW_RTS
80  PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDO_U, FUNC_U0RTS); //HW FLOW CONTROL RTS PIN
81  #endif
82  #if UART_HW_CTS
83  PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTCK_U, FUNC_U0CTS); //HW FLOW CONTROL CTS PIN
84  #endif
85  }
86  uart_div_modify(uart_no, UART_CLK_FREQ / (UartDev.baut_rate));//SET BAUDRATE
87 
88  WRITE_PERI_REG(UART_CONF0(uart_no), ((UartDev.exist_parity & UART_PARITY_EN_M) << UART_PARITY_EN_S) //SET BIT AND PARITY MODE
92 
93  //clear rx and tx fifo,not ready
96 
97  if (uart_no == UART0){
98  //set rx fifo trigger
99  WRITE_PERI_REG(UART_CONF1(uart_no),
101  #if UART_HW_RTS
103  UART_RX_FLOW_EN | //enbale rx flow control
104  #endif
108  #if UART_HW_CTS
109  SET_PERI_REG_MASK( UART_CONF0(uart_no),UART_TX_FLOW_EN); //add this sentense to add a tx flow control via MTCK( CTS )
110  #endif
112  }else{
114  }
115  //clear all interrupt
116  WRITE_PERI_REG(UART_INT_CLR(uart_no), 0xffff);
117  //enable rx_interrupt
119 }
#define PIN_FUNC_SELECT(PIN_NAME, FUNC)
Definition: eagle_soc.h:270
#define UART_CONF0(i)
Definition: driver/uart_register.h:100
#define FUNC_U0CTS
Definition: driver/uart.h:223
#define UART_BIT_NUM
Definition: driver/uart_register.h:122
#define FUNC_U0RTS
Definition: eagle_soc.h:227
#define UART_PARITY_EN_S
Definition: driver/uart_register.h:126
#define UART_RX_FLOW_EN
Definition: driver/uart_register.h:135
LOCAL void uart0_rx_intr_handler(void *para)
Definition: uart.c:246
#define UART_RXFIFO_FULL_THRHD_S
Definition: driver/uart_register.h:141
#define UART_RX_TOUT_THRHD
Definition: driver/uart_register.h:133
#define UART_RXFIFO_FULL_INT_ENA
Definition: driver/uart_register.h:66
#define UART_PARITY_M
Definition: driver/uart_register.h:128
#define UART_RX_TOUT_THRHD_S
Definition: driver/uart_register.h:134
#define UART_INT_ENA(i)
Definition: driver/uart_register.h:57
UartBautRate baut_rate
Definition: driver/uart.h:153
#define PERIPHS_IO_MUX_GPIO2_U
Definition: eagle_soc.h:258
#define UART_TXFIFO_EMPTY_THRHD
Definition: driver/uart_register.h:138
#define UART_PARITY_EN_M
Definition: driver/uart_register.h:125
UartParityMode parity
Definition: driver/uart.h:156
#define PERIPHS_IO_MUX_MTCK_U
Definition: eagle_soc.h:221
#define UART_CLK_FREQ
Definition: eagle_soc.h:78
#define WRITE_PERI_REG(addr, val)
Definition: eagle_soc.h:69
#define UART_FRM_ERR_INT_ENA
Definition: driver/uart_register.h:63
#define UART_STOP_BIT_NUM_S
Definition: driver/uart_register.h:121
#define UART_TX_FLOW_EN
Definition: driver/uart_register.h:110
#define CLEAR_PERI_REG_MASK(reg, mask)
Definition: eagle_soc.h:70
#define UART_BIT_NUM_S
Definition: driver/uart_register.h:123
#define UART_RX_FLOW_THRHD
Definition: driver/uart_register.h:136
#define FUNC_U0TXD
Definition: eagle_soc.h:231
#define UART_RXFIFO_OVF_INT_ENA
Definition: driver/uart_register.h:62
uint8 TrigLvl
Definition: driver/uart.h:135
#define UART_RXFIFO_FULL_THRHD
Definition: driver/uart_register.h:140
UartBitsNum4Char data_bits
Definition: driver/uart.h:154
#define UART_CONF1(i)
Definition: driver/uart_register.h:131
UartExistParity exist_parity
Definition: driver/uart.h:155
#define UART_RX_TOUT_EN
Definition: driver/uart_register.h:132
#define UART0
Definition: driver/uart.h:56
#define PERIPHS_IO_MUX_MTDO_U
Definition: eagle_soc.h:225
#define UART_TXFIFO_EMPTY_THRHD_S
Definition: driver/uart_register.h:139
#define ETS_UART_INTR_ATTACH(func, arg)
Definition: ets_sys.h:81
UartStopBitsNum stop_bits
Definition: driver/uart.h:157
#define UART_RXFIFO_RST
Definition: driver/uart_register.h:108
#define UART_PARITY_S
Definition: driver/uart_register.h:129
#define FUNC_U1TXD_BK
Definition: driver/uart.h:224
UartDevice UartDev
RcvMsgBuff rcv_buff
Definition: driver/uart.h:159
#define UART_INT_CLR(i)
Definition: driver/uart_register.h:68
#define UART_HW_RTS
Definition: driver/uart.h:53
#define UART1
Definition: driver/uart.h:57
#define SET_PERI_REG_MASK(reg, mask)
Definition: eagle_soc.h:71
#define UART_RXFIFO_TOUT_INT_ENA
Definition: driver/uart_register.h:58
#define PERIPHS_IO_MUX_U0TXD_U
Definition: eagle_soc.h:230
#define UART_STOP_BIT_NUM
Definition: driver/uart_register.h:120
#define PIN_PULLUP_DIS(PIN_NAME)
Definition: eagle_soc.h:267
#define UART_TXFIFO_RST
Definition: driver/uart_register.h:107
#define UART_RX_FLOW_THRHD_S
Definition: driver/uart_register.h:137

函数调用图:

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

STATUS uart_tx_one_char ( uint8  uart,
uint8  TxChar 
)
129 {
130  while (true){
132  if ((fifo_cnt >> UART_TXFIFO_CNT_S & UART_TXFIFO_CNT) < 126) {
133  break;
134  }
135  }
136  WRITE_PERI_REG(UART_FIFO(uart) , TxChar);
137  return OK;
138 }
#define UART_TXFIFO_CNT_S
Definition: driver/uart_register.h:93
#define READ_PERI_REG(addr)
Definition: eagle_soc.h:68
#define UART_TXFIFO_CNT
Definition: driver/uart_register.h:92
#define WRITE_PERI_REG(addr, val)
Definition: eagle_soc.h:69
Definition: c_types.h:78
#define UART_STATUS(i)
Definition: driver/uart_register.h:88
unsigned int uint32
Definition: c_types.h:52
#define UART_FIFO(i)
Definition: driver/uart_register.h:31

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

LOCAL void ICACHE_FLASH_ATTR uart1_write_char ( char  c)
149 {
150  if (c == '\n'){
151  uart_tx_one_char(UART1, '\r');
152  uart_tx_one_char(UART1, '\n');
153  }else if (c == '\r'){
154 
155  }else{
157  }
158 }
STATUS uart_tx_one_char(uint8 uart, uint8 TxChar)
Definition: uart.c:128
#define UART1
Definition: driver/uart.h:57

函数调用图:

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

LOCAL void ICACHE_FLASH_ATTR uart0_write_char_no_wait ( char  c)
163 {
164 #if UART_BUFF_EN //send to uart0 fifo but do not wait
165  uint8 chr;
166  if (c == '\n'){
167  chr = '\r';
168  tx_buff_enq(&chr, 1);
169  chr = '\n';
170  tx_buff_enq(&chr, 1);
171  }else if (c == '\r'){
172 
173  }else{
174  tx_buff_enq(&c,1);
175  }
176 #else //send to uart tx buffer
177  if (c == '\n'){
180  }else if (c == '\r'){
181 
182  }
183  else{
185  }
186 #endif
187 }
STATUS uart_tx_one_char_no_wait(uint8 uart, uint8 TxChar)
Definition: uart.c:402
void tx_buff_enq(char *pdata, uint16 data_len)
unsigned char uint8
Definition: c_types.h:43
#define UART0
Definition: driver/uart.h:56

函数调用图:

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

void ICACHE_FLASH_ATTR uart0_tx_buffer ( uint8 buf,
uint16  len 
)
198 {
199  uint16 i;
200  for (i = 0; i < len; i++)
201  {
202  uart_tx_one_char(UART0, buf[i]);
203  }
204 }
unsigned short uint16
Definition: c_types.h:48
STATUS uart_tx_one_char(uint8 uart, uint8 TxChar)
Definition: uart.c:128
#define UART0
Definition: driver/uart.h:56

函数调用图:

void ICACHE_FLASH_ATTR uart1_tx_buffer ( uint8 buf,
uint16  len 
)
215 {
216  uint16 i;
217  for (i = 0; i < len; i++)
218  {
219  uart_tx_one_char(UART1, buf[i]);
220  }
221 }
unsigned short uint16
Definition: c_types.h:48
STATUS uart_tx_one_char(uint8 uart, uint8 TxChar)
Definition: uart.c:128
#define UART1
Definition: driver/uart.h:57

函数调用图:

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

void ICACHE_FLASH_ATTR uart0_sendStr ( const char *  str)
232 {
233  while(*str){
234  uart_tx_one_char(UART0, *str++);
235  }
236 }
STATUS uart_tx_one_char(uint8 uart, uint8 TxChar)
Definition: uart.c:128
#define UART0
Definition: driver/uart.h:56

函数调用图:

void at_port_print ( const char *  str)
LOCAL void ICACHE_FLASH_ATTR uart_recvTask ( os_event_t events)
327 {
328  if(events->sig == 0){
329  #if UART_BUFF_EN
331  #else
333  uint8 d_tmp = 0;
334  uint8 idx=0;
335  for(idx=0;idx<fifo_len;idx++) {
336  d_tmp = READ_PERI_REG(UART_FIFO(UART0)) & 0xFF;
337  uart_tx_one_char(UART0, d_tmp);
338  }
341  #endif
342  }else if(events->sig == 1){
343  #if UART_BUFF_EN
344  //already move uart buffer output to uart empty interrupt
345  //tx_start_uart_buffer(UART0);
346  #else
347 
348  #endif
349  }
350 }
#define READ_PERI_REG(addr)
Definition: eagle_soc.h:68
void Uart_rx_buff_enq()
STATUS uart_tx_one_char(uint8 uart, uint8 TxChar)
Definition: uart.c:128
#define WRITE_PERI_REG(addr, val)
Definition: eagle_soc.h:69
void uart_rx_intr_enable(uint8 uart_no)
Definition: uart.c:658
#define UART_RXFIFO_TOUT_INT_CLR
Definition: driver/uart_register.h:69
#define UART_RXFIFO_CNT
Definition: driver/uart_register.h:97
unsigned char uint8
Definition: c_types.h:43
#define UART_RXFIFO_CNT_S
Definition: driver/uart_register.h:98
#define UART_RXFIFO_FULL_INT_CLR
Definition: driver/uart_register.h:77
#define UART0
Definition: driver/uart.h:56
#define UART_STATUS(i)
Definition: driver/uart_register.h:88
#define UART_FIFO(i)
Definition: driver/uart_register.h:31
#define UART_INT_CLR(i)
Definition: driver/uart_register.h:68

函数调用图:

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

void ICACHE_FLASH_ATTR uart_init ( UartBautRate  uart0_br,
UartBautRate  uart1_br 
)
354 {
355  /*this is a example to process uart data from task,please change the priority to fit your application task if exists*/
356  system_os_task(uart_recvTask, uart_recvTaskPrio, uart_recvTaskQueue, uart_recvTaskQueueLen); //demo with a task to process the uart data
357 
358  UartDev.baut_rate = uart0_br;
360  UartDev.baut_rate = uart1_br;
363 
364  #if UART_BUFF_EN
367  #endif
368 
369 
370  /*option 1: use default print, output from uart0 , will wait some time if fifo is full */
371  //do nothing...
372 
373  /*option 2: output from uart1,uart1 output will not wait , just for output debug info */
374  /*os_printf output uart data via uart1(GPIO2)*/
375  //os_install_putc1((void *)uart1_write_char); //use this one to output debug information via uart1 //
376 
377  /*option 3: output from uart0 will skip current byte if fifo is full now... */
378  /*see uart0_write_char_no_wait:you can output via a buffer or output directly */
379  /*os_printf output uart data via uart0 or uart buffer*/
380  //os_install_putc1((void *)uart0_write_char_no_wait); //use this to print via uart0
381 
382  #if UART_SELFTEST&UART_BUFF_EN
383  os_timer_disarm(&buff_timer_t);
384  os_timer_setfn(&buff_timer_t, uart_test_rx , NULL); //a demo to process the data in uart rx buffer
385  os_timer_arm(&buff_timer_t,10,1);
386  #endif
387 }
#define os_timer_disarm
Definition: osapi.h:51
#define UART_TX_BUFFER_SIZE
Definition: driver/uart.h:47
#define ETS_UART_INTR_ENABLE()
Definition: ets_sys.h:93
UartBautRate baut_rate
Definition: driver/uart.h:153
#define UART_RX_BUFFER_SIZE
Definition: driver/uart.h:48
os_event_t uart_recvTaskQueue[uart_recvTaskQueueLen]
Definition: uart.c:52
#define uart_recvTaskQueueLen
Definition: uart.c:51
#define os_timer_setfn
Definition: osapi.h:52
bool system_os_task(os_task_t task, uint8 prio, os_event_t *queue, uint8 qlen)
LOCAL void ICACHE_FLASH_ATTR uart_config(uint8 uart_no)
Definition: uart.c:70
struct UartBuffer * Uart_Buf_Init()
#define UART0
Definition: driver/uart.h:56
#define NULL
Definition: c_types.h:73
LOCAL struct UartBuffer * pRxBuffer
Definition: uart.c:45
LOCAL void ICACHE_FLASH_ATTR uart_recvTask(os_event_t *events)
Definition: uart.c:326
#define uart_recvTaskPrio
Definition: uart.c:50
#define os_timer_arm(a, b, c)
Definition: osapi.h:50
UartDevice UartDev
#define UART1
Definition: driver/uart.h:57
LOCAL struct UartBuffer * pTxBuffer
Definition: uart.c:44

函数调用图:

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

void ICACHE_FLASH_ATTR uart_reattach ( )
391 {
393 }
Definition: driver/uart.h:103
void ICACHE_FLASH_ATTR uart_init(UartBautRate uart0_br, UartBautRate uart1_br)
Definition: uart.c:353

函数调用图:

STATUS uart_tx_one_char_no_wait ( uint8  uart,
uint8  TxChar 
)
403 {
405  if (fifo_cnt < 126) {
406  WRITE_PERI_REG(UART_FIFO(uart) , TxChar);
407  }
408  return OK;
409 }
#define UART_TXFIFO_CNT_S
Definition: driver/uart_register.h:93
#define READ_PERI_REG(addr)
Definition: eagle_soc.h:68
#define UART_TXFIFO_CNT
Definition: driver/uart_register.h:92
#define WRITE_PERI_REG(addr, val)
Definition: eagle_soc.h:69
unsigned char uint8
Definition: c_types.h:43
Definition: c_types.h:78
#define UART_STATUS(i)
Definition: driver/uart_register.h:88
#define UART_FIFO(i)
Definition: driver/uart_register.h:31

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

STATUS uart0_tx_one_char_no_wait ( uint8  TxChar)
412 {
414  if (fifo_cnt < 126) {
415  WRITE_PERI_REG(UART_FIFO(UART0) , TxChar);
416  }
417  return OK;
418 }
#define UART_TXFIFO_CNT_S
Definition: driver/uart_register.h:93
#define READ_PERI_REG(addr)
Definition: eagle_soc.h:68
#define UART_TXFIFO_CNT
Definition: driver/uart_register.h:92
#define WRITE_PERI_REG(addr, val)
Definition: eagle_soc.h:69
unsigned char uint8
Definition: c_types.h:43
Definition: c_types.h:78
#define UART0
Definition: driver/uart.h:56
#define UART_STATUS(i)
Definition: driver/uart_register.h:88
#define UART_FIFO(i)
Definition: driver/uart_register.h:31
void uart1_sendStr_no_wait ( const char *  str)
428 {
429  while(*str){
431  }
432 }
STATUS uart_tx_one_char_no_wait(uint8 uart, uint8 TxChar)
Definition: uart.c:402
#define UART1
Definition: driver/uart.h:57

函数调用图:

void uart_rx_intr_disable ( uint8  uart_no)
650 {
651 #if 1
653 #else
655 #endif
656 }
#define UART_RXFIFO_FULL_INT_ENA
Definition: driver/uart_register.h:66
#define UART_INT_ENA(i)
Definition: driver/uart_register.h:57
#define CLEAR_PERI_REG_MASK(reg, mask)
Definition: eagle_soc.h:70
#define ETS_UART_INTR_DISABLE()
Definition: ets_sys.h:96
#define UART_RXFIFO_TOUT_INT_ENA
Definition: driver/uart_register.h:58

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

void uart_rx_intr_enable ( uint8  uart_no)
659 {
660 #if 1
662 #else
664 #endif
665 }
#define UART_RXFIFO_FULL_INT_ENA
Definition: driver/uart_register.h:66
#define ETS_UART_INTR_ENABLE()
Definition: ets_sys.h:93
#define UART_INT_ENA(i)
Definition: driver/uart_register.h:57
#define SET_PERI_REG_MASK(reg, mask)
Definition: eagle_soc.h:71
#define UART_RXFIFO_TOUT_INT_ENA
Definition: driver/uart_register.h:58

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

LOCAL void uart0_write_char ( char  c)
671 {
672  if (c == '\n') {
673  uart_tx_one_char(UART0, '\r');
674  uart_tx_one_char(UART0, '\n');
675  } else if (c == '\r') {
676  } else {
678  }
679 }
STATUS uart_tx_one_char(uint8 uart, uint8 TxChar)
Definition: uart.c:128
#define UART0
Definition: driver/uart.h:56

函数调用图:

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

void ICACHE_FLASH_ATTR UART_SetWordLength ( uint8  uart_no,
UartBitsNum4Char  len 
)
683 {
685 }
#define UART_CONF0(i)
Definition: driver/uart_register.h:100
#define UART_BIT_NUM
Definition: driver/uart_register.h:122
#define UART_BIT_NUM_S
Definition: driver/uart_register.h:123
#define SET_PERI_REG_BITS(reg, bit_map, value, shift)
Definition: eagle_soc.h:73
void ICACHE_FLASH_ATTR UART_SetStopBits ( uint8  uart_no,
UartStopBitsNum  bit_num 
)
689 {
691 }
#define UART_CONF0(i)
Definition: driver/uart_register.h:100
#define UART_STOP_BIT_NUM_S
Definition: driver/uart_register.h:121
#define UART_STOP_BIT_NUM
Definition: driver/uart_register.h:120
#define SET_PERI_REG_BITS(reg, bit_map, value, shift)
Definition: eagle_soc.h:73
void ICACHE_FLASH_ATTR UART_SetLineInverse ( uint8  uart_no,
UART_LineLevelInverse  inverse_mask 
)
695 {
697  SET_PERI_REG_MASK(UART_CONF0(uart_no), inverse_mask);
698 }
#define UART_CONF0(i)
Definition: driver/uart_register.h:100
#define CLEAR_PERI_REG_MASK(reg, mask)
Definition: eagle_soc.h:70
#define UART_LINE_INV_MASK
Definition: driver/uart.h:225
#define SET_PERI_REG_MASK(reg, mask)
Definition: eagle_soc.h:71
void ICACHE_FLASH_ATTR UART_SetParity ( uint8  uart_no,
UartParityMode  Parity_mode 
)
702 {
704  if(Parity_mode==NONE_BITS){
705  }else{
706  SET_PERI_REG_MASK(UART_CONF0(uart_no), Parity_mode|UART_PARITY_EN);
707  }
708 }
#define UART_CONF0(i)
Definition: driver/uart_register.h:100
#define CLEAR_PERI_REG_MASK(reg, mask)
Definition: eagle_soc.h:70
#define UART_PARITY
Definition: driver/uart_register.h:127
Definition: driver/uart.h:73
#define UART_PARITY_EN
Definition: driver/uart_register.h:124
#define SET_PERI_REG_MASK(reg, mask)
Definition: eagle_soc.h:71
void ICACHE_FLASH_ATTR UART_SetBaudrate ( uint8  uart_no,
uint32  baud_rate 
)
712 {
713  uart_div_modify(uart_no, UART_CLK_FREQ /baud_rate);
714 }
#define UART_CLK_FREQ
Definition: eagle_soc.h:78
void ICACHE_FLASH_ATTR UART_SetFlowCtrl ( uint8  uart_no,
UART_HwFlowCtrl  flow_ctrl,
uint8  rx_thresh 
)
718 {
719  if(flow_ctrl&USART_HardwareFlowControl_RTS){
723  }else{
725  }
726  if(flow_ctrl&USART_HardwareFlowControl_CTS){
729  }else{
731  }
732 }
#define PIN_FUNC_SELECT(PIN_NAME, FUNC)
Definition: eagle_soc.h:270
#define UART_CONF0(i)
Definition: driver/uart_register.h:100
#define FUNC_U0RTS
Definition: eagle_soc.h:227
#define UART_RX_FLOW_EN
Definition: driver/uart_register.h:135
#define PERIPHS_IO_MUX_MTCK_U
Definition: eagle_soc.h:221
#define UART_TX_FLOW_EN
Definition: driver/uart_register.h:110
#define CLEAR_PERI_REG_MASK(reg, mask)
Definition: eagle_soc.h:70
#define UART_RX_FLOW_THRHD
Definition: driver/uart_register.h:136
#define UART_CONF1(i)
Definition: driver/uart_register.h:131
#define PERIPHS_IO_MUX_MTDO_U
Definition: eagle_soc.h:225
#define FUNC_UART0_CTS
Definition: driver/uart.h:222
Definition: driver/uart.h:120
#define SET_PERI_REG_MASK(reg, mask)
Definition: eagle_soc.h:71
#define SET_PERI_REG_BITS(reg, bit_map, value, shift)
Definition: eagle_soc.h:73
Definition: driver/uart.h:119
#define UART_RX_FLOW_THRHD_S
Definition: driver/uart_register.h:137
void ICACHE_FLASH_ATTR UART_WaitTxFifoEmpty ( uint8  uart_no,
uint32  time_out_us 
)
736 {
737  uint32 t_s = system_get_time();
739 
740  if(( system_get_time() - t_s )> time_out_us){
741  break;
742  }
743  WRITE_PERI_REG(0X60000914, 0X73);//WTD
744 
745  }
746 }
#define UART_TXFIFO_CNT_S
Definition: driver/uart_register.h:93
#define READ_PERI_REG(addr)
Definition: eagle_soc.h:68
#define UART_TXFIFO_CNT
Definition: driver/uart_register.h:92
uint32 system_get_time(void)
#define WRITE_PERI_REG(addr, val)
Definition: eagle_soc.h:69
#define UART_STATUS(i)
Definition: driver/uart_register.h:88
unsigned int uint32
Definition: c_types.h:52

函数调用图:

bool ICACHE_FLASH_ATTR UART_CheckOutputFinished ( uint8  uart_no,
uint32  time_out_us 
)
751 {
752  uint32 t_start = system_get_time();
753  uint8 tx_fifo_len;
754  uint32 tx_buff_len;
755  while(1){
756  tx_fifo_len =( (READ_PERI_REG(UART_STATUS(uart_no))>>UART_TXFIFO_CNT_S)&UART_TXFIFO_CNT);
757  if(pTxBuffer){
758  tx_buff_len = ((pTxBuffer->UartBuffSize)-(pTxBuffer->Space));
759  }else{
760  tx_buff_len = 0;
761  }
762 
763  if( tx_fifo_len==0 && tx_buff_len==0){
764  return TRUE;
765  }
766  if( system_get_time() - t_start > time_out_us){
767  return FALSE;
768  }
769  WRITE_PERI_REG(0X60000914, 0X73);//WTD
770  }
771 }
#define UART_TXFIFO_CNT_S
Definition: driver/uart_register.h:93
#define READ_PERI_REG(addr)
Definition: eagle_soc.h:68
#define UART_TXFIFO_CNT
Definition: driver/uart_register.h:92
#define FALSE
Definition: c_types.h:109
#define TRUE
Definition: c_types.h:108
uint32 system_get_time(void)
#define WRITE_PERI_REG(addr, val)
Definition: eagle_soc.h:69
uint16 Space
Definition: driver/uart.h:181
unsigned char uint8
Definition: c_types.h:43
#define UART_STATUS(i)
Definition: driver/uart_register.h:88
unsigned int uint32
Definition: c_types.h:52
LOCAL struct UartBuffer * pTxBuffer
Definition: uart.c:44
uint32 UartBuffSize
Definition: driver/uart.h:176

函数调用图:

void ICACHE_FLASH_ATTR UART_ResetFifo ( uint8  uart_no)
776 {
779 }
#define UART_CONF0(i)
Definition: driver/uart_register.h:100
#define CLEAR_PERI_REG_MASK(reg, mask)
Definition: eagle_soc.h:70
#define UART_RXFIFO_RST
Definition: driver/uart_register.h:108
#define SET_PERI_REG_MASK(reg, mask)
Definition: eagle_soc.h:71
#define UART_TXFIFO_RST
Definition: driver/uart_register.h:107
void ICACHE_FLASH_ATTR UART_ClearIntrStatus ( uint8  uart_no,
uint32  clr_mask 
)
783 {
784  WRITE_PERI_REG(UART_INT_CLR(uart_no), clr_mask);
785 }
#define WRITE_PERI_REG(addr, val)
Definition: eagle_soc.h:69
#define UART_INT_CLR(i)
Definition: driver/uart_register.h:68
void ICACHE_FLASH_ATTR UART_SetIntrEna ( uint8  uart_no,
uint32  ena_mask 
)
789 {
790  SET_PERI_REG_MASK(UART_INT_ENA(uart_no), ena_mask);
791 }
#define UART_INT_ENA(i)
Definition: driver/uart_register.h:57
#define SET_PERI_REG_MASK(reg, mask)
Definition: eagle_soc.h:71
void ICACHE_FLASH_ATTR UART_SetPrintPort ( uint8  uart_no)
796 {
797  if(uart_no==1){
799  }else{
800  /*option 1: do not wait if uart fifo is full,drop current character*/
802  /*option 2: wait for a while if uart fifo is full*/
804  }
805 }
LOCAL void ICACHE_FLASH_ATTR uart1_write_char(char c)
Definition: uart.c:148
LOCAL void uart0_write_char(char c)
Definition: uart.c:670
#define os_install_putc1
Definition: osapi.h:33
LOCAL void ICACHE_FLASH_ATTR uart0_write_char_no_wait(char c)
Definition: uart.c:162

函数调用图:

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

void ICACHE_FLASH_ATTR uart_init_2 ( UartBautRate  uart0_br,
UartBautRate  uart1_br 
)
814 {
815  // rom use 74880 baut_rate, here reinitialize
816  UartDev.baut_rate = uart0_br;
821 
823  UartDev.baut_rate = uart1_br;
826 
827  // install uart1 putc callback
828  os_install_putc1((void *)uart1_write_char);//print output at UART1
829 }
Definition: driver/uart.h:67
Definition: driver/uart.h:75
LOCAL void ICACHE_FLASH_ATTR uart1_write_char(char c)
Definition: uart.c:148
#define ETS_UART_INTR_ENABLE()
Definition: ets_sys.h:93
UartBautRate baut_rate
Definition: driver/uart.h:153
Definition: driver/uart.h:63
UartParityMode parity
Definition: driver/uart.h:156
#define os_install_putc1
Definition: osapi.h:33
LOCAL void ICACHE_FLASH_ATTR uart_config(uint8 uart_no)
Definition: uart.c:70
UartBitsNum4Char data_bits
Definition: driver/uart.h:154
UartExistParity exist_parity
Definition: driver/uart.h:155
#define UART0
Definition: driver/uart.h:56
UartStopBitsNum stop_bits
Definition: driver/uart.h:157
UartDevice UartDev
#define UART1
Definition: driver/uart.h:57
Definition: driver/uart.h:80

函数调用图:

变量说明

UartDevice UartDev
LOCAL struct UartBuffer* pTxBuffer = NULL
LOCAL struct UartBuffer* pRxBuffer = NULL
os_event_t uart_recvTaskQueue[uart_recvTaskQueueLen]