首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在avr-gcc中定义定时器

如何在avr-gcc中定义定时器
EN

Stack Overflow用户
提问于 2012-11-25 17:10:50
回答 3查看 1.5K关注 0票数 0

我正在学习使用avr-gcc,但我不知道如何解决以下任务:

端口B中的8位应该交替设置为0到1,间隔为500毫秒。

谢谢你的帮助。

EN

回答 3

Stack Overflow用户

发布于 2012-11-25 19:57:21

您可以使用#include <util/delay.h>,如果您编写:_delay_loop_2(1000);,您将有1ms的延迟;您可以使用以下函数:

代码语言:javascript
复制
void delay()
{

    for(int i=0;i<500;i++) 

        _delay_loop_2(1000);
}
票数 2
EN

Stack Overflow用户

发布于 2013-04-07 11:57:10

看一下这个例子。这是timer0非常基本的代码

代码语言:javascript
复制
#include<avr/io.h>
#include<avr/interrupt.h>
#define F_CPU 1000000UL
unsigned int t=0;
main()
{
    DDRD=0xFF;
    TCCR0=(1<<CS00);
    TCNT0=0;
    TIMSK=(1<<TOIE0);
    sei();
    while(1);
}
ISR(TIMER0_OVF_vect)
{
    t++;
    if(t==40000)
    {
        PORTD=~PORTD;
        t=0;
    }

}
票数 1
EN

Stack Overflow用户

发布于 2012-12-26 03:25:31

正如@Alex所说,您可以使用#include <util/delay.h>,但是使用提供的代码(由@Alex提供)时,您可以简单地使用_delay_ms(500);

这将为您提供500毫秒的延迟。

选择是您的,请记住,在这两种情况下,您的时钟的频率必须正确地定义给您的编译器:

16 for的示例:#define F_CPU 16000000UL

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13553337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档