Register | 역할 |
RCC_AHB1ENR | GPIO 사용을 위한 클록 설정 사용 원하는 핀 번호 1로 설정 |
GPIOx_MODER | 입출력을 설정해주는 레지스터 00 : INPUT 01 : GPO MODE 정해진 MODE를 토대로 핀 번호당 2비트씩 설정해준다 |
GPIOx_IDR | 전기적 상태 확인이 가능 |
GPIOx_ODR | 핀번호마다 전기적 신호 변경이 가능 |
#include <stdio.h>
//#include "stm32f4xx.h"
#define rRCC_AHB1ENR (*(int *)0x40023830) // -> GPIO CLK ON
#define rGPIOE_MODER (*(int *)0x40021000) // -> LED와 연결된 핀
#define rGPIOE_ODR (*(int *)0x40021014)
#define rGPIOC_MODER (*(int *)0x40020800) // -> 스위치와 연결된 핀
#define rGPIOC_IDR (*(int *)0x40020810)
int fputc(int ch, FILE * fp)
{
//ITM_SendChar(ch);
return ch;
}
int main()
{
// clock enable for PORT-C, PORT-E
rRCC_AHB1ENR = rRCC_AHB1ENR | (0x1<<2) | (0x1<<4);
printf("%#010x \n", rRCC_AHB1ENR);s
// PE7 --> output
rGPIOE_MODER = rGPIOE_MODER & ~(0x3 << 14);
rGPIOE_MODER = rGPIOE_MODER | (0x1 << 14);
// PC5 --> input
rGPIOC_MODER = rGPIOC_MODER & ~ (0x3<<10);
while (1)
{
if (rGPIOC_IDR & (0x1<<5))
{
rGPIOE_ODR = rGPIOE_ODR | (0x1 << 7);
}
else
{
rGPIOE_ODR = rGPIOE_ODR & ~ (0x1 << 7);
}
}
}
C포트와 E포트를 enable 한다 : 20
7번 핀의 방향을 00으로 초기 설정해준다 : 22
LED 출력이므로 7번 핀을 01로 설정해준다 : 23
스위치를 입력으로 설정하기 위해서 00으로 설정한다 : 25
C5에 전기적 신호가 들어옴을 확인하면, : 30
LED를 키기 위해 핀E7에 연결된 전기적 신호를 1로 변경 : 32
C5에 전기적 신호가 들어오지 않으면, : 35
LED를 그기 위해 핀E7에 연결된 전기적 신호를 0으로 변경 : 37
< 실습 결과 사진 >
'FW 심화 과정 > [2] STM32심화실습' 카테고리의 다른 글
0727 C프로그래밍 기초 14강 (0) | 2022.07.27 |
---|---|
0727 C프로그래밍 기초 10~13강 (0) | 2022.07.27 |
0726 C프로그래밍 기초 1~3강 (0) | 2022.07.26 |
0721 외부변수참조 / .h / CPU구조 / reg와argument / 슈도명령어 ~234 (0) | 2022.07.22 |
0720 포인터,배열의 동작구조 / 함수포인터 / 구조체 / union ~176 (0) | 2022.07.22 |
0720 형식지정자(typedef) / 매크로 ~84 (0) | 2022.07.21 |