完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
#include “ioCC2530.h”
#include typedef unsigned int uint; typedef unsigned char uchar; uchar count = 0; void Init_Clock_32MHz(); void Init_Uart0(); void UART0_Send_Byte(unsigned char dat); void UART0_Send_String(unsigned char *str); void Init_ADC1(); void Init_Timer1(); int Get_ADC1_Data(); /主函数==/ void main() { Init_Clock_32MHz(); Init_Uart0(); Init_ADC1(); Init_Timer1(); while(1) { if(count == 15){ count = 0; UART0_Send_String(“光照传感器电压值 “); char* s = NULL; sprintf(s ,”%d”, Get_ADC1_Data); UART0_Send_String(s); } } } /初始化系统时钟函数==/ void Init_Clock_32MHz() { CLKCONCMD &= ~0x40; //选择系统时钟源为32MHZ晶振 while(CLKCONSTA & 0x40); //等待晶振稳定 CLKCONCMD &= ~0x47; //设置系统主时钟频率为32MHZ } /初始化串口0函数=/ void Init_Uart0() { //端口相关的配置 PERCFG = 0x00; //串口0的引脚映射到位置1,即P0_2和P0_3 P0SEL = 0x3C; //将P0_2和P0_3端口设置成外设功能 //波特率相关的配置 U0BAUD = 59; //32MHz的系统时钟产生9600BPS的波特率 U0GCR = 8; // 32MHz—8 //串口属性相关的配置 U0UCR |= 0x80; //禁止流控,8位数据,清除缓冲器 U0CSR |= 0x80; //选择UART模式,使能发器 //串口中断相关的配置 UTX0IF = 0; //清除TX发送中断标志 EA = 1; //使能总中断 } /=串口0单字节发送函数=/ void UART0_Send_Byte(unsigned char dat) { U0DBUF = dat; //将要发送的1字节数据写入U0DBUF while(!UTX0IF); //等待TX中断标志,即数据发送完成 UTX0IF = 0; //清除TX中断标志,准备下一次发送 } /=UART0发送一个字符串/ void UART0_Send_String(unsigned char *str) { while(*str != ‘ ’) { UART0_Send_Byte(*str++); // 发送一字节 } } /=初始化定时器T1函数=0.2s/ void Init_Timer1() { CLKCONCMD &= 0x80; //时钟速度设置为32MHz T1CTL = 0x0E; // 配置128分频,模比较计数工作模式,并开始运行 T1CCTL0 |= 0x04; //设定timer1通道0比较模式 T1CC0L =50000 & 0xFF; // 把50000的低8位写入T1CC0L T1CC0H = ((50000 & 0xFF00) >> 8); //把50000的高8位写入T1CC0H T1IF=0; //清除timer1中断标志(同IRCON &= ~0x02)T1STAT &= ~0x01; //清除通道0中断标志TIMIF &= ~0x40; //不产生定时器1的溢出中断//定时器1的通道0的中断使能T1CCTL0.IM默认使能IEN1 |= 0x02; //使能定时器1的中断EA = 1; //使能全局中断 } /=定时器T1中断服务子程序===/ #pragma vector = T1_VECTOR //中断服务子程序 _interrupt void T1_ISR(void) { EA = 0; //禁止全局中断 count++; T1STAT &= ~0x01; //清除通道0中断标志 EA = 1; //使能全局中断 } /=ADC初始化函数==/ void Init_ADC1() { APCFG |= 0x01; //配置模拟I/O使用 P0SEL |= 0x01; //P0_0设置位=为外设 P0DIR &= ~0x01; //配置P0)的方向为输入 } /*ADC电压采样函数====*/ int Get_ADC1_Data() { int value; ADCIF = 0; //参考电压选择AVDD5引脚,256抽取率,通道0 ADCCON3 = (0x80 | 0x20 | 0x00); while(!ADCIF); //等待ADC转换完成 //value 中 value=ADCH; value=value<<8; value|=ADCL;//AD值转化电压值 32763 标志3.3v value=(value*330); value=value>>15;//除以32768 return value; } |
|
|
|
只有小组成员才能发言,加入小组>>
3331 浏览 9 评论
3011 浏览 16 评论
3505 浏览 1 评论
9091 浏览 16 评论
4104 浏览 18 评论
1214浏览 3评论
628浏览 2评论
const uint16_t Tab[10]={0}; const uint16_t *p; p = Tab;//报错是怎么回事?
615浏览 2评论
用NUC131单片机UART3作为打印口,但printf没有输出东西是什么原因?
2358浏览 2评论
NUC980DK61YC启动随机性出现Err-DDR是为什么?
1919浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-8 03:25 , Processed in 1.732895 second(s), Total 78, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (威廉希尔官方网站 图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号