can通信中为何中断应答寄存器写1叫清零??
问题点及代码如下:if((isr & 0x04) == 0x04)//TI==1:CAN模块数据帧发送完成。用户需要对TI写1,复位发送BUFFER的写指针
{
CANAR = ISR;//
CANDR = 0x04;//CLR FLAG 为何这里明明是写1,缺叫清零,手册我也看了,也是这样写的,不是明白????
}
写1清零是通过往指定寄存器位置写入1,
触发硬件执行清除对应标志位操作,
而不是直接将写入的内容赋值给寄存器。
像SPI标志位清除也是使用同样的方式。
乘风飞扬 发表于 2024-5-8 09:32
写1清零是通过往指定寄存器位置写入1,触发硬件执行清除对应标志位操作,而不是直接将写入的内容赋值给寄存 ...
突然反了,感觉好不习惯,感谢老师细心解答, 你考虑上升沿清零就行 380091044 发表于 2024-5-8 09:36
突然反了,感觉好不习惯,感谢老师细心解答,
光反了算啥,有些标志位读始终是0,还需要再写0清除状态 hsrzq 发表于 2024-5-14 10:17
光反了算啥,有些标志位读始终是0,还需要再写0清除状态
这个我倒是遇到过,听有的老师说,不清零也行,最好后还是清一下零,
页:
[1]