hw_type.h 파일에 레지스터에 접근에 데이터를 읽고 쓸 때 사용되는 매크로 함수들이 있다.
- HWREG(x) (*((volatile uint32_t *)((uintptr_t)(x)))) // 32 bit Access 에 사용된다.
- HWREG_BP(x) __byte_peripheral_32((uint32_t *)(x)) // 32 bit Access 에 사용되는데 컴파일러 내장함수를 사용한다. 이 매크로함수는 CAN, USB 같은 byte Access의 특수 주소지정체계를 쓰는 페리페럴에 사용하기 위해 만들어졌다.
- HWREGH(x) (*((volatile uint16_t *)((uintptr_t)(x)))) // 16 bit Access 에 사용된다. 16 bit 레지스터나 32bit 레지스터의 상위 또는 하위 Word 에 Access 하는 데 사용되고 C28x 코어의 Word 가 16bit므로 가장 일반적으로 사용된다.
- HWREGB(x) __byte((int16_t *)(x),0) // 컴파일러 내장함수 __byte()를 사용하고 하드웨어에서 8bit Access가 필요한 경우에만 사용한다. 그렇지 않으면 HWREGH()를 사용하고 원치않는 비스크를 이동시킨다.
출처 : Programming TMS320x28xx and TMS320x28xxx Peripherals in C/C++
'임베디드 개발 > TMS320F2838x (C28x)' 카테고리의 다른 글
CCS ] Breakpoint 사용법 (0) | 2023.02.12 |
---|---|
TMS320F28388D ] eCAN, DCAN, MCAN bit Timing Calculator (0) | 2023.02.10 |
TMS320F28388D ] IPC 사용하여 CPU1과 CPU2 타이머 Tick 값 Synchronization (0) | 2023.01.26 |
TMS320F28388D ] RAM에 NOINIT 변수 두기 불가 (0) | 2023.01.25 |
TMS320F28388D ] USB 라이브러리 USBHCDPipeRead()에서 무한루프 빠지는 문제 (0) | 2023.01.25 |