在ADCCON中,最后0位和1位互斥。
如果1位选1的话,0位的值无效。
如果1位选0的话,0位的值才有效。
当1位选1的话:这是应用层的程序
#if ADSTART==0
void niuniu(void)
{
uart_init();
adc_init();
beeper_init();

adc_read();

while(1)
{
itoa(adc_read());
if(adc_read() > 2500)
{
beeper_on();
}
else
{
beeper_off();
}
delay(10000);
}
}
#endif
这里注意while循环的上面必须有adc_read();如果去掉这个adc_read();情况如下:
加一个
uart_init();
adc_init();
beeper_init();
puts("\r\n loudan");
//adc_read();
while(1)
{
itoa(adc_read());
if(adc_read() > 2500)
{
beeper_on();
}
else
{
beeper_off();
}
delay(10000);
}
测试结果如下:
loudan0000
3069
3069
3069
3069
3069
3069
3069
3069
3069
?
loudan0000(这里是我又重启了一次开发版)
3069
3069
3069
3069
3069
3069
3069
3069
3069
3069
3069
3069

loudan0000
3069
3069
*******************************************
如果联系后边的当客户端强求发送一个,ADC转化的数据时,必须每一次都是正确的,但是去掉adc_read();的情况下,第一次的数据就是错误的。
这里是驱动里边的情况:
void adc_init(void)
{
#if ADSTART==0
ADC.ADCCON = 0x1<<1|0xff<<6|0x1<<14;
#elif ADSTART==1
ADC.ADCCON = 0xff<<6|0x1<<14;
#endif
}

#if ADSTART==1
void adc_enable(void)
{
ADC.ADCCON |= 0x1;
}
#endif

int adc_read(void)
{
int result;

#if ADSTART==0(这是我们分析的最开始的ADCCON,如果1位选1的话,0位的值无效。如果result = ADC.ADCDAT0&0x3ff;放到下边则程序无法运行)
result = ADC.ADCDAT0&0x3ff;

while(!(ADC.ADCCON&(0x1<<15)))
{
}
#elif ADSTART==1(这是我们分析的最开始的ADCCON,如果1位选0的话,0位的值有效。这两个while相反,这两个无论哪一个while和result换位置都是不能运行程序的。)
while(!(ADC.ADCCON&(0x1<<15)))
{
}

result = ADC.ADCDAT0&0x3ff;
#endif

return 3300/0x3ff*result;
}
#endif

ADC第一次读取的更多相关文章

  1. 记STM32F030多通道ADC DMA读取乱序问题

    问题描述通过 uint16_t ConvData[8]保存DMA搬运的ADC转换数值,但是这个数组数值的顺序总是和ADC不是顺序对应的.比如用7个通道的ADC,当设置ADC_InitStructure ...

  2. ASP.NET Core 问题排查:Request.EnableRewind 后第一次读取不到 Request.Body

    实际应用场景是将用户上传的文件依次保存到阿里云 OSS 与腾讯云 COS ,实现方式是在启用 Request.EnableRewind() 的情况下通过 Request.Body 读取流,并依次通过 ...

  3. 重定向管道流读取TXT文本第一次读取为""空字符串、type xxx.txt | go run . 报错、BOM头、[239,186,191] 字节数组

    重定向管道流读取TXT文本第一次读取为""空字符串.type xxx.txt | go run . 报错.BOM头.[239 186 191] 字节数组

  4. 基于STM8的ADC读取---STM8-第四章

    1. 综诉 想学会如何在STM8上使用ADC这个功能,我们先得了解单片机中ADC究竟是什么. ADC是模拟信号转成数值信号,单片机只能识别TTL电平,其实就是 1 或者 0 ,但是如果我们给它一个3. ...

  5. Cortex-M3学习日志(六) -- ADC实验

    上一次简单的总结了一下DAC方面的知识,好吧,这次再来总结一下ADC方面的东东.ADC即Analog-to-Digital Converter的缩写,指模/数转换器或者模拟/数字转换器.现实世界是由模 ...

  6. Working with Data » Getting started with ASP.NET Core and Entity Framework Core using Visual Studio » 读取关系数据

    Reading related data¶ 9 of 9 people found this helpful The Contoso University sample web application ...

  7. Java 利用 ByteArrayOutputStream 和 ByteArrayInputStream 避免重复读取配置文件

    最近参与了github上的一个开源项目 Mycat,是一个mysql的分库分表的中间件.发现其中读取配置文件的代码,存在频繁多次重复打开,读取,关闭的问题,代码写的很初级,稍微看过一些框架源码的人,是 ...

  8. EXEL表格读取 按键精灵

    EXEL表格读取(1,m)(2,m)表格信息,m为行数 以下为本帖隐藏内容 ============================== Call Plugin.Office.OpenXls(&quo ...

  9. Contoso 大学 - 5 – 读取关联数据

    原文 Contoso 大学 - 5 – 读取关联数据 By Tom Dykstra, Tom Dykstra is a Senior Programming Writer on Microsoft's ...

随机推荐

  1. iOS学习之Objective-C 2.0 运行时系统编程

    0 导言 本主主要内容包括: 1.概述2.参考3.运行时系统的版本和平台4.和运行时系统的交互5.消息6.动态方法解析7.消息转发8.类型编码9.属性声明 1 概述 Objective-C语言将决定尽 ...

  2. undefined reference to _imp__xmlFree

    Re: [xml] MSYS and MINGW: undefined reference to _imp__xmlFree From: Mike Peat <mpeat unicorninte ...

  3. XDU 1001 又是苹果(状态压缩)

    #include<cstdio> #include<cstring> ; using namespace std; int r[maxn],c[maxn]; char pic[ ...

  4. DevOps架构实践

    1. 场景 持续部署:业界没有统一明确地定义,简单理解为将集成结果部署到不同的环境供用户使用,并且立即反馈部署结果的实践,其中不同的环境包括:开发环境.测试环境.预发布环境.生产环境 持续部署两个核心 ...

  5. 【android】通过leakCanary找出程序内存泄露点

    背景 内存泄露是咱新手比较头痛的问题,因为它不像崩溃,在开发环境可以根据提示的错误信息排查问题. 你都不知道咱的app是否哪个犄角旮旯藏着一个吞噬内存的黑洞. 排查android 内存泄露比较底层高端 ...

  6. 【web Api性能提升技巧】(2)从DataReader手工创建Json字符串

    这个思路是从 一篇文章,关于<提升web api的性能>上看到的.自己实践了一番,写下步骤. 传统的DataReader是遵循这样的一个步骤: While(reader.Read()) { ...

  7. Java HashMap详细介绍和使用示例

    ①对HashMap的整体认识 HashMap是一个散列表,它存储的内容是键值对(key-value)映射. HashMap继承于AbstractMap,实现了Map.Cloneable.java.io ...

  8. Win10应用《纸书科学计算器》更新啦!

    <纸书科学计算器>在2016年8月拿了计算机设计大赛国家一等奖,现在仍记得我在答辩时还给评委们普及了一波UWP平台的知识.受此鼓励,这款应用也不会停下更新的脚步^_^.最近从1.9小幅升级 ...

  9. python3.6 pyinstaller 打包exe

    现在的pyinstaller 最新版本已经支持python3.6版本的打包了只需要进行如下的操作即可 1. pip install pyinstaller 2. pip install --upgra ...

  10. Swap交换分区--continue

    Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这部分内存就是Cache Memory(缓存内存).即使你的程序运行结束后,Cache Memory也不会自动释放.这就会导致你在Lin ...