Простая путаница кода по поводу определения параметра директивы
Я пытаюсь научиться C программировать эту небольшую процедуру на Texas Instruments MSP430. Не могли бы вы помочь мне понять ((unsigned char *) 0x0023)
часть?
У меня проблемы с пониманием этой средней части этой директивы Define. Я пытался найти это, но ничего не нашел на ((unsigned char *) 0x0023)
часть. Это похоже на приведение типа, но ничего не приводит.
Моя главная проблема - 0x0023 (десятичное 35). Это просто беззнаковый указатель на 35 бит?
Код:
#define P1IFG_ptr ((unsigned char *) 0x0023) unsigned char result;
Любая помощь очень ценится и спасибо заранее.
1 ответ
((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;