这个问题困扰了我很长一段时间,而且如果这个问题不解决,就有一个无法调和的矛盾:
执行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数据的问题”的解决的更多相关文章

  1. Python利用PyExecJS库执行JS函数

      在Web渗透流程的暴力登录场景和爬虫抓取场景中,经常会遇到一些登录表单用DES之类的加密方式来加密参数,也就是说,你不搞定这些前端加密,你的编写的脚本是不可能Login成功的.针对这个问题,现在有 ...

  2. Javascript自执行匿名函数(function() { })()的原理分析

    匿名函数指没有指定函数名或指针的函数,自执行匿名函数只是其中一种,下文中称这种函数为:自执行函数 下面是一个最常见的自执行函数: // 传统匿名函数 (function() { alert('hell ...

  3. [Js/Jquery]立即执行匿名函数

    摘要 有时使用js写了一个匿名方法,需要立即执行.因为没有方法名称,无法在其它地方调用. 匿名函数 匿名函数,可以认为是没有方法名称的函数. js中如果想执行匿名函数,结构如下: (function ...

  4. each(callback) 对于每个匹配的元素所要执行的函数

    以每一个匹配的元素作为上下文来执行一个函数. 意味着,每次执行传递进来的函数时,函数中的this关键字都指向一个不同的DOM元素(每次都是一个不同的匹配元素).而且,在每次执行函数时,都会给函数传递一 ...

  5. C# 给某个方法设定执行超时时间 C#如何控制方法的执行时间,超时则强制退出方法执行 C#函数运行超时则终止执行(任意参数类型及参数个数通用版)

    我自己写的 /// <summary> /// 函数运行超时则终止执行(超时则返回true,否则返回false) /// </summary> /// <typepara ...

  6. javascript自执行匿名函数

    1)自执行匿名函数: 常见格式:(function() { /* code */ })(); 2)作用:       function中的code代码在解释时就已经在运行了.因此可以用它创建命名空间, ...

  7. Javascript自执行匿名函数(function() { })()的原理浅析

    匿名函数就是没有函数名的函数.这篇文章主要介绍了Javascript自执行匿名函数(function() { })()的原理浅析的相关资料,需要的朋友可以参考下 函数是JavaScript中最灵活的一 ...

  8. Swift - 时间控制器NSTimer(每隔一定时间执行某个函数)

    时间控制器NSTimer可以实现定时器功能,即每隔一定时间执行具体函数,可以重复也可以只执行一次. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 cl ...

  9. linux下执行strlwr函数出错:ld returned 1 exit status

    执行strlwr函数时报错.源程序例如以下: #include<stdio.h> #include<string.h> void main() { char s[10]={&q ...

随机推荐

  1. linux的必知必会规则

  2. STAT UN2102 Homework

    STAT UN2102 Homework 4 [100 pts]Due 11:59pm Monday, May 6th on CanvasYour homework should be submitt ...

  3. Bugku-CTF之看看源代码吧

    Day13 看看源代码吧 http://123.206.87.240:8002/web4/   本题要点:url解码   首先看到文本框,我们还是要习惯性输入一下

  4. 解决使用eclipse创建maven web项目时报Could not resolve archetype的问题

    前两天重装了系统,今天想写一个项目的时候出现了点问题. 在使用eclipse创建maven web项目时,点Finish后报了Could not resolve archetype的问题. Could ...

  5. .Net 读取配置文件 xml

    直接解析XML文件 1.System.Xml.Linq命名空间下提供可以使用linq查询的类,使用linq to xml读取也很方便. 2.还可以使用System.Xml.Serialization类 ...

  6. 20175312 2018-2019-2 《Java程序设计》第5周学习总结

    20175312 2018-2019-2 <Java程序设计>第5周学习总结 教材学习内容总结 已依照蓝墨云班课的要求完成了第六章的学习,主要的学习渠道是PPT,和书的课后习题. 总结如下 ...

  7. TCP协议三次握手、四次挥手

    TCP的概述 TCP 把连接作为最基本的对象,每一条 TCP 连接都有两个端点,这种断点我们叫作套接字(socket),它的定义为端口号拼接到 IP 地址即构成了套接字,例如,若 IP 地址为 192 ...

  8. XGpio函数

    头文件 #include"xgpio.h" int XGpio_Initialize(XGpio * InstancePtr, u16 DeviceId) 功能:初始化GPIO 参 ...

  9. 问题处理:Library not loaded: /usr/local/opt/readline/lib/libreadline.7.dylib (LoadError)

    进入rails 文件夹, terminal输入rails console报告❌. 类似下面的 Running via Spring preloader Traceback (most recent c ...

  10. erlang 笔记(06/03/02)

    1 .同时打开的端口数量限制(Open ports) erlang:system_info(port_limit)查询 可以通过环境变量ERL_MAX_PORTS修改,或者配置erlang启动参数(标 ...