“必须执行Init_Clk函数,才能采集到二氧化碳接口485数据的问题”的解决
这个问题困扰了我很长一段时间,而且如果这个问题不解决,就有一个无法调和的矛盾:
执行Init_Clk函数,能采集到二氧化碳接口485数据,但是功耗大;
不执行Init_Clk函数,不能采集到二氧化碳接口485数据,但是功耗小。
这个矛盾在这次的低功耗应用中可要了命了,我的要求是:既要能采集到所有数据,还要功耗低。
不执行Init_Clk函数,采集二氧化碳接口485数据时,表现出来的现象是:
485传感器没有任何响应,就好像没有给485传感器发过采集命令似的。
但是我用板子直接连接pc测试却是好的,pc确实收到了板子发来的数据,而且pc发给板子的数据板子也能收到。
起初以为是因为没有执行Init_Clk函数而使用的默认主频MCLK=1MHz太低了,
然后又以为是串口波特率发生器选用的时钟源不合适,
总之试了无数种方案之后都是失败。
就在我想放弃的时候,突然想到了串口发送时的几个延迟,
而这几个延迟并没有针对不同的主频做处理,会不会是这个原因呢?
答案是确定的。
看SendData函数中以下程序:
#ifdef APP_HARDWARE_VERSION_3
P9OUT |= BIT0;
//要使用485必须要加上以下的两个延迟,否则发送的数据不全
Delay_ms(2);
#endif
Uart2SendData(pcSendBuf, iSendLength);
#ifdef APP_HARDWARE_VERSION_3
Delay_ms(5);
P9OUT &= ~BIT0;
#endif
其中Delay_ms函数是关键,我之前的处理并没有区别对待,把Delay_ms修改为以下:
void Delay_ms(unsigned long nValue)
{
unsigned long nCount;
int i;
unsigned long j;
#ifdef HAS_INIT_CLK
nCount = 2048; // MCLK = XT2CLK, 16MHz
#else
nCount = 2048/16;
#endif
for (i = nValue; i > 0; i--)
{
for (j = nCount; j > 0; j--)
;
}
}
注意有HAS_INIT_CLK的地方。
修改之后,终于即便不执行Init_Clk函数也可以正确采集二氧化碳接口485数据了。
“必须执行Init_Clk函数,才能采集到二氧化碳接口485数据的问题”的解决的更多相关文章
- Python利用PyExecJS库执行JS函数
在Web渗透流程的暴力登录场景和爬虫抓取场景中,经常会遇到一些登录表单用DES之类的加密方式来加密参数,也就是说,你不搞定这些前端加密,你的编写的脚本是不可能Login成功的.针对这个问题,现在有 ...
- Javascript自执行匿名函数(function() { })()的原理分析
匿名函数指没有指定函数名或指针的函数,自执行匿名函数只是其中一种,下文中称这种函数为:自执行函数 下面是一个最常见的自执行函数: // 传统匿名函数 (function() { alert('hell ...
- [Js/Jquery]立即执行匿名函数
摘要 有时使用js写了一个匿名方法,需要立即执行.因为没有方法名称,无法在其它地方调用. 匿名函数 匿名函数,可以认为是没有方法名称的函数. js中如果想执行匿名函数,结构如下: (function ...
- each(callback) 对于每个匹配的元素所要执行的函数
以每一个匹配的元素作为上下文来执行一个函数. 意味着,每次执行传递进来的函数时,函数中的this关键字都指向一个不同的DOM元素(每次都是一个不同的匹配元素).而且,在每次执行函数时,都会给函数传递一 ...
- C# 给某个方法设定执行超时时间 C#如何控制方法的执行时间,超时则强制退出方法执行 C#函数运行超时则终止执行(任意参数类型及参数个数通用版)
我自己写的 /// <summary> /// 函数运行超时则终止执行(超时则返回true,否则返回false) /// </summary> /// <typepara ...
- javascript自执行匿名函数
1)自执行匿名函数: 常见格式:(function() { /* code */ })(); 2)作用: function中的code代码在解释时就已经在运行了.因此可以用它创建命名空间, ...
- Javascript自执行匿名函数(function() { })()的原理浅析
匿名函数就是没有函数名的函数.这篇文章主要介绍了Javascript自执行匿名函数(function() { })()的原理浅析的相关资料,需要的朋友可以参考下 函数是JavaScript中最灵活的一 ...
- Swift - 时间控制器NSTimer(每隔一定时间执行某个函数)
时间控制器NSTimer可以实现定时器功能,即每隔一定时间执行具体函数,可以重复也可以只执行一次. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 cl ...
- linux下执行strlwr函数出错:ld returned 1 exit status
执行strlwr函数时报错.源程序例如以下: #include<stdio.h> #include<string.h> void main() { char s[10]={&q ...
随机推荐
- [C++ Primer Plus] 第6章、分支语句和逻辑运算符(二)课后习题
一.复习题 3. #include<iostream> using namespace std; void main() { char ch; int c1, c2; c1 = c2 = ...
- Server.Transfer VS Response.Redirect – Simplified
https://www.codeproject.com/Articles/775221/Server-Transfer-VS-Response-Redirect-Simplified Introduc ...
- 【六】jquery之HTML代码/文本/值[下拉列表框、多选框、单选框的选中]
val()方法不仅能设置元素的值,同时也能获取元素的值.另外,val()方法还有另外一个用处,就是它能使select(下拉列表框).checkbox(多选框)和radio(单选框)相应的选项被选中,在 ...
- 问题1——之Linux虚拟机ip地址消失
原文转自 https://blog.csdn.net/keep_walk/article/details/75115926 以前一直通过ifconfig命令查看ip地址,但是今天用XShell连接自己 ...
- 9foundation
注意点 1NSDate时间,时间字符串, 时间戳,格式器,四者的的关系 <1NSDate拥有属性时间戳 <2format格式器,可以直接把NSDate读取为时间字符串,把时间字符串读取为N ...
- [easyUI] autocomplete 简单自动完成以及ajax从服务器端完成
通过id取input标签对象,调用autocomplete方法 <script> var sources = [ "ActionScript", "Apple ...
- ionicAPP打开第三方APP
近来,碰到一个问题,需要在ionicAPP中打开第三方APP 然后,就找资料,发现了个比较好的解决方案 可以参考:https://blog.csdn.net/a727911438/article/de ...
- 第二周javaweb学习进度表
第一周 所花时间 三天 代码量 200行 博客量 3篇 知识点了解到的 学习到了HTML编程语言的相关知识比如checkbox复选框和radio单选按钮以及form表单的使用方法,form表单可以 ...
- vue.config.js初始化配置
let path = require('path')function resolve (dir) { return path.join(__dirname, dir)} module.exports ...
- redis pipline 和 事务
1. Pipeline:“管道”,和很多设计模式中的“管道”具有同样的概念,pipleline的操作,将明确client与server端的交互,都是“单向的”:你可以将多个command,依次发给se ...