嵌入式 arm-如何编写延时函数,求指点迷津

问题描述

如何编写延时函数,求指点迷津

cpu频率为400MHz,如何编写延时为1us的延时函数?请大哥门指点下。cpu为armv7架构的s5pv210处理器

解决方案

振荡频率为16MHZ,则Tcy=0.0625us。
编写us级延时函数如下:
void Delay_us(unsigned char nCount)
{
while(--nCount);
}
函数反汇编后如下:
push a
OFST: set 0
L13: dec(OFST+1,SP)
jrne L13
pop a
ret

主要是计算nCount

解决方案二:

400MHZ=400000000HZ,就是一秒钟震动的次数,
1S=1000ms=1000000μs,
1S/400MHZ=1000000μs/400000000HZ=0.0025μs,就是说一个频率周期需要0.0025μs,
那么,你要知道的是s5pv210芯片多少个时钟周期是一个机器周期,假设 是4个
那么一个机器周期等于4*0.0025μs=0.01us
你要求 延时1us 只需要 100个机器周期就行了
你循环里面的代码 转换成 100条汇编指令 就延时 1us了 ,
需要注意的是 取消编译器优化

时间: 2024-10-27 02:44:53

嵌入式 arm-如何编写延时函数,求指点迷津的相关文章

c语言-求教编写一个函数求出两个字符串包含的相同的单词

问题描述 求教编写一个函数求出两个字符串包含的相同的单词 编写一个函数,函数首部为void maxword(char *s,char *t),求出两个字符串包含的相同单词(同一字母的大小写视为不同的字符).规定单词全部由英文字母构成,单词直接由一个或多个空格分隔.其中主函数如下: #include Void main() { Char s[]="This is C programming text"; Char t[]="This is a text for C progra

嵌入式 arm ucos-嵌入式arm里的ucos详细讲解

问题描述 嵌入式arm里的ucos详细讲解 对于初学者要短期内简单讲解部分应用开发,如何学习?要做一个ucos上的应用开发课堂讲解 简单点也行,求过路大神指点! 解决方案 http://wenku.baidu.com/view/998f408c6529647d2728528e.html 解决方案二: 你是要参加学习还是去教别人?

asm-函数用32汇编写的,求解码delphi

问题描述 函数用32汇编写的,求解码delphi 函数 function _ftol: Integer; cdecl; var f: double; begin asm lea eax, f fstp qword ptr [eax] end; Result := Trunc(f); end; 解决方案 在delphi中可以直接引起汇编,建议直接嵌入到delphi程序中

十进制数-用vcmfc编写一个函数 在发送按钮事件下调用这个函数 具体见正文

问题描述 用vcmfc编写一个函数 在发送按钮事件下调用这个函数 具体见正文 该函数需将BYTE编辑框变量十进制数转化为16进制数,在按钮事件下调用该函数 进行转化.我是新手 求指导 刚接触vc思维上有点转不过来 解决方案 大概的思路char * input= ""00FF0123D5..."";char* out2=new char[strlen(input/2];int count=0;for(char *s=input;strlen(s)>0;s+=2)

单片机 延时函数-延时函数时间计算问题

问题描述 延时函数时间计算问题 void delay_n_ms(uchar num) { uchar time; while(num) { time = 250; // fosc = 11.0592MHz CLK_DIV = 0; while(time) time --; num --; } } 这个函数的周期是1ms吗?为什么?求大神详解! 解决方案 你用这种循环是得不到精确的延时时间的,要想得到精确的1ms还的配置定时器来定时. 另外,你的这个函数周期是不是1ms我没有算,但是这是和你单片机

求教:编写一个函数,在页面输入一个整数,打印出对应的乘法表

问题描述 求教:编写一个函数,在页面输入一个整数,打印出对应的乘法表 函数会写,就是不知道怎么在页面输入整数来打印出乘法表,哪位可以帮忙给看看啊 解决方案 void show() { for (int i = 1; i < 10; i++) { for (int j = 1; j <=i;j++) { Response.Write(j + " * " + i + " = " + i * j+"t"); } Response.Write

asp脚本延时函数代码

asp脚本延时函数代码,该函数不断计算当前时间和预设时间的差值,当超过预设时候后跳出循环,占用资源可能比较大. 以下是函数代码:<%  Function Delay(s)  Dim t = Now()  While DateDiff("s", t, Now) < s  Wend  End Function  %>

JavaScript教程:编写匿名函数的几种方法

匿名函数可以有效控制变量作用域,构造闭包 (Closure),防止对全局变量造成污染.在 JavaScript 中,编写匿名函数,有以下几种方法: 错误模式:语法错误警告 function(){ // insert code here }(); 模式一:函数字面量 (Function Literal) 先声明函数对象,然后执行. (function(){ // insert code here })(); 模式二:优先表达式 (Prior Expression) 由于 JavaScript 按照

C语言生成随机数的函数、延时函数

下面C语言代码使用了生成随机数的函数.延时函数.请大家仔细观察其显示效果. 从以下代码,我们可以得出一个重要的结论:当上述两类函数被放入循环时,应作出一定修改.同时还应关注其参数的定义位置(子函数外?子函数内?全局变量?局部变量?). 另外大家要注意:scanf在输入double型时,应该使用%lf,而在printf时却只需使用%f. #include<stdio.h> #include<time.h> #include<stdlib.h> double t_delay