藍芽BLE---DA14683的UART操作
DA14683的串列埠操作
Date: 2018.11.21
Create: Jim
首先我們匯入Demo工程freertos_retarget和script
要登出的程式碼
串列埠列印的巨集定義登出:
Main函式裡面的prvTemplateTask任務中的以下部分登出:
新增串列埠驅動
在main函式中加入以下串列埠驅動的定義和子函式:
程式碼如下:
#define USER_UART_TX_PORT HW_GPIO_PORT_1
#define USER_UART_TX_PIN HW_GPIO_PIN_3
#define USER_UART_RX_PORT HW_GPIO_PORT_2
#define USER_UART_RX_PIN HW_GPIO_PIN_3
#define USER_CONFIG_RETARGET_UART HW_UART2
#define USER_CONFIG_RETARGET_UART_BAUDRATE HW_UART_BAUDRATE_115200
#define USER_CONFIG_RETARGET_UART_DATABITS HW_UART_DATABITS_8
#define USER_CONFIG_RETARGET_UART_STOPBITS HW_UART_STOPBITS_1
#define USER_CONFIG_RETARGET_UART_PARITY HW_UART_PARITY_NONE
//#define USER_RETARGET_UART_IS_CONFIGURED_FLAG (0x55)
void user_uart_init(void)
{
uart_config uart_init = {
.baud_rate = USER_CONFIG_RETARGET_UART_BAUDRATE,
.data = USER_CONFIG_RETARGET_UART_DATABITS,
.stop = USER_CONFIG_RETARGET_UART_STOPBITS,
.parity = USER_CONFIG_RETARGET_UART_PARITY,
.use_dma = 0,
.use_fifo = 0,
.rx_dma_channel = HW_DMA_CHANNEL_0,
.tx_dma_channel = HW_DMA_CHANNEL_1,
};
hw_gpio_set_pin_function(USER_UART_TX_PORT, USER_UART_TX_PIN, \
HW_GPIO_MODE_OUTPUT,HW_GPIO_FUNC_UART2_TX);
hw_gpio_set_pin_function(USER_UART_RX_PORT, USER_UART_RX_PIN, \
HW_GPIO_MODE_INPUT,HW_GPIO_FUNC_UART2_RX);
hw_uart_init(USER_CONFIG_RETARGET_UART, &uart_init);
// hw_uart_write_scr(USER_CONFIG_RETARGET_UART, \
USER_RETARGET_UART_IS_CONFIGURED_FLAG);
}
以上巨集定義分別代表什麼基本上一目瞭然,再次不做贅述。
然後在periph_init函式中呼叫user_uart_init函式:
到這裡串列埠驅動和串列埠引腳設定完畢。
#define USER_UART_TX_PORT HW_GPIO_PORT_1
#define USER_UART_TX_PIN HW_GPIO_PIN_3
#define USER_UART_RX_PORT HW_GPIO_PORT_2
#define USER_UART_RX_PIN HW_GPIO_PIN_3
這四個巨集定義是設定串列埠的傳送和接收引腳,可以根據使用者需求隨意設定。
串列埠傳送和接收
在prvTemplateTask中加入以下程式碼:
這段程式碼表示串列埠接收到什麼資料就返回什麼資料。
程式碼如下:
rev=hw_uart_read(USER_CONFIG_RETARGET_UART);
if(rev)
{
hw_uart_write(USER_CONFIG_RETARGET_UART,' ');
hw_uart_write(USER_CONFIG_RETARGET_UART,' ');
hw_uart_write(USER_CONFIG_RETARGET_UART,rev);
hw_uart_send(USER_CONFIG_RETARGET_UART, "\r\n UART_TEST2\r\n", 16, NULL, NULL);
rev=0;
}
然後編譯程式碼,下載進開發板,電腦開啟串列埠助手,上電測試:
可以看到,電腦端傳送什麼資料,開發板就發回什麼資料了。
以上程式碼只適用單位元組接收,如需要多位元組接收,可以自行用指標和迴圈新增邏輯程式碼。
更多出串列埠相關操作請參考hw_uart.h和hw_uart.c這兩個檔案。