延时函数如何延时

延时函数如何延时延时函数如何延时**函数样例编译软件编译后的汇编指令Delay_ms(200);…

大家好,又见面了,我是你们的朋友全栈君。

延时函数如何延时

**函数样例                                                             编译软件编译后的 汇编指令
Delay_ms(200);                                         //     1、 0x0000058C 20C8      MOVS     r0,#0xC8
void Delay_ms(unsigned int time)
{
    unsigned char  n;
   while(time>0)                                               //       3、0x00000210 2800      CMP      r0,#0x00                                                                             
    {
			for(n=0;n<4;++n)                                  //      4、 0x00000204 2100      MOVS     r1,#0x00
			{                                               //   5、 0x00000206 1C49      ADDS     r1,r1,#1
				;                                           //  6、 0x00000208 B2C9      UXTB     r1,r1
				                                            // 7、 0x0000020A 2902      CMP      r1,#0x02
				                                           //    8、 0x0000020C D3FB      BCC      0x00000206
				                                           //    9、 0x0000020E 1E40      SUBS     r0,r0,#1
			}
			time--;                                    //     2、  0x00000202 E005      B        0x00000210
		}
}

所需要了解的信息
1、每一条汇编指令需要占用几个时钟周期,方便计算多少时间
2、时钟周期为1M时,其倒数为时间1us

文字解释

程序进入Delay_ms(200)延时函数后,其对应汇编指令运行顺序为1——2——3——4——5——6——7——8——9
其中的for空循环的汇编指令为5、6、7、8、9这四条,进入for循环这四条指令的运行次数为4(来源于自己设置的n<4)
本函数中对应的汇编指令一般占用一个时钟周期,其中第2和8条为跳转指令,占用2个时钟周期,本函数程序其硬件时钟设置为22MHz,故延时函数时间为(10+8*(n-1))*(1/22M)us

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/151107.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ducter运维平台_开源自动运维管理平台_自动化运维平台 开源「建议收藏」

    ducter运维平台_开源自动运维管理平台_自动化运维平台 开源「建议收藏」专访运维管理开源平台负责人刁文波:Ducter能550×364-47KB-JPEG专访运维管理开源平台负责人刁文波:Ducter能550×381-45KB-JPEG光宇游戏黄振:开源运维自动化平台架构实现与846×474-35KB-JPEGCheungSSH国产自动化运维工具开源Web界面811×525-89KB-PNGCheungSSH国产自动化运维工具开源Web…

    2022年5月17日
    76
  • linux添加ll命令,CENTOS: Docker的容器系统加上ll命令

    linux添加ll命令,CENTOS: Docker的容器系统加上ll命令Docker的很多Image都少量一些我们平时用的命令,ll就是其中一个。其实ll是一个alias来的。只要修改~/.bashrc就可以。运行以下命令nano~/.bashrc内容大概如下:#~/.bashrc:executedbybash(1)fornon-loginshells.#Note:PS1andumaskarealreadysetin/etc/pro…

    2022年6月22日
    51
  • iOS_11_tableViewCell使用alertView变更数据

    iOS_11_tableViewCell使用alertView变更数据

    2022年1月2日
    42
  • Linux系统平均负载是如何计算的?[通俗易懂]

    Linux系统平均负载是如何计算的?[通俗易懂]关于负载的计算,它的结果是包含有小数的一个浮点数,内核中是不能使用float变量的,那么这里就采用了一个整型变量的低11位来表示小数部分。那么对于数值1来说,它就是FIXED_1,也就是需要对1进行左移11bit。实际上此时这个整型变量保存的值是1024。cat/proc/loadavg0.430.580.655/701045102那么我们通过cat命令查看负载值如上说是,它显示的是带有两个小数表示的一个浮点数,所以最后在输出这个数值时还需要做一个转换,如果从1024个值中得出这100小数

    2025年11月4日
    3
  • Android widget之CompoundButton[通俗易懂]

    Android widget之CompoundButton[通俗易懂]ButtonCheckBoxRadioButtonSwitchSwitchCompatToggleButtonAppCompatCheckBoxAppCompatRadioButton

    2022年6月7日
    39
  • Spring中Responsebody注解的作用[通俗易懂]

    Spring中Responsebody注解的作用[通俗易懂]好长一段时间以来都只是写些测试代码,好久没写项目代码了,以至于sping那套东西日渐生疏了。最近在折腾一个小项目,写了一个controller用来响应ajax请求,结果断点调试发现一直返回"404…notresponse…",折腾了快2小时,一直没想到是注解的问题,万般无赖之下上了度娘,方才如梦初醒,特意记录一下,一来提醒一下自己,二来也让跟我遇到一样问题的朋友少受些折磨。这个注解表示…

    2022年5月8日
    70

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号