硬件连接
本 demo 基于 BL706_IOT 开发板,连接方式如下:
![](//file.elecfans.com/web2/M00/54/C5/poYBAGLZItmAcAudAAAgv4h1YHs243.jpg)
软件实现
软件代码见 examples/uart/uart_echo`![1.jpg](//file.elecfans.com/web2/M00/55/63/pYYBAGLZI1OAUNw9AAAlBGPVWSA277.jpg)
配置 UART 设备时钟源,见 bsp/board/bl706_iot/clock_config.h
![1.jpg](//file.elecfans.com/web2/M00/54/C5/poYBAGLZI2iACsGvAAAndlbt1DM872.jpg)
配置 UART 设备复用引脚,见 bsp/board/bl706_iot/pinmux_config.h
![](//file.elecfans.com/web2/M00/54/C5/poYBAGLZItmAB5P1AABnqDE5PZA224.jpg)
使能 BSP_USING_UART0 并配置 UART 设备配置,见 bsp/board/bl706_iot/peripheral_config.h
![1.jpg](//file.elecfans.com/web2/M00/54/C5/poYBAGLZI32Aa4X5AAAKL7q0IAE931.jpg)
在 bflb_platform_init 函数中,我们已经注册并且打开了一个调试用的串口设备,给用户实现一个 MSG 的基本功能用作打印输出报文。具体实现如下
![](//file.elecfans.com/web2/M00/55/62/pYYBAGLZItmAe--UAABny5QtuNs880.jpg)
首先调用 uart_register 函数注册 UART 设备,当前注册 UART0
然后通过 find 函数找到设备对应的句柄,保存于 uart 句柄中
最后使用 device_open 以轮询发送和中断接收来打开 uart 设备,默认关闭中断并且不注册接收中断回调函数
![](//file.elecfans.com/web2/M00/55/62/pYYBAGLZItmAbnx0AAA4BK0pShc521.jpg)
通过 device_set_callback 函数,注册用户指定的UART0 接收中断服务函数。通过 device_control 函数打开 RX_FIFO 和 RTO 中断
![](//file.elecfans.com/web2/M00/55/62/pYYBAGLZItmAJZ0VAABgYYnxjk4877.jpg)
此函数是示例的中断服务函数,作用是将接受到的数据原封不动的发送出去。
state 会返回 UART 设备的中断类型
args 包含了返回数据指针
size 包含返回数据的长度
dev 为中断的 uart 设备句柄
当中断产生,将会调用 device_write 函数将接受到的数据发送回去。
编译和烧录
CDK 编译
打开项目中提供的工程文件:uart_echo.cdkproj
参照 Windows 下使用 CDK (类 MDK Keil)开发指南 的步骤编译下载即可
命令行编译
![](//file.elecfans.com/web2/M00/54/C5/poYBAGLZItmAaBGuAAAdp_R1xa8753.jpg)
原作者:BL_MCU_SDK 开发指南
|