RTT serial 设备的底层硬件驱动
一、需要用到的头文件
系统头文件
#include <rthw.h>
#include <rtthread.h>
#include <rtdevice.h>
硬件相关头文件
#include "board.h"
#include "LPC177x_8x.h"
#include "lpc177x_8x_uart.h"
#include "lpc177x_8x_pinsel.h"
二、引脚配置
因为现在大部分的CPU的引脚功能是复用的,所以这一项必不可少。这里没有使用PIN设备,而使用的宏定义。当然,这部分的功能可以不在这里实现,在应用代码里通过PIN设备来配置。不过个人感觉没有必要。
#define pinConnectToTxduart0() PINSEL_ConfigPin(0, 2, 1)
#define pinConnectToRxduart0() PINSEL_ConfigPin(0, 3, 1)
...
#define pinConnectToTxduart4() PINSEL_ConfigPin(5, 4, 4)
#define pinConnectToRxduart4() PINSEL_ConfigPin(5, 3, 4)
#define configTxdPin(__num) pinConnectToTxd##__num()
#define configRxdPin(__num) pinConnectToRxd##__num()
用法如下:
configTxdPin(uart0);
configRxdPin(uart0);
三、串口配置
这个结构体和各个芯片供应商提供的驱动有关,也可以自己写。
typedef struct {
uint32_t Baud_rate; /**< UART baud rate */
UART_PARITY_Type Parity; /**< Parity selection, should be:
- UART_PARITY_NONE: No parity
- UART_PARITY_ODD: Odd parity
- UART_PARITY_EVEN: Even parity
- UART_PARITY_SP_1: Forced "1" stick parity
- UART_PARITY_SP_0: Forced "0" stick parity
*/
UART_DATABIT_Type Databits; /**< Number of data bits, should be:
- UART_DATABIT_5: UART 5 bit data mode
- UART_DATABIT_6: UART 6 bit data mode
- UART_DATABIT_7: UART 7 bit data mode
- UART_DATABIT_8: UART 8 bit data mode
*/
UART_STOPBIT_Type S