69.4. UART中断
69.4.1. 概述
uart 通用异步收发器UART驱动示例工程展示了UART的配置使用方法,使用中断实现串口数据的接收和发送 - 示例代码中,进行UART串口资源的初始化配置,设置串口时钟及收发FIFO深度,配置中断,实现串口收据的发送与接收
69.4.2. 端口设置
串口波特率设置为
115200bps,1个停止位,无奇偶校验位
69.4.3. 注意
在工程的CMakeLists.txt文件中,
sdk_compile_definitions(-DCONFIG_UART_FIFO_MODE=1),默认使能FIFO, 若需要禁能FIFO, 请在工程中更改``sdk_compile_definitions(-DCONFIG_UART_FIFO_MODE=0)``或者删除``sdk_compile_definitions(-DCONFIG_UART_FIFO_MODE=1)``在FIFO模式下,接收FIFO中的数据只有达到设置的接收FIFO阈值,才会进入一次有效接收数据中断。
示例中的接收FIFO阈值设置是接收FIFO深度的一半,每个SOC的接收FIFO深度不同,接收FIFO阈值也不同,FIFO深度可通过``uart_get_fifo_size``API或者``UART_SOC_FIFO_SIZE``宏定义获取。
示例在使能FIFO模式下,接收每达到设置的接收FIFO阈值会进入一次接收中断,进而进行发送。按照FIFO阈值的整数倍进行回显。
示例中在禁能FIFO模式下,每接收一字节就会进入一次接收中断,进而进行发送。接收多少字节就回显多少字节。
示例中在使能FIFO模式下,如果输入的字符串不是FIFO阈值的整数倍,那么回显的字符串会以FIFO阈值的整数倍进行回显,剩余的字节会等待下一次接收补充回显。
69.4.4. 运行现象
当工程正确运行后,通过串口手动输入字符串,如:
1234567890987654,则串口终端会收到如下信息:
uart driver example
use fifo mode, the uart RX/TX FIFO depth:16 bytes
set fifo threshold to 8 bytes; uart will send back received characters on every 8 bytes
1234567890987654
从串口终端信息可看到,实例使用的是FIFO模式,接收FIFO深度为16字节,设置的接收FIFO阈值为8字节。