USART fix handle_tx_ready, tweak priority of the sample.
This commit is contained in:
@@ -117,8 +117,9 @@ usart_config (uint8_t dev_no, uint32_t config_bits)
|
|||||||
struct USART *USARTx = get_usart_dev (dev_no);
|
struct USART *USARTx = get_usart_dev (dev_no);
|
||||||
uint8_t baud_spec = (config_bits & MASK_BAUD);
|
uint8_t baud_spec = (config_bits & MASK_BAUD);
|
||||||
int i;
|
int i;
|
||||||
uint32_t cr1_config = (USART_CR1_UE | USART_CR1_TXEIE | USART_CR1_RXNEIE
|
uint32_t cr1_config = (USART_CR1_UE | USART_CR1_RXNEIE
|
||||||
| USART_CR1_TE | USART_CR1_RE);
|
| USART_CR1_TE | USART_CR1_RE);
|
||||||
|
/* TXEIE will be enabled when putting char */
|
||||||
/* No CTSIE, PEIE, TCIE, IDLEIE, LBDIE */
|
/* No CTSIE, PEIE, TCIE, IDLEIE, LBDIE */
|
||||||
if (USARTx == NULL)
|
if (USARTx == NULL)
|
||||||
return -1;
|
return -1;
|
||||||
@@ -430,17 +431,24 @@ static int
|
|||||||
handle_tx_ready (struct USART *USARTx, struct rb *rb2h,
|
handle_tx_ready (struct USART *USARTx, struct rb *rb2h,
|
||||||
struct usart_stat *stat)
|
struct usart_stat *stat)
|
||||||
{
|
{
|
||||||
|
int tx_ready = 1;
|
||||||
int c = rb_ll_get (rb2h);
|
int c = rb_ll_get (rb2h);
|
||||||
|
|
||||||
if (c >= 0)
|
if (c >= 0)
|
||||||
{
|
{
|
||||||
|
uint32_t r;
|
||||||
|
|
||||||
USARTx->DR = (c & 0xff);
|
USARTx->DR = (c & 0xff);
|
||||||
USARTx->CR1 |= USART_CR1_TXEIE;
|
|
||||||
stat->tx++;
|
stat->tx++;
|
||||||
return 0;
|
r = USARTx->SR;
|
||||||
|
if ((r & USART_SR_TXE) == 0)
|
||||||
|
{
|
||||||
|
tx_ready = 0;
|
||||||
|
USARTx->CR1 |= USART_CR1_TXEIE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return tx_ready;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *
|
static void *
|
||||||
|
|||||||
@@ -27,9 +27,9 @@ blk (void *arg)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define PRIO_USART 4
|
#define PRIO_USART 2
|
||||||
#define PRIO_CDC2USART 2
|
#define PRIO_CDC2USART 3
|
||||||
#define PRIO_USART2CDC 2
|
#define PRIO_USART2CDC 3
|
||||||
|
|
||||||
#define STACK_MAIN
|
#define STACK_MAIN
|
||||||
#define STACK_PROCESS_2
|
#define STACK_PROCESS_2
|
||||||
|
|||||||
@@ -636,7 +636,7 @@ usb_rx_ready (uint8_t ep_num, uint16_t len)
|
|||||||
|
|
||||||
static void *cdc_main (void *arg);
|
static void *cdc_main (void *arg);
|
||||||
|
|
||||||
#define PRIO_CDC 3
|
#define PRIO_CDC 4
|
||||||
|
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|||||||
Reference in New Issue
Block a user