原创 CC2430串口接收程序解读

2008-8-22 15:56 3181 7 8 分类: 通信

CC2430串口接收程序解读<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


作者:徐元


审稿:黄小林


 关键字:CC2430,Uart无线龙LEDIAR


最近一直在做串口接收程序的研究,现在和大家一起来讨论一下无线龙CC2430开发板的串口接收程序。板子上的源程序是这样的:


void initUART(void)


{


   IO_PER_LOC_UART0_AT_PORT0_PIN2345();


   SET_MAIN_CLOCK_SOURCE(CRYSTAL);


   UART_SETUP(0, 9600, HIGH_STOP);


   U0CSR = 0xC5;


}


其中


#define IO_PER_LOC_UART0_AT_PORT0_PIN2345() do { PERCFG = (PERCFG&~0x01)|0x00; } while (0)


是用来设置寄存器PERCFG的,而SET_MAIN_CLOCK_SOURCE(CRYSTAL);则是用来设置晶振的,这两个程序都是调用的子程序,我觉得不再在这里深究,还有就是UART_SETUP(0, 9600, HIGH_STOP);这是一个波特率设置函数(将波特率设置成9600),我认为这里面唯一和串口通信有关系的就是设置U0CSRUSART0控制和状态),设置成UART模式,接收器使能,收到的字节就绪还有就是在发送或者接收中,USART忙。


例子程序里的这个串口接收程序是运用中断来完成的,所以首先要设置ISR(中断服务程序),其源代码是这样的:


void SET_UART0_ISR(void)


{


   U0CSR |= 0xd0;


U0UCR |= 0x02;


}


在这个例子程序里还有一个函数我认为就是串口的初始化函数,其具体的源代码是这样的:


void UARTxISRopen(void)


{


  U0CSR |= 0x40;


  IEN0 |= 0X04;//开串口接收中断 'URX0IE = 1',


}


最后要说一下的就是调用的中断函数,其源代码是这样的:


#pragma vector = URX0_VECTOR


 __interrupt void URX0_ISR(void){


      uarttemp = U0DBUF;


      U0DBUF = uarttemp;


  }


其主要的思想就是想把收/发寄存器的值读出赋到一个变量上,再将这个变量的值赋回给BUFFER,这样就能实现串口的回显功能。也就是说串口里的值始终在U0DBUF里,想要读串口的值就读这个变量的好了。


主要的函数的大概功能在这里都介绍了,现在再看一下主函数是怎样调用这些函数的吧。


main( void )


{


uchar temp = 0;


SLEEP &= ~0x04;


while(!(SLEEP & 0x40));  


CLKCON &= ~0x47; 


SLEEP |= 0x04;


initUART();


UARTxISRopen();


ENABLE_ALL_INTERRUPT();


while(1);


}


欢迎访问徐元的博客:http://blog.sina.com.cn/xywatersky,转载必须保证文章的完整性,请尊重作者,支持原创。

PARTNER CONTENT

文章评论1条评论)

登录后参与讨论

用户226992 2009-5-9 11:27

不知您上面说的这个波特率设置函数UART_SETUP(0, 9600, HIGH_STOP)在Zigbee06的协议栈里有没有,在哪?
相关推荐阅读
用户740043 2009-08-19 21:03
Sqlite 嵌入式数据库移植和使用
 1.    源代码的获取<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />sqlit...
用户740043 2009-05-11 22:57
keil MDK3.20注册机
发一个https://static.assets-stash.eet-china.com/album/old-resources/2009/5/11/c500a0c3-e421-430f-9160-b...
用户740043 2008-12-10 14:17
Zigbee 空中下载OAD实现步骤(推荐篇文章)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...
用户740043 2008-11-26 09:34
如何轻松使用Zigbee
如何突破瓶颈  轻松设计ZIGBEE应用系统<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /...
用户740043 2008-09-10 08:48
Zigbee2006的加密算法实现
Zigbee2006的加密算法实现<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />作...
用户740043 2008-09-04 15:27
Zigbee2006 空中下载功能(OAD)
Zigbee2006 空中下载功能(OAD)<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /...
EE直播间
更多
我要评论
1
7
关闭 站长推荐上一条 /3 下一条