GPRS模块上电后复位会导致开机函数不正常的问题原因及解决方法

之前使用的开机函数

void Gprs_modem_start_up()
{
GPIO_SetBits(GPIOB,GPIO_Pin_0); //RESET 脚要置成高电平,防止重启
do

GPIO_SetBits(GPIOF,GPIO_Pin_11);//开机电平       (先拉高后拉低是因为模块上反相了,即当单片机f11引脚为高,sim800的pwk引脚为低。)
//线程延时3秒供开机使用
rt_thread_delay(150);
//先拉高电平,再拉低
GPIO_ResetBits(GPIOF,GPIO_Pin_11);
rt_thread_delay(50);
}while((GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4)) ==0x01);
}

这样导致的结果是按单片机的复位键并执行这段代码以后,sim800模块有时是开机状态,有时是关机状态,当时不解,但看了开关机时序图后明白了,是因为该函数虽然开机考虑了大于1s,但是没有考虑status引脚变化的延迟时间是大于4s,也就是说当我们开机以后,status可能并没有很快的反应出高电压,此时它仍然是低,所以该段程序又执行一遍拉高拉低的动作,使其关机了。

我将代码改为以下代码,复位后就总是能是sim800模块开机了。当关机时,拉低大于1s开机,当开机时,拉低大于3s,模块重启。

void Gprs_modem_start_up()
{
GPIO_SetBits(GPIOB,GPIO_Pin_0); //RESET 脚要置成高电平,防止重启
do
{
GPIO_SetBits(GPIOF,GPIO_Pin_11);//开机电平
//线程延时3秒供开机使用
rt_thread_delay(320);
//先拉高电平,再拉低
GPIO_ResetBits(GPIOF,GPIO_Pin_11);
rt_thread_delay(80);
}while((GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_4)) ==0x01);
}

时间: 2024-07-31 09:51:15

GPRS模块上电后复位会导致开机函数不正常的问题原因及解决方法的相关文章

AndroidStudio升级后出现Refresh gradle project和connection timed out的原因和解决方法

笔者发现现在升级AndroidStudio不需要FQ了,于是在看到了升级提醒后手贱点击了升级.可悲剧的一幕发生了, 正在写的一个项目从上到下密密麻麻的错误,看了一下提示要求升级Gradle 那就升级吧 可是偏偏Gradle的升级需要FQ了,否则会一直卡在refresh gradle project或者显示connection timed out,所以 需要一个神秘的工具: 链接:http://pan.baidu.com/s/1eSgOJAi 密码:7inp 打开这个软件后,然后再试试更新Grad

Struts2中使用execAndWait后,在 Action中调用getXXX()方法报告java.lang.NullPointerException异常的原因和解决方法

使用 Struts2 编写页面,遇到一个要长时间运行的接口,因此增加了一个execAndWait ,结果在 Action 中调用 getContext()的时候报告异常 1 ActionContext context = ActionContext.getContext(); 2 ServletContext servletContext = (ServletContext) context.get(ServletActionContext.SERVLET_CONTEXT); //抛空指针异常

Visual Studio 打开解决方案后 弹出框显示 "正在打开文件..." 迟迟没反应 的解决方法

Visual Studio 打开解决方案后 弹出框显示 "正在打开文件...",任务管理器的devenv进程又很正常,不会显示"未响应". 而IDE的左下角有个 "正在等待分析完成..." 提示. 刚开始,我以为是VS插件问题,因为我刚安装了一个插件后,重启VS,打开解决方案就出现这个问题了,所以我以为是VS插件问题. 后来我把VS插件通通卸载了,把/ResetAddin /ResetSkipPkgs /ResetSettings 之类的deve

关于hue安装后出现KeyError: "Couldn't get user id for user hue"的解决方法

首先说明出现此问题的原因是因为你使用的root用户安装了hue,然后在root用户下使用的build/env/bin/supervisor,如下图所示那样: 知道了原因,就容易解决问题了.首先要创建个普通用户,并给添加密码.如果密码给的过于简单,会给出提示,忽略就行,如下图: 然后,我们要给刚才解压的hue文件改变拥有者属性,通过 chown -R 用户名 文件地址.如下图: 最后,我们使用 su 命令切换用户,到hue文件夹下执行运行hue的命令就可以了. 关于hue安装后出现KeyError

域名解析后网站却不能访问的原因及解决方法?

众所周知,域名解析的过程非常复杂,是一个全球域名系统逐级更新的方式,加上用户上网调用的DNS服务器也有缓存,只有缓存过期重新读取根数据库的解析记录,解析的IP地址才能被浏览者看到.但是有些用户会遇到域名解析之后,网站却不能访问.今天宵云小编就针对这个问题以及有哪些解决方法来个大家总结一下. 一般情况下,域名解析后却不能访问的原因: 1.域名解析提交后,一般不会立即生效,需要等待一段时间才能访问. 2.域名解析时,相关参数设置错误. 3.如果租用的国内服务器,网站备案未成功被系统取消域名绑定. 4

SharePoint 2010升级到sharePoint 2013后,人员失去对网站的权限的原因及解决方法。The reason and solution for permission lost after the upgrading

昨天碰到了一个问题,一个网站在从SharePoint 2010升级到SharePoint 2013后,人员都不能登录了,必须重加赋权,人员才能登录,这样非常麻烦. 原因:是认证方式的问题.在SharePoint 2010中,通过管理中心新建web application的时候,就会发现提供了两种不同的认证方式,第一种是classic auth(也就是我们通俗的称为windows 认证,其实这种叫法也不全面),另一种是claim base auth. 而当时claim base的认证方式微软还没有

mssql sqlserver 表增加列后,视图不会自动更新相关列的两种解决方法分享

摘要: 今天对物理数据表,进行增加列操作后,程序一直显示无法找到相应列,通过仔细比对发现,视图中无相应列更新,下文将具体的解决方法分享如下: 例: create view vw_test as select * from tableName go ---当我们在表tableName中新增列之,再次查询vw_test ---依然未发现相应列的存在. ----解决方法1:删除原视图,重新创建视图 drop view vw_test go create view vw_test as select *

“display:block-inline形式的Span或Div中添加文字后,导致Span或Div排版掉落、错位”的原因及解决方法

摘自:http://www.xuebuyuan.com/825857.html 最近在使用3个span(或div)制作带圆角边框的按钮时,按照常识,把span的display设置成inline-block,这样就可以设置span的width和height了,很爽的~ 可是当我在中间的span写上文字的时候,神奇的事情发生了: 是的,写上字的那个span掉下来了,掉落,排版错位,很恶心的东西!使用Chrome的开发者工具查看,css和盒模型没有半点问题,郁闷中-- 仔细观察发现,掉落的高度貌似跟文

Ubuntu 12.04 12.10每次开机后都弹出"检测到系统程序出现问题"的一个解决方法

打开终端,输入 sudo gedit /etc/default/apport 把里面的enabled=1改成enabled=0,保存