单片机
返回首页

AVR/Atmel Studio延时函数没有被调用的问题

2020-04-18 来源:eefocus

最近刚接触Atmel Studio,有很多东西不熟悉。弄了个范例程序,想自己改个跑马灯的程序,需要用到延时,可是延时一做成函数就有问题,根本没有延时的效果,把代码放到主函数里却没有问题。使用avr simulator软件仿真试试,发现延时函数根本没有被调用,可是函数明明声明得没有问题啊。


网上一查发现是GCC编译器优化导致的。这下我明白了,因为GCC编译器会误认为这是没有用的的一段程序,因为他不起任何实际计算效果,目的正是为了占用时间,在进行速度优化的时候便将其省掉了。


解决方法很简单,只要将GCC编译的优化选项关掉即可,或者在延时函数的变量前加volatile。


void Delayabc(uint8_t d)

{

volatile uint8_t a,b,c;

a = 200;

while (a--)

{

b = 200;

while (b--)

{

c = 200;

while (c--)

{

while (d--);

}

}

}

}

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • PIC单片机控制的遥控防盗报警器电路

  • 使用ESP8266从NTP服务器获取时间并在OLED显示器上显示

  • 用NE555制作定时器

  • 如何构建一个触摸传感器电路

  • 基于ICL296的大电流开关稳压器电源电路

  • 基于TDA2003的简单低功耗汽车立体声放大器电路

    相关电子头条文章