CC2530串口驱动.docx

上传人:lao****ou 文档编号:873200 上传时间:2024-07-05 格式:DOCX 页数:17 大小:55.23KB
下载 相关 举报
CC2530串口驱动.docx_第1页
第1页 / 共17页
CC2530串口驱动.docx_第2页
第2页 / 共17页
CC2530串口驱动.docx_第3页
第3页 / 共17页
CC2530串口驱动.docx_第4页
第4页 / 共17页
CC2530串口驱动.docx_第5页
第5页 / 共17页
亲,该文档总共17页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《CC2530串口驱动.docx》由会员分享,可在线阅读,更多相关《CC2530串口驱动.docx(17页珍藏版)》请在第一文库网上搜索。

1、CC2530串口驱动无论学习哪款MUC串口对于我们进行实验调试都是非常方便实用的,可以把程序中涉及的某些中间量或者其他程序状态信息打印出来显示在电脑上进行调试,许多MUC和PC机通信都是通过串口来进行的。CC2530有两个USB转串口,分别是USARTO和USART1。USARTO和USART1是串行通信接口,它们能够分别运行于异步幽1模式或者同步SP1模式。两个USART具体同样的功能,可以设置在单独的I/O引脚。*文件名:Uart.c*功能:CC2530串口相关函数*详细:串口相关函数串口最大晅为系统时钟的1/16inc1udesystem,h”ftinc1udeuart.h相关UART状

2、态结构typedefstruct(u8BuffFu11;接收BUff满u8*RxBuff;接收BUff指针u16RxBuffSize;接收缓冲区大小,一帧数据大小u16UartRxCnt;接收数据计数器UartRxTypeDef;staticUartRXJTypeDefUART_RX2;staticconstu8BAUD_M11=59,59,59,216,59,216,59,216,59,216,216;32MHZ系统时钟对应的分频器小数部分staticconstu8BAUD_E11=6,7,8,8,9,9,10,10,11,U,12;32MHZ系统时钟对应的分频器指数部分* 函数:voidU

3、ART_Init(UART_CHch,USART_BAUDBaud,Functiona1StateRxIntEn)* 功能:串口初始化* 参数:ch:通道选择,UARTCHO,UARTCH1Baud:波特率控制,见USART_BAUDRxIntEnrENAB1E:使能串口接收中断* 返回:无* 依赖:底层宏定义* 说明:一个起始位,8个数据位,一个停止位,无奇偶校验需要开启全局中断voidUARTJnit(UARTCHch,USART.BAUDBaud,Functiona1StateRxIntEn)switch(ch)caseURTCHO:UOCSR=BIT7BIT6;UART模式,使能接收U

4、oUCR=B1T1;无流控,无奇偶校验,8bit,1个停止位,停止位高电平,起始低电平UOGCR二BAUD_EBaud;波特率分频器指数部分UOBAUD=BAUDJIBaud;波特率分频器小数部分POSE1I=BIT2+BIT3;/PO.3TXD,PO.2RXDIEN2&二(13);关闭发送中断URXOIF=0;清除串口接收中断标志UTXOIF=0;清除串口发送中断标志URXOIE二(RxIntEn=ENAB1E)?1:0;使能串口接收中断break;caseUART_CH1:(U1CSR=BIT7+BIT6;UART模式,使能接收U1UCR二B1T1;无流控,无奇偶校验,8bit,1个停止位

5、,停止位高电平,起始低电平U1GCR=BAUD_EBaud;波特率分频器指数部分U1BAUD=BAUDJfBaud;波特率分频器小数部分P1SE1I=BIT4+BIT5;/PO.5TXD,PO.4RXDURX1IF=0;清除串口接收中断标志UTX1IF=0;清除串口发送中断标志URX1IE=(RxIntEn=ENAB1E)?1:0;使能串口接收中断break;defau1t:return;UART_SetRxBuff(ch,NU11,O);初始化串口缓冲区无效)* 函数:voidUART_SendByte(UART_CHch,u8data)* 功能:UART字节发送函数* 参数:ch:通道选择

6、,UART_CHO,UART_CH1data:需要发送的数据* 返回:无* 依赖:底层宏定义* 说明:无voidUART_SendByte(UART_CHch,u8data)(switch(ch)(caseUART_CH0:(UODBUF二data;发送字节数据whi1e(!(UOCSR&BITD);等待发送数据寄今番为空UOCSR&=BIT1;break;caseUARTCHI:U1DBUF二data;发送字节数据whi1e(!(U1CSR&BIT!);等待发送数据寄存器为空U1CSR&二BIT1;break;*函数:defau1t:break;voidUART2_SendData(u8*p

7、buff,u161en)*功能:串口发送任意长度数据*参数:ch:通道选择,UARTCHO,UARTCH1pbuff:数据缓冲区指针,1en:数据长度*返回:无*依赖:底层宏定义*说明:无voidUART-SendData(UART_CHch,u8*pbuff,u161en)u16i;switch(ch)(caseUARTCHO:(for(i=0;i1en;i+)UODBUF=pbuffi;发送字节数据whi1e(!(UOCSR&BITD);等待发送数据寄存器为空UOCSR&=BIT1;)break;caseUART_CH1:for(i=0;i1en;i+)(U1DBUF=pbuffi;发送字

8、节数据whi1e(!(U1CSR&BITD);等待发送数据寄存器为空U1CSR&二BIT1;break;defau1t:break;* 函数:voidUART2_SendString(UART_CHch,constchar函数:voidUART_RxEnab1e(UART_CHch,Functiona1StateEnab1e)*功能:UART接收使能*参数:ch:通道选择,UARTCHO,UARTCH1pStr)* 功能:UART发送字符串* 参数:ch:通道选择,UARTCHO,UARTCH1pStr:字符串指针* 返回:无* 依赖:底层宏定义* 说明:遇到0后停止发送voidUART_Se

9、ndString(UART_CHch,constchar*pStr)whi1e(*pStr!=i0f)(UART_SendByte(ch,*pStr+);)Enab1erENAB1E:使能接收,DISAB1E:取消接收* 返回:无* 依赖:底层宏定义* 说明:无voidUART_RxEnab1e(UART_CHch,Functiona1StateEnab1e)switch(ch)(caseUARTCHO:UOCSR二(Enab1e=ENAB1E)?(UOCSRBIT6):(UOCSR&(B6);使能接收break;caseUARTCHI:U1CSR=(Enab1e=ENAB1E)?(U1CSR

10、BIT6):(U1CSR&(BIT6);使能接收break;defau1t:break;)/UARTO中断服务程序* Pragmavector=URXO_VECTORinterruptvoidUART0_IRQHandIer(void)if(UARTRX1.RxBuffSize0)UARTRX0if(UARTRX.RxBuffUARTRX0.UartRxCnt+=UODBUF;0.UartRxCnt=UARTRX0.RxBuffSize)UART_RX0.UartRxCnt=0;UARTRX0.BuffFu11=1;e1seURXOIF0;清除串口接收中断标志/UART1中断服务程序#Prag

11、maVeCtor=URX1VECTORinterruptvoidUART1_IRQHand1er(void)if(UART_RX1.RxBuffSize0)UART_RX1.RxBuffUART_RX1.UartRxCnt+=U1DBUF;if(UART_RX1.UartRxCnt=UART_RX1.RXBUffSiZe)UARTRX1.UartRxCnt=O;UART_RX1.BuffFu11=1;)e1seURX1IF=0;清除串口接收中断标志)* 函数:boo1UART_GetNewData(UART_CHch,u8*pData)* 功能:获取串口新数据* 参数:ch:通道选择,UART

12、_CHO,UART_CH1PData:数据缓冲区指针* 返回:TRUE:有新数据,FA1SE:无新数据* 依赖:底层宏定义* 说明:用于非中断模式下获取串口新数据boo1UART.GetNewData(UART_CHch,u8*pData)switch(ch)caseUART_CHO:(if(UOCSR&BIT2)*pData=UODBUF;returnTRUE;returnFA1SE;break;caseUART_CH1:if(U1CSR&BIT2)(*pData=U1DBUF;returnTRUE;)returnFA1SE;break;defau1t:returnFA1SE;* 函数:bo

13、o1UART_GetRxBuffFu1!F1ag(UART_CHch)* 功能:获取串口接收缓冲区满标志* 参数:ch:通道选择,UARTCHO,UARTCH1* 返回:TRUE:满,FA1SE:没有满* 依赖:底层宏定义* 说明:用于判断接收缓冲区是否满,会清除标志boo1UART-GetRxBuffFu1IF1ag(UART_CHch)if(URTRXch.BuffFu1D缓冲区已满UART_RXch.BuffFu11=0;/清除满标志returnTRUE;)returnFA1SE;)*函数:voidUART_SetRxBuff(UART_CHch,u8功能:设置串口接收缓冲区pRxBuf

14、f,u16BuffSize)*参数:ch:通道选择,UART_CHO,UART_CH1pRxBuff:缓冲区指针,BuffSize:缓冲区大小* 返回:无* 依赖:底层宏定义* 说明:用于中断接收voidUART.SetRxBuff(UART_CHch,u8*pRxBuff,u16BuffSize)UART_RXch.RxBuffSize=BuffSize;设置缓冲区大小URTRXch.RxBuff=pRxBuff;设置缓冲区指针UART_RXch.UartRxCnt=0;计数器清零)* 函数:u16UART_GetRxCnt(UART_CHch)* 功能:获取串口接收数据计数器* 参数:ch:通道选择,UART_CHO,UART_CH1* 返回:接收到的数据数量* 依赖:底层宏定义* 说明:无u16UARTGetRxCnt(UARTC

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有,必要时第一文库网拥有上传用户文档的转载和下载权。第一文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第一文库网,我们立即给予删除!



客服