PWM Data를 만들기 위해서 클럭 셋팅
아래는 예제 프로그램을 제 개인적인 생각으로 정리 한 것입니다.
정현파의 클럭이 발생하게 됩니다.
아래의 변수에서 CCR1_Val 값을 변경 하면 파형은 PWM 처럼 동작 하게 됩니다.
크게 3단계로 접근 합니다.
1. 초기화 단계
1.1 클럭 셋팅
1.2 GPIO 셋팅
2. 타이머 셋팅
2.1. 타이머 셋팅
3. 타이머 인터럽트 셋팅
3.1. 타이머 인터럽트에 대한 루틴 처리
타이머 1 사용
클럭 연결 (Enable)
CLK_PeripheralClockConfig(CLK_Peripheral_TIM1, ENABLE); /* Timer1 clock Enable */
클럭은 외부 클럭을 사용 할 것인지 아니면 내부 클럭을 사용 할 것인지를 판단 합니다.
클럭 관련 부분은 차후에 올리도록 하겠습니다.
GPIO 셋팅
포트는 PORTD 2번 핀 외부 출력 셋팅
/* TIM1 Channel 1 configuration: PD2 */
GPIO_Init(GPIOD, GPIO_Pin_2, GPIO_Mode_Out_PP_Low_Fast);
#define TIM1_PERIOD 65535
#define TIM1_PRESCALER 1
#define TIM1_REPTETION_COUNTER 0
__IO uint16_t CCR1_Val = 32768;
- TIM1 counter clock = TIM1CLK / TIM1_PRESCALER+1 = 2 MHz/1+1 = 1 MHz
타이머 클럭 분주
*/
/* Toggle Mode configuration: Channel1 TIM1_OCMode_Toggle */
TIM1_OC1Init(TIM1_OCMode_Toggle,
TIM1_OutputState_Enable,
TIM1_OutputNState_Disable,
CCR1_Val,
TIM1_OCPolarity_Low,
TIM1_OCNPolarity_Low,
TIM1_OCIdleState_Set,
TIM1_OCNIdleState_Set);
TIM1_OC1PreloadConfig(DISABLE);
TIM1_ARRPreloadConfig(ENABLE);
/* TIM1 Interrupt enable */
TIM1_ITConfig(TIM1_IT_CC1, ENABLE);
/* enable interrupts */
enableInterrupts();
/* Enable TIM1 outputs */
TIM1_CtrlPWMOutputs(ENABLE);
/* TIM1 enable counter */
TIM1_Cmd(ENABLE);
'WORK > Sotfware' 카테고리의 다른 글
[C++] Linked List 개념 잡기 (0) | 2017.08.28 |
---|---|
[LINUX] virtualbox putty 접속방법 (0) | 2017.05.15 |
FreeRTOS 관련 건. (0) | 2017.04.25 |
C언어 point 와 구조체 1 (0) | 2017.03.15 |
UART Program 정리 (0) | 2016.11.15 |
댓글