
MCU가 제공하는 다양한 기능 예시
Peripheral(페리펄럴): 이런 기능들을 제공하는 하드웨어
ex) GPIO - port
ADC - ADC
통신 - SPI Uart MultiCAN MCMCAN 등
PWM - PWM FRM TIM1 등
다양한 MCU 관련 설명자료를 제조사에서 제공
MCU SW: 이런 페리펄럴들을 적절하게 컨트롤해야 함
레지스터: 페리펄럴 내부에 있는 작은 메모리
ex) GPIO -> Port 페리펄럴 제공
에어컨은 페리펄럴, 리모콘은 레지스터
리모콘 설명서은 MCU 내부 설명 문서
레지스터도 일종의 메모리
-> 고유한 메모리 주소 값을 가짐
-> CPU가 값을 쓰고 쓸 수 있음
ex) Port 페리펄럴 설명서
레지스터 A(주소: 100번지)
값 1 -> Pin1에 전압 출력
값 2 -> Pin2에 전압 출력
값 4 -> Pin3에 전압 출력
int main(void)
{
unsigned int* Reg_A = (undesigned int*) 100;
while(1)
{
*Reg_A = 1;
for(int i=0;i<1000;i++)
;
*Reg_A = 2;
for(int i=0;i<1000;i++)
;
}
}
ex) MCU 내부 온도가 40도 초과할 경우 LED 불이 켜지는 기능 구현
MCU User manual -> DTS 센서가 현재 온도 측정 값을 만들어냄
-> 측정 결과는 주기적으로 DTSSTAT 레지스터에 쓰임
-> Address: 0xF02401c0
int main(void)
{
unsigned int* DTSSTAT = (unsigned int*)0xF02401c0; // DTSSTAT 레지스터 주소
unsigned int* Reg = (unsigned int*)100;
float temperature;
while(1)
{
temperature = (*DTSSTAT) / 7.505 - 273.15; // 설명서 계산공식
if(temperature > 40)
*Reg_A = 1;
else
*Reg_A = 0;
}
}