No.30252 作者:wireless2009 邮件:taozheng1988@126.com ID:122527 登陆:2次 文章数:33篇 最后登陆IP:58.34.48.183 最后登陆:2009/5/8 10:13:02 注册:2009/2/25 15:44:23 财富:221 发帖时间:2009/2/26 13:20:46 发贴者IP:58.34.34.131 标题:wireless2009:CC2430/CC2431实例程序---片内温度传感器使用[推荐] 摘要:No.30252CC2430/CC2431实例程序---片内温度传感器使用[推荐] //说明:本实验在成都无线龙提供的CC2430模块中调试通过。 //取片内温度传感器为AD 源,并将转换得到温度通过串口送至电脑。 #include "ioCC2430.h" #include "temp.h" #include "stdio.h" #define uint unsigned int #define ConversionNum 20 //定义控制灯的端口cd wxl #define led1 P1_0 #define led2 P1_1 void Delay(uint); void initUARTtest(void); void UartTX_Send_String(char *Data,int len); char adcdata[]=" 0.0C "; //将片内温度传感器AD 转换的结果转换成温度。 #define ADC14_TO_CELSIUS(ADC_value) ( ((ADC_value) > > 4) - 315) /**************************************************************** * 连续进行4 次AD 转换, * 将得到的结果求均值后将AD 结果转换为温度返回。****************************************************************/ INT8 getTemperature(void){ UINT8 i; UINT16 accvalue; UINT16 value; accvalue = 0; for( i = 0; i < 4; i++ ) { ADC_SINGLE_CONVERSION(ADC_REF_1_25_V | ADC_14_BIT | ADC_TEMP_SENS); ADC_SAMPLE_SINGLE(); while(!ADC_SAMPLE_READY()); value = ADCL > > 2; value |= (((UINT16)ADCH) < < 6); accvalue += value; } value = accvalue > > 2; // devide by 4 return ADC14_TO_CELSIUS(value); } /**************************************************************** *函数功能 :初始化串口0 * *入口参数 :无 * *返 回 值 :无 * *说 明 :57600-8-n-1 *cd wxl *将I/0 P10,P11 设置为输出去控制LED, 将系统时钟设为高速晶振,将P0口设置为 *串口0功能引脚,串口0使用UART模式,波特率设为57600,允许接收。在使用串口之前调用。 ****************************************************************/ void initUARTtest(void) { CLKCON &= ~0x40; //晶振 while(!(SLEEP & 0x40)); //等待晶振稳定 CLKCON &= ~0x47; //TICHSPD128分频,CLKSPD不分频 SLEEP |= 0x04; //关闭不用的RC振荡器 PERCFG = 0x00; //位置1 P0口 P0SEL = 0x3c; //P0用作串口 U0CSR |= 0x80; //UART方式 U0GCR |= 10; / ......
>>返回讨论的主题
|