안녕하세요.
현재 D3 내에서 GPIO 레지스터에 접근하여, 기능들을 테스트하고 있습니다.
2023-05-17버전 매뉴얼을 참고하여, 아래와 같은 GPIO_C24 테스트 코드를 작성했습니다.
하지만, 해당 코드를 실했했을때 메모리 Fault 에러가 발생하는데,
혹시 현재 코드와 같은 방식으로 레지스터 주소 참조하는 방식이 D3에서도 동일하게 작용하는 지에 대해 문의드리며, Tcc805x system management unit 문서가 현재 Rev. 1.00 이 최신버전인지에 대해서도 문의드립니다.
테스트 코드는 아래와 같습니다.
감사합니다.
#include <stdint.h>
#define GPIO_BASE_ADDR 0x14200000 // GPIO 베이스 주소
#define GPC_DAT (*(volatile uint32_t *)(GPIO_BASE_ADDR + 0x80)) // GPIO_C 데이터 레지스터 (GPIO_C23에 해당)
#define GPC_EN (*(volatile uint32_t *)(GPIO_BASE_ADDR + 0x84)) // GPIO_C 활성화 레지스터
// GPIO 초기화 함수
void gpio_init(void) {
GPC_EN |= (1 << 23); // GPIO_C[23] 핀 활성화 (출력 모드)
}
// LED 켜기 함수
void led_on(void) {
GPC_DAT |= (1 << 23); // GPIO_C[23] 핀에 HIGH 값을 설정 (LED 켜짐)
}
// LED 끄기 함수
void led_off(void) {
GPC_DAT &= ~(1 << 23); // GPIO_C[23] 핀에 LOW 값을 설정 (LED 꺼짐)
}
int main(void) {
gpio_init(); // GPIO 초기화
while (1) {
led_on(); // LED 켜기
for (volatile int i = 0; i < 1000000; i++); // 간단한 지연
led_off(); // LED 끄기
for (volatile int i = 0; i < 1000000; i++); // 간단한 지연
}
return 0;
}