小编che*_*hen的帖子

AVR定时器溢出中断不起作用

你好堆栈溢出的人.我的问题是一个看似永远不会执行的中断服务程序(ISR)!以下是我设置的一些信息:我正在闪烁avr attiny85.到目前为止,我只使用main.c和两个模块设置项目的基础:timer和hardwareInit.在定时器模块中,我有一个timer0_init函数,我用它来设置Timer0以使CTC模式在1 ms内溢出.这是功能:

void timer0_init( void )
{
    cli();
    TCCR0B |= 3;    //clock select is divided by 64.
    TCCR0A |= 2;    //sets mode to CTC
    OCR0A = 0x7C;   //sets TOP to 124 so the timer will overflow every 1 ms.    
    TIMSK |= 2;     //Enable overflow interrupt
    sei();          //enable global interrupts
}
Run Code Online (Sandbox Code Playgroud)

设置定时器后,每次计数器溢出时我都会添加一个ISR来增加滴答,这样我就可以跟踪已经过了多长时间等等.

ISR(TIMER0_OVF_vect)
{
    cli();
    //ticks ++;
    PORTB |= ( 1 << PORTB0 );   
    sei();
}
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,我注释掉了滴滴答用器因为它没有工作,并用PORTB |= ( 1 << PORTB0 );简单的LED打开就取而代之,所以如果中断被执行,我会通过证明LED亮起来知道.
不幸的是,我无法让它打开,看不到我错过的东西.(为了证明我1.将LED设置在右侧引脚上,并且2.正在操作正确寄存器中的正确位,我将此声明PORTB |= ( 1 …

c embedded avr interrupt attiny

5
推荐指数
1
解决办法
1844
查看次数

如何使makefile引用另一个makefile

我有一个 C 语言项目,其中包含许多不同的模块,并且所有内容都有一个 makefile。我想要做的是让每个模块都有自己的 makefile,并且当该模块包含在任何项目中时,该项目的 makefile 只能引用单个模块的 makefile。这样,无论何时我有一个想要使用某个模块的项目,我都不必对我的项目 makefile 进行大量编辑。

您可以提供的任何帮助将不胜感激。

c makefile

3
推荐指数
1
解决办法
2120
查看次数

在if条件下你能使用多个<吗?

如果if条件中包含多个"小于"(<)或"大于"(>)的符号,是否可以?

例如,我通常会看到条件是否写得如此: if( x > 7 && x < 14) 但是你可以这样写吗? if( 7 < x < 14 )

第二种方式编译,但我不确定这样做是否有任何缺点或意外结果.

c conditional-statements

1
推荐指数
1
解决办法
79
查看次数

标签 统计

c ×3

attiny ×1

avr ×1

conditional-statements ×1

embedded ×1

interrupt ×1

makefile ×1