打印
[STM32F1]

STM32软件库之串口通信

[复制链接]
1159|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
    花费三天时间编写的STM32F1的串口通信程序,使用简单,保证原创。程序说明(本程序只对串口1进行操作,其他串口可仿照串口1程序自己添加):
/*********************************************************************************
本程序只供学习使用,未经作者许可,不得用于其它任何用途
串口通信采用中断方式,初始化为接收模式;
接收到数据后开始计时,定时器中断查询是否超时,若超时认为接收完成,置接收完成标志并设置为关闭模式,
等待主程序读取串口状态,若超时未读取,定时器中断程序设置串口为空闲状态,并设为接收模式重新接收数据,已接收的数据被覆盖;
主程序读取串口状态,若为接收完成状态,则关闭定时器,超时计时归零;
接收到的数据保存在u8* uart1_rev_buf,接收数据后只需读取uart1_rev_buf;
将要发送的数据转入u8* uart1_send_buf,然后调用发送函数uart_send(u8 com,u8 lenth),数据会自动发送,发送完成后自动设为接收模式;
主程序接收数据解码,解码成功后设置为发送模式,发送完成后自动设置为接收模式,解码不成功由主程序设置为接收模式。

对外函数接口:
void uart_init(void);        //串口初始化
u8 uart_check_state(u8 com);//查询串口状态
void uart_send(u8 com,u8 lenth);//发送数据
u8 uart_receive(u8 com);//接收数据,返回数据长度
void BAUD_set(u8 com,u32 baud);//波特率设置
void uart_mode_set(u8 com,u8 mode);//串口模式设置

//外部数据接口,发送及接收的数据缓存
u8* uart1_send_buf;
u8* uart1_rev_buf;

//串口接收超时,接收超时认为接收完成
#define FRAMEOVERTIME  10  //超时时间为10ms 10*1 = 10ms,超时时间由用户设置
//读取数据超时,接收完自动设为关闭模式,读取超时自动设为接收模式
#define READOVERTIME   500 //超时时间为500ms 500*1 = 500ms,超时时间由用户设置

//外部读取串口状态
UART_idle        //空闲
UART_rev_finish  //接收数据完成
UART_sending     //正在发送
UART_receiving   //正在接收

//串口工作模式
#define MODE_close  //串口关闭模式
#define MODE_rmode  //串口接收模式
#define MODE_smode  //串口发送模式

//所有串口,将要开启的串口置1
#define UART1_OPEN  1
#define UART2_OPEN  0
#define UART3_OPEN  0
#define UART4_OPEN  0
#define UART5_OPEN  0

必要文件:
sys.h//系统配置头文件
调用外部函数:

修改日期:2019/12/17                                                                  
*********************************************************************************/
程序经过多次测试,暂时没有发现问题,希望各位经测试发现问题后及时反馈以便更新升级。
下面是串口调试助手测试的数据,近15万字节数据通信无一出错,最长连续通信数据达到1百万字节,而且没有丢失过一个字节。

UART.rar (4.45 KB)


使用特权

评论回复
沙发
yklstudent| | 2019-12-22 15:30 | 只看该作者
哦,

使用特权

评论回复
板凳
木木guainv| | 2020-1-17 12:44 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
地板
磨砂| | 2020-1-17 12:48 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
5
晓伍| | 2020-1-17 12:53 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
6
八层楼| | 2020-1-17 12:56 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
7
观海| | 2020-1-17 13:02 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
8
guanjiaer| | 2020-1-17 13:14 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
9
manufact| | 2020-1-17 13:52 | 只看该作者
感谢楼主分享自己的编程经验

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

110

帖子

2

粉丝