Я имею длинную линию для настройки 14 GPIO булавки в Intel Quark D2000 микроконтроллера эта строка написана языком C код:Как уменьшить сдвигая линию на языке Си
cfg.direction = PM[0]<<(TPN[0])|PM[1]<<(TPN[1])|PM[2]<<(TPN[2])|PM[3]<<(TPN[3])|PM[4]<<(TPN[4])|PM[5]<<(TPN[5])|PM[6]<<(TPN[6])|PM[7]<<(TPN[7])|PM[8]<<(TPN[8])|PM[9]<<(TPN[9])|PM[10]<<(TPN[10])|PM[11]<<(TPN[11])|PM[12]<<(TPN[12])|PM[13]<<(TPN[13]);
Можно ли переписать этот код используя «для петли»?
Примечание: «TPN» и «PM» - это массивы. «Направление» объявлен как uint8_t переменной в структуре CFG
Спасибо за ответ :) –
Спасибо, ваш код работает отлично для этого случая, но если дело только за один или два GPIO не работает, этот код не работает. Я буду отмечать ваш ответ как правильно, но сначала удалите эту строку «cfg.direction = 0», потому что это означает, что все контакты GPIO, сконфигурированные как входные данные –
. Установка «cfg.direction» в ноль сначала необходима, так что '| =' оператор будет работать правильно (он ORs текущее значение 'cfg.direction' с выражением справа и сохраняет новое значение в' cfg.direction'). ** IF ** установка 'cfg.direction' _immediately_ вызывает изменение в GPIO, тогда вам нужно будет заменить как' cfg.direction 'выше временной переменной, так и' cfg.direction = tempVar' после петля. – TripeHound