您的位置:首页 > 其它

基于WINAVR + avr studio 4 使用外部晶振时及延时可能遇到的问题( By-炬本)

2012-11-06 10:32 387 查看
第一步,使用外部晶振

1. 连接isp下载线

2. 打开avr fighter

a” 如下界面,在熔丝位那框架,点击“读取”



(注:上图是默认的熔丝位)
b.单击鼠标,把熔丝位改为下图(仅是JTAGENCKOPT 为0),单击写入:



这样就能使用外部晶振啦~

修改过一次下次就不用修改了,但注意这是外部晶振,而不是RC振荡器,还有不要乱改熔丝位,乱改会锁芯片的。

第二步,使用gcc自带延时函数及设置avrstudio

例:

#include<util/delay.h> //声明

//us级别的延时函数

voidDelayus(unsigned int lus)

{

while(lus--)

{

_delay_loop_2(3); //_delay_loop_2(1)是延时4个时钟周期,参数为4则延时16

//个时钟周期,本实验用12M晶体,则12个时钟周期为12/12=1us

}

}

//ms级别的延时函数

voidDelayms(unsigned int lms)

{

while(lms--)

{

Delayus(1000); //延时1ms

}

}

Avr studio设置:

在avr studio 菜单栏上







单击ConfigurationOptions



要正确使用它们是有如下条件的:
1. 首先,你要正确定义你的 F_CPU
的值,也就是你的AVR单片机实际的频率。否则延时不准,这个就是Frequency的值。

2. 你在编译时一定要打开优化,Makefile中OPT 不要选 0 ,如果AVR_studio不要选O0 。要不然就会出现# warning"Compiler optimizations disabled; functions from <util/delay.h>won't work as designed"编译警告,且延时失准。

====================================================================================================

-00 无优化。

-01 减少代码尺寸和执行时间,不进行需要大量编译时间的优化。

-O2 几乎执行所有优化,而不考虑代码尺寸和执行时间。

-O3 执行-O2所有的优化,以及内联函数,重命名寄存器的优化。

-OS 针对尺寸的优化。执行所有-O2优化而不增加代码尺寸。

====================================================================================================

复选框:

1. 所有char认为是unsined char

2.所有bitfields 认为是unsigned

3.定义结构体时,连续存储

4.定义枚举类型时,使用最大需要的存储空间 (3,4两项真是多余,不选中肯定出错)

一般选-OS优化,复选框全选。

2012/7/4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: