while(1);的作用
单片机中while(1)有两种用途, while(1); 意义:这是一个死循环,代码不再向下执行。 用途: 1. 一般在调试代码时,为了检测一部分代码是否OK,防止后面的代码干扰执行结果,会在观测点加上while(1); 2. 有些代码检测到运行错误时,会抛出错误(打印、设置错误码),然后进入while(1); 3. 机器需要复位时,停止喂看门狗,进入while(1); 迫使看门狗超时,产生硬件复位 while( 1 ) { 代码 } 意义:这里将会重复执行{}中的代码 用途: 1. 单片机在不使用操作系统时,主程序一般都使用这种架构 2. 操作系统中的进程,执行任务时,有些也会使用这种架构 3. {}中的代码不停地检测某个条件,当条件符合时,跳出该循环,继续向下执行 我们在单片机中使用while(1),大部分还是为了防止程序跑飞,因为很多时候执行完某段程序后单片机的程序指针PC(就是程序指针)并不会停止,仍然会继续从ROM中读取指令并执行,这样一来可能会出现程序跑飞的情况,进而出现不确定的结果,我们加个while(1)就能让程序在执行完后在原地循环,相当于停在原地,防止跑飞。
原则上来讲,如果程序中没有加结尾的话,程序计数器会继续累加,从而执行正常程序后面的ROM空间里面的指令,不过一般这个指令都是0XFF,这就要看这条指令的含义了,如果是空的话就会一直执行到最后,直到程序计数器溢出,只是不知道程序计数器发生溢出是一个什么状态,有可能回到复位状态值,也有可能直接就让单片机死在这里不工作,这个就要看单片机的具体设计了。
在主程序里应当有while(1){ ..;}否则单片机的程序会继续按地址运行下去,到0ffffh后-》00000h。如果不加while(1)语句,单片机依然正常运行,就是后面的地址里恰好有什么东西使得程序形成死循环,没有飞跑,那也是凑巧。
while(1);的作用相关推荐
- Object的finalize()方法的作用是否与C++的析构函数作用相同
Object的finalize()方法的作用是否与C++的析构函数作用相同 public class Finalization {private static Finalization finaliz ...
- 浅显易懂 Makefile 入门 (02)— 普通变量和自动变量定义、使用($@、$^、$< 作用)、变量覆盖 override、变量的来源 origin
1. 变量的定义 Makefile 文件中定义变量的基本语法如下: 变量的名称=值列表 变量的名称可以由大小写字母.阿拉伯数字和下划线构成.等号左右的空白符没有明确的要求,因为在执行 make 的时候 ...
- 【B/S实践】解决:vs中修改样式表后不起作用的问题
缓存,有好多,cpu和内存之间的三级缓存,浏览器内的缓存! 缓存是因为速率不对等,通过缓存来加速内容的显示! 今天我在敲牛腩的时候遇到一个问题,找了半小时,才发现是缓存导致的问题! 试着运行aspx文 ...
- 卷积神经网络之卷积计算、作用与思想 深度学习
博客:blog.shinelee.me | 博客园 | CSDN 卷积运算与相关运算 在计算机视觉领域,卷积核.滤波器通常为较小尺寸的矩阵,比如3×33×3.从这个角度看,多层卷积是在进行逐层映射,整 ...
- 机器学习——标准化/归一化的目的、作用和场景
对每个特征进行归一化处理,使得每个特征的取值缩放到0~1之间.这样做有两个好处: 模型训练更高效. 特征前的权重大小可代表该变量对预测结果的贡献度(因为每个特征值本身的范围相同). (一)归一化的作用 ...
- Linux操作系统下文件作用
linux下的文件结构,看看每个文件夹都是干吗用的 /bin 二进制可执行命令 /dev 设备特殊文件 /etc 系统管理和配置文件 /etc/rc.d 启动的配置文件和脚本 /home 用户主目录的 ...
- python sys.argv[] 的作用
sys.argv[]是什么 argv 是sys库里面的所以使用的 需要先引入sys (使用import sys) sys.argv[]的作用 从程序外获取参数,怎样理解呢,例如在终端中运行test脚本 ...
- C++ namespace 的作用以及使用
namespace 是什么: 命名空间(namespace)是一种描述逻辑分组的机制,可以将按某些标准在逻辑上属于同一个任务中的所有类声明放在同一个命名空间中.标准C++库(不包括标准C库)中所包含的 ...
- Android Environment 的作用以及常用的方法
从源码中可以看到这样一句话 Provides access to environment variables Environment的作用是: 提供对环境变量的访问 常见的方法 //外部存储设备的当 ...
- RecyclerView Adapter中notifyDataSetChanged 的作用
一直认为notifyDataSetChanged 是 用来刷新数据的 当数据发生变化的时候调用notifyDataSetChanged 官方说:通知任何注册的观察者数据发生了改变(Notify an ...
最新文章
- 《因果科学周刊》第2期:如何解决混淆偏差?
- 芯片老化验证流程_如何正确评估芯片的老化程度?
- Shiro 那点事儿
- 大数据技术hadoop入门级生态圈介绍
- 转:sqlserver2005安装时提示“无法找到产品SQLXml4的安装包。
- Linq中的group by多表多字段,Sum求和
- 手写数字识别代码,可以跑通
- 归并排序的C++实现
- 大场面试必问:秒杀90%Java面试者,后悔没有早点知道!
- 2.Dockerfile
- 【瑕疵检测】基于matlab瓶盖瑕疵检测【含Matlab源码 730期】
- 神经网络与深度学习第1章:绪论 阅读提问
- 华为hg255d+Openwrt锐捷认证在某农业公园
- 自动配置和 thymeleaf模板引擎
- 第三方Android应用商店也有安全问题
- 马克飞象 Markdown 使用和学习
- React Native入门(十四)之动画(1)Animated详解
- 小蜜蜂商城系统解析,结合众筹卖货活动,流水千万
- Java大对象类型的Hibernate映射
- 简单实用 铃铛运动动画制作AE教程