ebox的Gpio::toggle()实现在多任务环境下应该会出错

2019-12-27 18:37发布

void Gpio::toggle()
{
    port->ODR ^= this->pin;
}

这种实现方法在多任务环境下会修改这个端口的其它pin的值
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
xivisi
1楼-- · 2019-12-27 21:25
找作者修复
avr-arm
2楼-- · 2019-12-28 02:44
加调度锁
cat_li
3楼-- · 2019-12-28 05:45
 精彩回答 2  元偷偷看……
jiangkehong
4楼-- · 2019-12-28 09:14
cat_li 发表于 2017-7-19 17:11
为什么呢,他不应该只是修改当前pin吗

不是原子操作吧
avr-arm
5楼-- · 2019-12-28 13:52
jiangkehong 发表于 2017-7-19 19:42
不是原子操作吧

正解。
其实那条操作编译后是好几条指令。
cat_li
6楼-- · 2019-12-28 17:15
jiangkehong 发表于 2017-7-19 19:42
不是原子操作吧

明白了,谢谢解答

一周热门 更多>