|
楼主 |
发表于 2024-12-25 15:15:47
|
显示全部楼层
thanks wes58! just test your code , works well.
typedef struct{
u32 dataLen;
u8 data[5];
}uart_rxData1_t;
#define UART_TX_BUF_SIZE 16
#define UART_RX_BUF_SIZE 16
__attribute__((aligned(4))) u8 uartTxBuf1[UART_TX_BUF_SIZE] = {0};
__attribute__((aligned(4))) u8 uartRxBuf1[UART_RX_BUF_SIZE] = {0};
void uart_data_handler1(void *arg){
// the format of the uart rx data: length(4 Bytes) + payload
u8 st = SUCCESS;
uart_rxData1_t *rxData = (uart_rxData1_t *)uartRxBuf1;
if(rxData->dataLen == 0){
st = 0xE4; //ZBHCI_MSG_STATUS_UART_EXCEPT;
}
else if(rxData->dataLen > 4){ // > (UART_RX_BUF_SIZE - 4)){
st = 0xE1; //ZBHCI_MSG_STATUS_MSG_OVERFLOW;
}
if(st == SUCCESS)
{
u8 data = rxData->data[0] ;
if(rxData->data[0] == 1 && rxData->data[1] == 2)
{
drv_gpio_write(LED_R, 1);
}
else if(rxData->data[0] == 2 && rxData->data[1] == 3)
{
drv_gpio_write(LED_R, 0);
}
}
}
void uartRcvHandler1(void){
TL_SCHEDULE_TASK(uart_data_handler1, uartRxBuf1);
}
UART_PIN_CFG();
drv_uart_init(9600, uartRxBuf1, UART_RX_BUF_SIZE, uartRcvHandler1); |
|