ADC第一次读取
在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第一次读取的更多相关文章
- 记STM32F030多通道ADC DMA读取乱序问题
问题描述通过 uint16_t ConvData[8]保存DMA搬运的ADC转换数值,但是这个数组数值的顺序总是和ADC不是顺序对应的.比如用7个通道的ADC,当设置ADC_InitStructure ...
- ASP.NET Core 问题排查:Request.EnableRewind 后第一次读取不到 Request.Body
实际应用场景是将用户上传的文件依次保存到阿里云 OSS 与腾讯云 COS ,实现方式是在启用 Request.EnableRewind() 的情况下通过 Request.Body 读取流,并依次通过 ...
- 重定向管道流读取TXT文本第一次读取为""空字符串、type xxx.txt | go run . 报错、BOM头、[239,186,191] 字节数组
重定向管道流读取TXT文本第一次读取为""空字符串.type xxx.txt | go run . 报错.BOM头.[239 186 191] 字节数组
- 基于STM8的ADC读取---STM8-第四章
1. 综诉 想学会如何在STM8上使用ADC这个功能,我们先得了解单片机中ADC究竟是什么. ADC是模拟信号转成数值信号,单片机只能识别TTL电平,其实就是 1 或者 0 ,但是如果我们给它一个3. ...
- Cortex-M3学习日志(六) -- ADC实验
上一次简单的总结了一下DAC方面的知识,好吧,这次再来总结一下ADC方面的东东.ADC即Analog-to-Digital Converter的缩写,指模/数转换器或者模拟/数字转换器.现实世界是由模 ...
- 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 ...
- Java 利用 ByteArrayOutputStream 和 ByteArrayInputStream 避免重复读取配置文件
最近参与了github上的一个开源项目 Mycat,是一个mysql的分库分表的中间件.发现其中读取配置文件的代码,存在频繁多次重复打开,读取,关闭的问题,代码写的很初级,稍微看过一些框架源码的人,是 ...
- EXEL表格读取 按键精灵
EXEL表格读取(1,m)(2,m)表格信息,m为行数 以下为本帖隐藏内容 ============================== Call Plugin.Office.OpenXls(&quo ...
- Contoso 大学 - 5 – 读取关联数据
原文 Contoso 大学 - 5 – 读取关联数据 By Tom Dykstra, Tom Dykstra is a Senior Programming Writer on Microsoft's ...
随机推荐
- Jmeter(九)压力测试
一般我们在做压力测试的时候,分单场景和混合场景,单场景也就是咱们压测单个接口的时候,多场景也就是有业务流程的情况下,比如说一个购物流程,那么这样的场景就是混合场景,就是有多个接口一起来做操作.1.单场 ...
- Jmeter(五)mysql的增删改查
一.导入jdbc的jar包,因为jmeter本身不能直接连接mysql,所以需要导入第三方的jar包,来连接mysql jar包下载地址:https://pan.baidu.com/s/17qQZPF ...
- python全栈开发从入门到放弃之装饰器函数
什么是装饰器#1 开放封闭原则:对扩展是开放的,对修改是封闭的#2 装饰器本身可以是任意可调用对象,被装饰的对象也可以是任意可调用对象#3 目的:''' 在遵循 1. 不修改被装饰对象的源代码 2. ...
- android 带CheckBox对话框
package com.example.dialog4; import android.os.Bundle;import android.app.Activity;import android.app ...
- centos7 vim显示行号
CentOS7下可能有n个账户,让vim显示行号有两种方法:仅让当前用户显示行号和让所有用户显示行号 一.仅让当前用户显示行号 输入命令:vim ~/.vimrc 写入:set nu 保存:wq ...
- [Windows Powershell]-学习笔记(4)
Powershell 定义变量 在powershell中变量名均是以美元符"$"开始,剩余字符可以是数字.字母.下划线的任意字符,并且powershell变量名大小写不敏感($a和 ...
- PKU 1932 XYZZY(Floyd+Bellman||Spfa+Floyd)
题目大意:原题链接 给你一张图,初始你在房间1,初始生命值为100,进入每个房间会加上那个房间的生命(可能为负),问是否能到达房间n.(要求进入每个房间后生命值都大于0) 解题思路: 解法一:Floy ...
- 斐迅面试记录—SSL和TLS的区别
SSL 是洋文“Secure Sockets Layer”的缩写,中文叫做“安全套接层”.它是在上世纪90年代中期,由网景公司设计的.(顺便插一句,网景公司不光发明了 SSL,还发明了很多 Web 的 ...
- WLAN QOS
1. 理解WLAN QOS 1.1 WLAN QOS简介 802.11的WLAN网络为用户提供了公平竞争无线资源的无线接入服务,但不同的应用需求对于网络的要求是不同的,而原始802.11网 ...
- Javascript 中的 call 和 apply
发表于 2012年02月1日 by 愚人码头 原文链接:http://www.css88.com/archives/4431 JavaScript 中通过call或者apply用来代替另一个对象调 ...