UART demo2
- uart的参考代码demo2,简单实现数据的回写,使用查询方式读取数据。
```
/**
* @file uart_demo2.c
* @ingroup peripheral
* @brief UART外设Demo
*
***********************************************************************************/
#include "softap_api.h"
#if DEMO_TEST
#include "xy_peripheral.h"
// CSP prot and PIN set
#define UART_PRCM_CLK PRCM_CKG_CTL_USART1
#define UART_PORT UART1
#define UART_REMAP_TX REMAP_UART_TXD
#define UART_REMAP_RX REMAP_UART_RXD
#define UART_TX_PIN GPIO_PIN_NUM_6
#define UART_RX_PIN GPIO_PIN_NUM_7
// task config
#define UART_TASK_PRIORITY 10
#define UART_TASK_STACK_SIZE 1024
// task handler and semaphore
UINT32 g_uart_TskHandle_demo2 = -1;
/**
* @brief UART读写DEMO
*
* @code
* len = xy_UART_ReadBuf(UART_PORT, rcv_buf, sizeof(rcv_buf));
xy_sleep(1000);
if(len > 0)
{
xy_UART_WriteBuf(UART_PORT, rcv_buf, len);
}
*
* @endcode
*
*/
void uart_task_demo2(void)
{
char rcv_buf[128] = {0};
int len = 0;
char buf[20];
while(1)
{
len = xy_UART_ReadBuf(UART_PORT, rcv_buf, sizeof(rcv_buf));
xy_sleep(1000);
if(len > 0)
{
xy_UART_WriteBuf(UART_PORT, rcv_buf, len);
}
}
}
/**
* @brief 初始化UART接口
* @note 在配置IO前需要清空配置寄存器并开启外设时钟
*
* @code
* xy_PRCM_ClockCmd(UART_PRCM_CLK, ENABLE);
xy_PRCM_ClockCmd(PRCM_CKG_CTL_GPIO, ENABLE);
//csp uart config
xy_GPIO_ClearConfig(UART_TX_PIN);
xy_GPIO_ClearConfig(UART_RX_PIN);
xy_GPIO_Remapping(UART_TX_PIN, UART_REMAP_TX);
xy_GPIO_Remapping(UART_RX_PIN, UART_REMAP_RX);
xy_GPIO_SetIOMode(UART_TX_PIN, GPIO_MODE_HW_PER);
xy_GPIO_SetIOMode(UART_RX_PIN, GPIO_MODE_HW_IN_PU);
xy_UART_Init(UART_PORT, 9600, UART_DATA_BITS_8, UART_STOP_BITS_1, UART_PARITY_EVEN);
// UART enable
xy_UART_Cmd(UART_PORT, ENABLE);
* @endcode
*
*/
void uart_gpio_init_demo2(void)
{
xy_PRCM_ClockCmd(UART_PRCM_CLK, ENABLE);
xy_PRCM_ClockCmd(PRCM_CKG_CTL_GPIO, ENABLE);
//csp uart config
xy_GPIO_ClearConfig(UART_TX_PIN);
xy_GPIO_ClearConfig(UART_RX_PIN);
xy_GPIO_Remapping(UART_TX_PIN, UART_REMAP_TX);
xy_GPIO_Remapping(UART_RX_PIN, UART_REMAP_RX);
xy_GPIO_SetIOMode(UART_TX_PIN, GPIO_MODE_HW_PER);
xy_GPIO_SetIOMode(UART_RX_PIN, GPIO_MODE_HW_IN_PU);
xy_UART_Init(UART_PORT, 9600, UART_DATA_BITS_8, UART_STOP_BITS_1, UART_PARITY_EVEN);
// UART enable
xy_UART_Cmd(UART_PORT, ENABLE);
}
/**
* @brief 这个函数为UARTdemo提供了一个工作线程
*
* @return UINT32
*/
UINT32 uart_task_init_demo2(void)
{
UINT32 uwRet = LOS_NOK;
uwRet = xy_TaskCreate((TaskFunc_t)uart_task_demo2, "uart_task_demo2", UART_TASK_STACK_SIZE, NULL, UART_TASK_PRIORITY, &g_uart_TskHandle_demo2);
return uwRet;
}
#endif