STM32学习笔记-USART程序解释(原子)

STM32学习笔记-USART程序解释(原子)

ID:38284104

大小:261.10 KB

页数:7页

时间:2019-06-07

STM32学习笔记-USART程序解释(原子)_第1页
STM32学习笔记-USART程序解释(原子)_第2页
STM32学习笔记-USART程序解释(原子)_第3页
STM32学习笔记-USART程序解释(原子)_第4页
STM32学习笔记-USART程序解释(原子)_第5页
资源描述:

《STM32学习笔记-USART程序解释(原子)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、USART程序分析一.H文件#ifndef__USART_H#define__USART_H#include#include"stdio.h"externu8USART_RX_BUF[64];//接收缓冲,最大63个字节.末字节为换行符externu8USART_RX_STA;//接收状态标记//如果想串口中断接收,请不要注释以下宏定义//#defineEN_USART1_RX使能串口1接收voiduart_init(u32pclk2,u32bound);#endif解

2、释:extern作用域:如果整个工程由多个文件组成,在一个文件中想引用另外一个文件中已经定义的外部变量时,则只需在引用变量的文件中用extern关键字加以声明即可。可见,其作用域从一个文件扩展到多个文件了。例子:文件a.c的内容:#includeintBASE=2;//变量定义intexe(intx);//外部函数提前声明intmain(intargc,char*agrv[]){inta=10;printf("%d^%d=%d",BASE,a,exe(a));return0;}文件

3、b.c的内容:#includeexternBASE;//外部变量声明intexe(intx){inti;intret=1;for(i=0;i

4、rt.h"//加入以下代码,支持printf函数,而不需要选择useMicroLIB#if1#pragmaimport(__use_no_semihosting)//标准库需要的支持函数struct__FILE{inthandle;/*Whateveryourequirehere.Iftheonlyfileyouareusingis*//*standardoutputusingprintf()fordebugging,nofilehandling*//*isrequired.*/};/*FILEisty

5、pedef’dinstdio.h.*/FILE__stdout;//定义_sys_exit()以避免使用半主机模式_sys_exit(intx){x=x;}解释:一些支持的函数。//重定义fputc函数intfputc(intch,FILE*f){while((USART1->SR&0X40)==0);//循环发送,直到发送完毕USART1->DR=(u8)ch;returnch;}#endif解释:最后这里就是定义printf的输出执行单元了,比如现在是串口1输出,如果你要串口2,那么设置USART1

6、为USART2即可。#ifdefEN_USART1_RX//如果使能了接收//串口1中断服务程序//注意,读取USARTx->SR能避免莫名其妙的错误u8USART_RX_BUF[64];//接收缓冲,最大64个字节.//接收状态//bit7,接收完成标志//bit6,接收到0x0d//bit5~0,接收到的有效字节数目u8USART_RX_STA=0;//接收状态标记voidUSART1_IRQHandler(void){u8res;if(USART1->SR&(1<<5))//接收到数据{res=U

7、SART1->DR;if((USART_RX_STA&0x80)==0)//接收未完成{if(USART_RX_STA&0x40)//接收到了0x0d{if(res!=0x0a)USART_RX_STA=0;//接收错误,重新开始elseUSART_RX_STA

8、=0x80;//接收完成了}else//还没收到0X0D{if(res==0x0d)USART_RX_STA

9、=0x40;else{USART_RX_BUF[USART_RX_STA&0X3F]=res;USART_RX_STA++;if(US

10、ART_RX_STA>63)USART_RX_STA=0;//接收数据错误,重新开始接收}}}}}#endif解释:voidUSART1_IRQHandler(void)函数是一个串口1中断响应函数,当串口1发生了相应的中断后,就会跳到该函数执行。这里我们设计了一个小小的接收协议:通过这个函数,配合一个数组USART_RX_BUF[64],一个接收状态寄存器USART_RX_STA实现对串口数据的接收管理。USART_RX_BUF的最大值为

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。