I know it's a very newbie question and I know the #define for them is in hw_types.h
But I must admit my newbie level on C and say: I don't get it! It is a pointer, to a cast of a unsigned long pointer that masks the pointer to some bit of this long?
Sorry, I was already lost on the casting to another pointer, I guess too much Java made me weak towards real low level programming languages and I bow down to the experts for help.
I've been carelessly allowing all of those macros live in my code just copying them from the example, but until know I've been only setting up the stuff that is mostly API commands based. No registers.
But the IPC is full of those and I have some issues to iron out on the uDMA (http://e2e.ti.com/support/microcontrollers/tms320c2000_32-bit_real-time_mcus/f/171/t/180339.aspx) too and a better understanding of those Macros will be very useful.
Please (light)darkness;
-----------------------
EDIT:
maybe I should elaborate a bit further:
stuff like this:
// Allow writes to protected registers.
HWREG(SYSCTL_MWRALLOW) = 0xA5A5A5A5;
I get it, there's a register named SYSCTL_MWRALLOW that you can find at address 0x400FB980 and I'm writting on it 0xA5A5A5A5. And it means that now I can write the protected registers, which I can see which ones are in the datasheet.
but sometimes there's some HWREG(RAM_CONFIG_BASE + RAM_O_MSXRTESTINIT1) |= 0x1; which I barely pretend I understand, something about masking the first bit of RAM_O_MSXRTESTINIT1 into RAM_CONFIG_BASE register, but then I see a HWREGBITW(&g_ulFlags, FLAG_SYSTICK) that doesn't seem to be much to do with any of the hardware registers or almost randomly in some examples there's a
// Tells M3 Core the vector table is at the beginning of C0 now.
HWREG(NVIC_VTABLE) = 0x20005000;
why can't you leave the NVIC_VTABLE where it was? Was it doing any harm on the default place?
again, any help will be appreciate to (light)darkness; <- cast light into darkness.