本帖最后由 re张风 于 2011-7-17 14:38 编辑
我老是讨厌官方的串口库,每次用都得写一大堆代码,所以为了自己使用方便,也就基于我自己的ARM核心板的芯片STM32F103ZCT6,重新封装了一个静态库。如有兴趣,各位可以参考。先说明,是静态库,不是源码。
库下载:
HOM3103_USARTV2.rar
(16.57 KB)
更新内容:
接收中断管理的BUFF更改为由外部程序提供,这样保证RAM的正确。
函数“OpenUART”进行了修改
头文件说明如下:
#ifndef _hom3103_usart_h
#define _hom3103_usart_h
typedef unsigned int UARTHandle;
#define COM1 (0)
#define COM2 (1)
#define COM3 (2)
#define Parity_No ((unsigned short)0x0000)
#define Parity_Even ((unsigned short)0x0400)
#define Parity_Odd ((unsigned short)0x0600)
/*
功能描述:打开串口
打开系统中合理存在的串口,如串口已打开,则会再进行一次初始化。
输入参数:
UART_PORT: 要打开的串口编号。指定为COM1、COM2、COM3
BaudRate:要打开串口的通讯波特率,2400-921600
Databits:数据位长度,8位或9位
Stopbits:停止位长充,1位或两位
Parity: 奇偶校验方式,主要有:无校验、奇校验、偶校验三种方式
RxBuf: 接收数据缓冲区 (V2版新增参数)
返回值:>0 当串口打开成功,当前值为串口打开的handle值。以后的操作全依靠该值。
=0 串口打开失败,主要是串口编号不正确
*/
UARTHandle OpenUART( unsigned char UART_PORT , int BaudRate, unsigned char Databits, unsigned char Stopbits ,unsigned short Parity , unsigned char *RxBuf );
/*
功能描述:关闭已打开的串口
关闭所指定的串口,如该口存在,则执行关闭操作,否则失败
输入参数:
hUART:串口的handle值,即打开串口成功后得到的handle值
返回值: 1 正常关闭指定串口
0 串口handle参数不正确,操作失败
*/
unsigned char CloseUART( UARTHandle hUART );
/*
功能描述:读取串口接收到的数据
库中开了200字节的接收BUFF,调用该函数,可以将BUFF中的数据全部读出来。
输入参数:
hUART:串口的handle值,即打开串口成功后得到的handle值
*RxBuf:所读取的数据存放的地址指针。在应用中需定义该指针所指向的BUFF
返回值:所读取的数据长度。如为0,则没有数据被读到。
*/
unsigned int ReceiveString( UARTHandle hUART , unsigned char *RxBuf);
/*
功能描述:串口数据发送
通过指定的串口发送数据
输入参数:
hUART:串口的handle值,即打开串口成功后得到的handle值
*TxBuf:要发送数据的BUFF指针。该BUFF需在应用中定义
txLen:要发送数据的字节长度
返回值: 1 数据发送正常启动
0 串口handle参数不正确,操作失败
*/
unsigned char SendString( UARTHandle hUART , unsigned char *TxBuf , unsigned short txLen );
#endif |