우선 컴파일러는 Keil uVision5 를 사용하였고, miniJLINK 를 이용하여 F/W를 다운로드 하였다.
PORT PD15, PD14, PD13 에 연결된 RGB LED및 PC6에 연결된 SM-1205C BUZ를 사용하였다.
아래는 GPIO 포트를 초기화하는 함수 이다.
GPIO_initTypeDef
는 헤더파일을 보면 구조체로 만들어져 있다.
GPIO 몇번 핀을 사용할지, GPIO 속도, GPIO모드를 설정하기 위해 필요한 것들이 있다.
GPIO_Pin
에는 16비트 숫자를 넣어주면 된다.
0번 비트를 사용하려면 0x0001, 1번 비트를 사용하려면 0x0002 와 같이 값을 넣어주면 된다.
만약 0, 1, 2 번 핀만 활성화 하고 싶으면 0x0001, 0x0002, 0x0004 값을 더한 0x0007을 대입해주면 된다.
GPIO_Speed
는 GPIO의 반응속도를 나타낸다. GPIO_Mode
는 입력으로 사용할지 출력으로 사용할지, Push-pull 혹은 Open-drain 으로 사용할지 등을 결정해 준다.
RCC_APB2PeriphClockCmd()
함수는 사용하고자 하는 포트에 클럭신호를 넣어준다. 클럭이 발생하지 않을 경우 동작하지 않는다.
인자값을 살펴보면 사용할 포트를 입력해주고, ENABLE를 넣어주면 된다.
사용할 포트도 비트연산(OR)을 이용하여 한번에 여러포트를 동작시킬 수 있다.
RCC_APB2PeriphClockCmd()
함수를 이용하면 RCC_APB2ENR 라는 레지스터에 값을 써주는데 위에 표시된 부분을 SET해주면 PORTA를 사용할 수 있다.
Delay 함수는 Start_stm32f10x_hd.s
에 아래와 같이 정의되어 있는 SysTick_Handler
함수를 호출하여 틱을 발생시킨다.
아래와 같이 Delay 함수를 구현할 수 있다.
아래와 같이 main 함수를 작성한다.
Delay 함수를 사용하기위해서 SysTick_Config()
함수를 설정해야 한다. 동작은 BUZ음이 발생하고 BULE LED 가 1초 간격으로 점멸한다.
STM32 Clock - 클럭 소스와 클럭 설정 (0) | 2016.09.23 |
---|---|
[STM32F103VCT6] USART/FT232RL (0) | 2016.09.21 |
STM32F407VET6 UART (RS-232) (0) | 2016.09.12 |
STM32F407VET6 Delay 함수 설정 (0) | 2016.09.12 |
STM32F407VET6 GPIO 동작 테스트 (0) | 2016.09.07 |