CC2540 ADC实验总结(使用AIN0)
来源:互联网 发布:琳琅怎么绑定淘宝账号 编辑:程序博客网 时间:2024/05/20 05:53
本实验基于Blue博文与部分代码。
http://www.cnblogs.com/BlueMountain-HaggenDazs/p/4298381.html
没有测试原博主的代码,但原博主的代码在我这里使用AIN0通道时读取数据有错误,原因是原博主忽视了ADCH的符号位(因ADCL与ACDH合起来为一个signed int,详情看下图,手册p135)
问题出在Oops处:
uint GetAdcValue(void){ uint AdValue=0; ADCCON1 |= 0x40; while(!(ADCCON1 & 0x80)); AdValue = ADCL >>4;//Oops AdValue |= ADCH <<4;//Oops return AdValue; }
经过修改后测试可用的代码如下:
int GetAdcValue(void){ int AdValue=0; ADCCON1 |= 0x40; while(!(ADCCON1 & 0x80)); AdValue = ADCL; AdValue |= ADCH<<8; AdValue >>= 4;//取12位有效(包括一位符号位),ADCL最后两位为00,保留位 return AdValue; }
完整代码放出:
void AdcInit(void)//内部温度传感器{ ADCCON1 = 0x33;//软件启动转换 ADCCON3 = 0x70;//P0.7为参考电压,12位分辨率,选择AIN0通道输入 APCFG = 0x01;//P0.0 使能 P0SEL = 0x01;//P0.0 复用为其他功能 P0DIR = 0x00;//P0 输入模式 P0INP = 0x01;//P0.0 P0.0高阻态}int GetAdcValue(void){ int AdValue=0; ADCCON1 |= 0x40; while(!(ADCCON1 & 0x80)); AdValue = ADCL; AdValue |= ADCH<<8; AdValue >>= 4; return AdValue; }
以上。
0 0
- CC2540 ADC实验总结(使用AIN0)
- ADC实验复习总结
- BLE CC2540之ADC
- STM32L152 ADC使用总结
- ADC实验
- ADC实验
- stm32-10ADC实验(DMA方式)
- stm32学习笔记(十二)ADC实验
- Cc2540 协议栈UART实验
- Cc2540 协议栈UART实验
- cc2540 Packet Sniffer使用
- FL2440 adc 实验
- Launchpad ADC实验
- 关于STM32 ADC实验
- 12、ADC实验
- STM32学习-ADC实验
- 【stm32f407】ADC实验
- ADC使用
- 使用Async进行异步操作,先回复,后操作
- [BZOJ4710][Jsoi2011]分特产 容斥原理
- 假期训练——CodeForces - 742D Arpa's weak amphitheater and Mehrdad's valuable Hoses DP+dfs
- 队列操作 ——蓝桥杯
- HDU 1573 X的问题(模线性方程组)
- CC2540 ADC实验总结(使用AIN0)
- javascript 菜鸟学习
- STM32特性摘要
- VTK修炼之道27:图像基本操作_三维图像切片交互提取(回调函数、观察者-命令模式)
- MIUI8启用USB安装
- 446. Arithmetic Slices II - Subsequence
- CCF201512-1 数位之和(100分)
- LeetCode 290. Word Patter
- Java ReentranLock同步锁和Condition条件的使用