Простая путаница в коде с определением параметра директивы - PullRequest
1 голос
/ 19 сентября 2011

Я пытаюсь научить C программировать эту небольшую процедуру на Texas Instruments MSP430.Не могли бы вы помочь мне понять часть ((unsigned char *) 0x0023)?

У меня возникли проблемы с пониманием этой средней части этой директивы Define.Я попытался найти это, но ничего не нашел в части ((unsigned char *) 0x0023).Это похоже на приведение типа, но ничего не приводит.

Моя главная проблема - 0x0023 (десятичное 35).Является ли это просто беззнаковый указатель символа с 35 битами?

Код:

#define P1IFG_ptr ((unsigned char *) 0x0023) unsigned char result;

Любая помощь очень ценится и заранее благодарим вас.

1 Ответ

3 голосов
/ 19 сентября 2011
((unsigned char *) 0x0023)

Указатель на адрес 0x23

Я думаю, что в вашем примере кода отсутствует новая строка ...

На MSP430 это регистр флага прерывания порта P1:

Каждый бит PxIFGx является флагом прерывания для соответствующего вывода ввода / вывода. и устанавливается, когда выбранный фронт входного сигнала возникает на выводе. Все Флаги прерываний PxIFGx запрашивают прерывание, когда их соответствующие Бит PxIE и бит GIE установлены. Каждый флаг PxIFG должен быть сброшен с программного обеспечения. Программное обеспечение также может установить каждый флаг PxIFG, предоставляя способ генерировать программно инициированное прерывание. Бит = 0: нет прерывания в ожидании Бит = 1: прерывание ожидает только переходы, а не статические уровни, вызывают прерывания. Если какой-либо флаг PxIFGx становится установленным во время Px подпрограмма обработки прерываний или устанавливается после инструкции RETI Выполнена процедура обслуживания прерывания Px, установлен флаг PxIFGx генерирует другое прерывание. Это гарантирует, что каждый переход признал.

Вы можете читать из этого регистра, например ::

unsigned char result;
result = *P1IFG_ptr;

Или напишите ему, например ::

*P1IFG_ptr = 1;
...