블로그 이미지
송시혁

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

Notice

Tag

Recent Post

Recent Comment

Recent Trackback

Archive

2014. 2. 4. 12:18 stm32f417IG


필자는 데이터시트를 찾아내지 못해 st에서 제공하는 라이브러리 파일을 이용하여 분석해 나간다.



회로도 일부 잘라낸것

위의 잘 보면 LED1이랑 PG6과 연결이 되어있다. PG는 PORTG를 뜻한다. 따라서 LED1, 2, 3, 4를 단순히 ON시킨다고

가정할 경우 위의 그림처럼, PORTG6, 8, PORTI9, PORTC를 사용하여햐 한다. 핀 또한 6,8,9,7을 사용하여야 된다는 것을 알 수 있다.


LED INIT 분석 


GPIO_PuPd_UP은 pull up으로 설정하는 것. 위 그림의 주석은 오타이다. 

GPIO를 설정하고 포트를 설정한다. 


RCC_AHB~~~어쩌고 하는 함수는 해당 포트에 클럭을 enable하는 함수이다. 저것을 호출하지 않으면

동작하지 않는다. 이 함수의 내용은 필자도 아직 자세히 모르니 클럭을 공급한다라고 정도만 알아두자.


GPIO_Init함수가 호출되어 잇다. 위에 설정한 구조체멤버들을 각 해당 레지스터 비트에 설정하는 함수가 되겟다. 

자세한 분석은 역시 pass한다. stm32f417에 관한 데이터시트가 아직 찾지 못했으므로 나중에 따로 정리한다.

일단은 이 함수가 초기화 설정을 한다라고 만 알아두자.



 위의 GPIO_PORT[4]의 4개의 인덱스를 갖는 배열이며, 각 원소의 핀과 포트의 대한 정의가 아래에 나와있다. 

아래에 네모친 부분은 PIN6의 포트G가 된다. 즉 PG6이며,  LED1이 되는 것이다. 위의 회로도와 일치한다.


저 위의 함수만 호출하면 LED의관한 초기화는 끝난것이다. 


아래는 LED를 on/off/toggle시키는 함수이다. 


led를 on/off는 BSRR(bit set reset regiser)가 관장한다. BSRR은 상위비트와 하위비트로 나누어져 있다.

이것은 필자의 추측인데 상위 비트를 1로 설정시  reset, 하위비트가 1로 설정시 set이 되게 하는것 같다

데이터시트가 없으므로 확신은 할 수 없으나, 암튼 아래 함수를 이용하면 on/off/toggle이 가능한 것은 확실하다.



아래는 토글 함수이다. LED를 깜박이는 함수이다. ODR은 output data register를 ^ exclusive or시킨다.

xor은 같은 것은 0 다른것이 1이기 때문에 비트를 반전 시킨다고 보면 된다. 그래서 해당 핀과 xor시키면

비트가 1이면 0, 0이면 1로 반전시키게 된다. 


아래는 헤더 파일에 있는 GPIO의 레지스터들이다. 




'stm32f417IG' 카테고리의 다른 글

스위치 폴링 방식으로 제어 LED켜기  (1) 2014.02.21
posted by 송시혁