📄 uart.h
字号:
//-------------------------------------------------------------------------*
//Uart.h串行通信头文件 *
//-------------------------------------------------------------------------*
#ifndef UART_H
#define UART_H
//1.对外引用
#include "type.h" //类型定义头文件
extern uint8 __IPSBAR[]; //引用外部标号
//2.外用UART通信函数声明
//-------------------------------------------------------------------------*
//函数名: UartInit *
//功 能: 初始化UARTx模块。x代表0,1,2 *
//参 数: uint8 uartNo: 第uartNo个UART模块。其中uartNo取值为0,1,2 *
// 如果uatch大于2,则认为是2 *
// int32 sysclk: 系统总线时钟,以MHz为单位 *
// int32 baud: 波特率,如 4800,9600,19200,38400,57600,115200 *
// 其他的波特率在MCF52233的评估板上没有测试过,若要使 *
// 用该函数,请自行测试,一般来说,速度慢一点,通信会 *
// 更稳定 *
// uint8 intStatusInit: 初始化中断的状态 1表示开中断 其他表示不开 *
//返 回: 无 *
//说 明: uartNo=0表示使用UART0模块,依此类推。 *
//-------------------------------------------------------------------------*
void UartInit(uint8 uartNo, int32 sysclk, int32 baud, uint8 intStatusInit);
//-------------------------------------------------------------------------*
//函数名: UartSend1 *
//功 能: 串行发送1个字节 *
//参 数: uint8 uartNo: 第uartNo个UART模块,其中uartNo取值为0,1,2 *
// uint8 ch: 要发送的字节 *
//返 回: 无 *
//说 明: uartNo=0表示使用UART0模块,依此类推 *
//-------------------------------------------------------------------------*
void UartSend1(uint8 uartNo, uint8 ch);
//-------------------------------------------------------------------------*
//函数名: UartSendN *
//功 能: 串行发送N个字节 *
//参 数: uint8 uartNo: 第uartNo个UART模块。其中uartNo取值为0,1,2 *
// uint8 n: 发送的字节数 *
// uint8 ch[]: 待发送的数据 *
//返 回: 无 *
//说 明: uartNo=0表示使用UART0模块,依此类推。 *
// 调用了UartSend1函数 *
//-------------------------------------------------------------------------*
void UartSendN(uint8 uartNo, uint8 n, uint8 ch[]);
//-------------------------------------------------------------------------*
//函数名: UartRe1 *
//功 能: 从串口接收1个字节的数据 *
//参 数: uint8 uartNo: 第uartNo个UART模块。其中uartNo取值为0,1,2 *
//返 回: 接收到的数据(若接收失败,返回0xff) *
// uint8 *p: 接收成功标志的指针(0表示成功,1表示不成功) *
//说 明: 参数*p带回接收标志,*p = 0,收到数据;*p = 1,未收到数据 *
// uartNo=0表示使用UART0模块,依此类推。 *
//-------------------------------------------------------------------------*
uint8 UartRe1 (uint8 uartNo, uint8 *p);
//-------------------------------------------------------------------------*
//函数名: UartReN *
//功 能: 从串口接收N个字节的数据 *
//参 数: uint8 uartNo: 第uartNo个UART模块。其中uartNo取值为0,1,2 *
// uint8 n: 要接收的字节数 *
// uint8 ch[]: 存放接收数据的数组 *
//返 回: 接收标志= 0 接收成功,= 1 接收失败 *
//说 明: uartNo=0表示使用UART0模块,依此类推。 *
// 调用了UartRe1函数 *
//-------------------------------------------------------------------------*
uint8 UartReN(uint8 uartNo, uint8 n, uint8 ch[]);
//-------------------------------------------------------------------------*
//函数名: UartSendString *
//功 能: 串口传输字符串 *
//参 数: uint8 uartNo: 第uartNo个UART模块; p: 要传输的字符串的指针 *
//返 回: 无 *
//说 明: 字符串以'\0'结束 *
// 调用了UartSend1函数 *
//-------------------------------------------------------------------------*
void UartSendString(uint8 uartNo,char *p);
//3,模块相关的宏定义
//示例波特率的宏定义
#define UART_BAUD 115200 //115200
//标志位掩码的定义
#define MCF_UART_RXD_MASK (0x04) //UART接收引脚定义掩码
#define MCF_UART_TXD_MASK (0x01) //UART发送引脚定义掩码
#define MCF_UART_RX_TEST (0x01) //UART接收缓冲区满标志位掩码
#define MCF_UART_TX_TEST (0x04) //UART发送缓冲区空标志位掩码
#define MCF_UART_RESET_TX (0x30) //UART控制寄存器复位发送器掩码
#define MCF_UART_RESET_RX (0x20) //UART控制寄存器复位接收器掩码
#define MCF_UART_RESET_MR (0x10) //UART复位模式寄存器掩码
#define MCF_UART_NONE_PARITY (0x10) //UART模式寄存器无奇偶校验掩码
#define MCF_UART_BIT_8 (0x03) //UART模式寄存器8位传输掩码
#define MCF_UART_CM_NORMAL (0x00) //UART模式寄存器正常通道模式掩码
#define MCF_UART_STOP_BITS_1 (0x07) //UART模式寄存器1位停止位掩码
#define MCF_UART_RCS_SYSCLK (0xD0) //UART时钟选择寄存器接收时钟选择掩码
#define MCF_UART_TCS_SYSCLK (0x0D) //UART时钟选择寄存器接收时钟选择掩码
#define MCF_UART_RX_ENABLED (0x01) //UART控制寄存器使能接收器掩码
#define MCF_UART_TX_ENABLED (0x04) //UART控制寄存器使能发送器掩码
//ColdFire的UART模块相关寄存器的定义
//x=0表示UART0模块 x=1表示UART1模块 x=2表示UART2模块
//UART的IO端口功能分配寄存器定义,其中x=0表示UART0端口,依此类推
#define MCF_GPIO_PUPAR(x) (*(vuint8 *)(&__IPSBAR[0x100071+ (x)]))
//UART模式寄存器
#define MCF_UART_UMR(x) (*(vuint8 *)(&__IPSBAR[0x000200+((x)*0x040)]))
//UART状态寄存器
#define MCF_UART_USR(x) (*(vuint8 *)(&__IPSBAR[0x000204+((x)*0x040)]))
//UART时钟选择寄存器
#define MCF_UART_UCSR(x) (*(vuint8 *)(&__IPSBAR[0x000204+((x)*0x040)]))
//UART命令寄存器
#define MCF_UART_UCR(x) (*(vuint8 *)(&__IPSBAR[0x000208+((x)*0x040)]))
//UART接收数据寄存器
#define MCF_UART_URB(x) (*(vuint8 *)(&__IPSBAR[0x00020C+((x)*0x040)]))
//UART发送数据寄存器,接收和发送数据寄存器使用同一个地址
#define MCF_UART_UTB(x) (*(vuint8 *)(&__IPSBAR[0x00020C+((x)*0x040)]))
//UART中断状态/掩码寄存器
#define MCF_UART_UIMR(x) (*(vuint8 *)(&__IPSBAR[0x000214+((x)*0x040)]))
//UART波特率寄存器1(高位)
#define MCF_UART_UBG1(x) (*(vuint8 *)(&__IPSBAR[0x000218+((x)*0x040)]))
//UART波特率寄存器2(低位) Baud=fsys/(32*divider)
#define MCF_UART_UBG2(x) (*(vuint8 *)(&__IPSBAR[0x00021C+((x)*0x040)]))
//定义UART中断相关的寄存器
//UART的中断控制器寄存器
#define MCF_UART_ICR_LEVEL(x) (*(vuint8 *)(&__IPSBAR[0x000C4D+(x)]))
//中断掩码控制器
#define MCF_UART_IMRL (*(vuint32*)(&__IPSBAR[0x000C0C]))
//中断掩码控制器中UART掩码设置(13,14,15位)
#define MCF_UART_IMRL_MASK(x) (0x00002000<<x)
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -