IAR使用时报错处理与AVR精确延时

来源:本站
导读:目前正在解读《IAR使用时报错处理与AVR精确延时》的相关信息,《IAR使用时报错处理与AVR精确延时》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《IAR使用时报错处理与AVR精确延时》的详细说明。
简介:IAR下必须进入DEBUG模式才能进行调试,如果不连接开发工具的话,断点也是不行的。
在IAR for AVR中的库函数#include"intrinsics.h"里面有个单周期的延时函数__delay_cycles();(相当于_nop_();),如果__delay_cycles(100)就是100个mclk的周期延时。

一、出现“IAR AVR unknown or ambiguous symbol.main”

project==>options==>linker,format设置成debug。

IAR下必须进入DEBUG模式才能进行调试,如果不连接开发工具的话,断点也是不行的

二、处于调试状态,但是不能在C语言上单步运行,也不能设置断点

project==>options==>C/C++Compiler,将Generate debug information打上勾。

三、IAR For AVR软件的精确延时

好了,废话不多说,不浪费中断的情况下的精确延时啊~~,当然是软件自带的单周期的空操作了~~,你懂得为什么,比如_nop_();(当然这个家伙是51单片机中用到的c程序,汇编就是nop;喽)

在IAR for AVR中的库函数#include"intrinsics.h"里面有个单周期的延时函数__delay_cycles();(相当于_nop_();),

如果__delay_cycles(100)就是100个mclk的周期延时。

然后就是下面的操作了:

1)建立一个.h文件,用Keilc51这个是必须懂得,我就不多解释了

2)输入代码:

#ifndef __delay_h

#define __delay_h

#include"intrinsics.h"

#define xtal 8 //这里就是你要使用的晶振的频率(单位NHZ)

#define delay_us(x) __delay_cycles((unsigned long)(x*xtal))

#define delay_ms(x) __delay_cycles((unsigned long)(x*xtal*1000))

#define delay_s(x) __delay_cycles((unsigned long)(x*xtal*1000000))

#endif

3)就是在你用到延时的函数里面调用#include"Delay.h"(这里是不区分大小写的,哈,不用担心这个)

这就在不浪费中断情况下的软件延时,当然你要非得精确,那非得定时计数器不可了

补充一下:

我用的是IAR for AVR,别的软件什么的似乎也有延时函数,如果没有可以用下面的这个延时(听说也是相当准的,在8MHZ晶振下,不管是外接还是内部晶振,哈都一样):

//------------------------------------------------------------------------------

//延时函数

void delay_ms(uint k)

{

uint i,j;

for(i=0;i

for(j=0;j<1140;j++);

}

还有一个:差点忘记(这个不知道是那个哥们想到的,也可以改变晶振的~~~都贴出来,反正没事干):

//------------------------------------------------------------------------------

//延时1ms的函数,没有参数传递

void delay_1ms()

{

uint i;

for(i=1;i<(uint)(xtal*143-2);i++)

;

}

//------------------------------------------------------------------------------

//延时nms的函数,有参数传递

void delay_nms(uint n)

{

uint i=0;

while(i

{

delay_1ms();

i++;

}

}

提醒:《IAR使用时报错处理与AVR精确延时》最后刷新时间 2024-03-14 01:09:37,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《IAR使用时报错处理与AVR精确延时》该内容的真实性请自行鉴别。