请问一下在AVR stdio里面这样写为什么没法执行?

2019-03-24 20:21发布

定时器中断配置正确,LED端口正确,已验证。 目前就是if判断无法执行, 也就是说定时器里将k置位, 但主函数中却没执行。
请求赐教。函数如下:

char k;
int main(void)
{               
    sys_init();
    while (1)
    {                          
        if(k==1)
        {       
            LED_clp;                       
            k=0;                       
        }               
    }
}

ISR(TIM0_OVF_vect)  //中断向量名称:TIMER0_COMPA
{
        k=1;
        TCNT0 =0xda;  
}

此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
tashalee
1楼-- · 2019-03-24 23:14
MCU是attiny24A,中断为进行屏蔽, 但已用标志验证无影响。
tashalee
2楼-- · 2019-03-25 05:02
MCU是attiny24A,中断为进行屏蔽, 但已用标志验证无影响。
dcexpert
3楼-- · 2019-03-25 08:49
中断里用的变量,需要加volatile关键字。

volatile char k;
tashalee
4楼-- · 2019-03-25 12:47
dcexpert 发表于 2016-2-18 11:49
中断里用的变量,需要加volatile关键字。

volatile char k;

真心感激感激, 一个小问题困扰一上午啊。

一周热门 更多>