蓝牙BLE---DA14683的UART操作

版权声明:转载请注明出处。技术交流加微信:life5270 https://blog.csdn.net/JaLLs/article/details/84324281

DA14683的串口操作

Date: 2018.11.21

Create: Jim

 

首先我们导入Demo工程freertos_retargetscript

 

要注销的代码

串口打印的宏定义注销:

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这两个文件。

猜你喜欢

转载自blog.csdn.net/JaLLs/article/details/84324281