Member 14608858 Ответов: 2

Стили встроенного кодирования?


при записи значений в регистры в микроконтроллерах мы записываем непосредственно значение в регистр, такое как инициализация выводов gpio, и снова другой способ-предоставление битовых значений в регистры, таких как остановка сторожевого таймера, любезно объясните, почему эти два метода доступны и какой из них эффективен.

WDTCTL = WDTPW + WDTHOLD; // остановить WDT
P1OUT = 0x01; // красный светодиод горит
P1SEL = 0x10; // выход P1.4 SMCLK
P1DIR = 0x51; // P1.0,4,6 выход

Что я уже пробовал:

Я новичок в программировании и у меня нет идеи предоставлять битовые значения регистрам в то время как я могу назначить непосредственно назначить требуемое значение регистру из любопытства я хочу знать разницу между ними

2 Ответов

Рейтинг:
0

RickZeeland

WDT+ может быть сконфигурирован для работы либо в качестве сторожевого таймера, либо в качестве интервального таймера, см. объяснение здесь: Настройка регистров Watch Dog Timer (WDT+) в MSP430G2xxxx | xanthium enterprises[^]

Цитата:
.. один из режимов называется режимом интервального таймера ...
Выбор режима осуществляется путем установки бита WDTTMSEL в регистре WDTCTL (WDTTMSEL = 1)

Бит 7 называется "HOLD", и этот бит останавливает работу сторожевого счетчика.

А также: Почему программы останавливают сторожевой таймер на MSP430? - Электротехника Стековая Биржа[^]


Member 14608858

WDTCTL = WDTPW + WDTHOLD; формат 1
P1OUT = 0x01; формат 2

есть ли разница между двумя форматами декларирования регистров, если да, то какой из них эффективен?

Рейтинг:
0

CPallini

Вообще говоря, вы можете непосредственно инициализировать регистры, потому что они карта памяти Следовательно, вы присваиваете значение переменной, и соответствующий битовый шаблон устанавливается в целевой регистр (и наоборот в операции чтения).

Цитата:
и опять же другой способ заключается в предоставлении битовых значений регистрам
Я не понимаю, что это за "другой путь", в точности?


Member 14608858

WDTCTL = WDTPW + WDTHOLD; формат 1
P1OUT = 0x01; формат 2

есть ли разница между двумя форматами декларирования регистров, если да, то какой из них эффективен?

CPallini

Разницы нет, потому что и WDTPW, и WDTHOLD-это просто определения (и похоже, что WDTPW + WDTHOLD = 0x5680).
Использование осмысленных имен, возможно, делает код более читабельным.

Member 14608858

спасибо

CPallini

Добро пожаловать.