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

第一步,使用外部晶振

1.    连接isp下载线

2.    打开avr fighter

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

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

(注:上图是默认的熔丝位)

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

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

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

 

修改过一次下次就不用修改了,但注意这是外部晶振,而不是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 菜单栏上

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

单击ConfigurationOptions

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

要正确使用它们是有如下条件的:

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




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