STM320 GPIO 기능은 참으로 막강하다.
예를 들어 다음 모드를 모두 지원한다.
● Input floating
● Input pull-up
● Input-pull-down
● Analog Input
● Output open-drain
● Output push-pull
● Alternate function push-pull
● Alternate function open-drain
5V 인풋 아웃풋 톨러런트를 지원한다. 저항 관계를 잘 고려해서 쓰면 된다.
칩 외부에 풀업 5V 저항이 있을 때 푸시풀 모드를 쓰면 내부 풀업저항에까지 5V걸릴 것이다. 칩에 오버로드가 걸릴 것 같지만 잘 버티는 것 같다.
슬립모드를 구현시에는 포트 상태를 잘 고려해야겠다.
GPIO 설정을 항상 속도까지 지정해야 한다. 속도와 무관한 작업이라도 지정해야 한다. 내가 그것 때문에 초큼 헤멨다. 스코프를 최후까지 멀리 하는 귀차니즘때문에 괜히 두 시간 날렸다.
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_Init(GPIOF, &GPIO_InitStructure);
물론 그 전에 클럭도 공급해야 한다. 최근 칩들은 핀 하나하나를 상세 컨트롤 할 수 있어서 초기화할 것이 많다. 이런 기능은 각 IP를 하나씩 끄고 켜서 배터리를 아끼기 위한 것이다.
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF);
최신 칩 답게 atomic 비트 설정을 지원한다. 즉, 비트 연산 없이 바로 한 비트씩 타게팅 하여 끄고 켤 수 있다는 것.
그리고
안 되면 찍어라!!
스코프로..
그리고 투표도 좀 잘찍으삼.. 나라꼴이 이게 뭥미..