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

第一步,使用外部晶振

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




  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值