blob: 5d7b5d31f0edf677e28c481ba6e84b3e43047c6b (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
#include "project.h"
LOCAL void ICACHE_FLASH_ATTR
uart0_config (uint32_t baud)
{
// ETS_UART_INTR_ATTACH(uart0_rx_intr_handler, &(UartDev.rcv_buff));
PIN_PULLUP_DIS (PERIPHS_IO_MUX_U0TXD_U);
PIN_FUNC_SELECT (PERIPHS_IO_MUX_U0TXD_U, FUNC_U0TXD);
uart_div_modify (UART0, UART_CLK_FREQ / baud);
SET_PERI_REG_MASK (UART_CONF0 (UART0), UART_RXFIFO_RST | UART_TXFIFO_RST); //RESET FIFO
CLEAR_PERI_REG_MASK (UART_CONF0 (UART0), UART_RXFIFO_RST | UART_TXFIFO_RST);
WRITE_PERI_REG (UART_CONF1 (UART0),
((100 & UART_RXFIFO_FULL_THRHD) << UART_RXFIFO_FULL_THRHD_S)
| (0x02 & UART_RX_TOUT_THRHD) << UART_RX_TOUT_THRHD_S |
UART_RX_TOUT_EN | ((0x10 & UART_TXFIFO_EMPTY_THRHD) <<
UART_TXFIFO_EMPTY_THRHD_S));
SET_PERI_REG_MASK (UART_INT_ENA (UART0),
UART_RXFIFO_TOUT_INT_ENA | UART_FRM_ERR_INT_ENA);
WRITE_PERI_REG (UART_INT_CLR (UART0), 0xffff);
//enable rx_interrupt
//SET_PERI_REG_MASK(UART_INT_ENA(UART0), UART_RXFIFO_FULL_INT_ENA|UART_RXFIFO_OVF_INT_ENA);
}
STATUS
uart0_tx_one_char (uint8 TxChar)
{
while (true)
{
uint32 fifo_cnt =
READ_PERI_REG (UART_STATUS (UART0)) & (UART_TXFIFO_CNT <<
UART_TXFIFO_CNT_S);
if ((fifo_cnt >> UART_TXFIFO_CNT_S & UART_TXFIFO_CNT) < 126)
{
break;
}
}
WRITE_PERI_REG (UART_FIFO (UART0), TxChar);
return OK;
}
void ICACHE_FLASH_ATTR
uart_init (void)
{
uart0_config (115200);
}
|