中断服务函数是不是只有在if语句内才有效

2019-07-20 14:50发布

本帖最后由 Eternal单人行 于 2017-5-3 10:25 编辑

[mw_shl_code=c,true]void USART2_IRQHandler(void)
{
        u8 res;        //LED1=1;     
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)
        {                 
          res =USART_ReceiveData(USART2);
                if(RS485_RX_CNT<64)
                {
                        RS485_RX_BUF[RS485_RX_CNT]=res; RS485_RX_CNT++;
                }
        }
//LED1=1;              
} [/mw_shl_code]

是不是中断服务函数中的语句只有在if语句内的才有效,楼主if外的两个LED都是无效的
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
jermy_z
1楼-- · 2019-07-20 15:20
Eternal单人行 发表于 2017-5-3 09:36
求大神指点

中断函数里所有字段都会执行,if只是判断中断类型,有接收中断,发送中断,空闲中断等类型

jermy_z
2楼-- · 2019-07-20 18:27
 精彩回答 2  元偷偷看……
jermy_z
3楼-- · 2019-07-20 18:42
另外你在中断里这样写led函数,肉眼基本上看不到啥变化,除非你是超人
Eternal单人行
4楼-- · 2019-07-20 23:39
 精彩回答 2  元偷偷看……
Eternal单人行
5楼-- · 2019-07-21 01:09
 精彩回答 2  元偷偷看……
jermy_z
6楼-- · 2019-07-21 05:13
Eternal单人行 发表于 2017-5-3 09:38
不是把LED的电平直接拉高了吗?它只能保持中断服务函数运行的瞬间?就像局部变量?

哦,没注意你那led写法,粗略扫眼了,以为上面拉低,下面拉高呢

一周热门 更多>