Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиПоискОблакоVK ComboВсе проекты

Coocox указатель стрелка

максим гаврилов Профи (744), на голосовании 1 месяц назад
вот строки из CoIDE:
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_9|GPIO_Pin_11|GPIO_Pin_12;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIOB->ODR ^= GPIO_Pin_9;

Что происходит в третей строке?
На контроллере она при работе переключает 9 выход, но мне непонятно, что именно означает указатель. И как он переключается, если знак = и ^= должен изменять левую часть?
Голосование за лучший ответ
Неизвестно Гуру (4350) 2 месяца назад
В данной строке кода `GPIOB->ODR ^= GPIO_Pin_9;` используется оператор `^=` (оператор исключающего или с присваиванием), который изменяет значение бита (одно из значений 0 или 1), соответствующего конкретному пину, указанному в `GPIO_Pin_9`, регистра `ODR` (Output Data Register) порта `GPIOB`.

Знак `^` (или символ "caret") в данном случае означает операцию исключающего ИЛИ, которая производится между значением регистра `ODR` и значением в `GPIO_Pin_9`, а затем результат присваивается обратно в `ODR`.

Таким образом, если значение бита, соответствующего пину `GPIO_Pin_9`, в регистре `ODR` было равно 1, то после выполнения данной строки кода оно станет равным 0, и наоборот, если было равно 0, то после выполнения строки оно станет равным 1.

Знак `=` (или символ "равно") используется для инициализации переменных и присваивания им новых значений. В данном случае знак `=` не применяется, он означает, что значение переменной уже было определено ранее в коде.
максим гавриловПрофи (744) 2 месяца назад
я спрашивал про стрелку "->"
максим гавриловПрофи (744) 2 месяца назад
Что она делает?
Похожие вопросы