embeded/Cortex-M3 STM
STM32 timer 사용하기
구차니
2024. 12. 13. 14:13
PWM 이랑 거의 비슷하다
TIM2를 사용할 거고, clock source - internal clock
prescaler는 6MHz로 작동해서 6000 으로 하여 1msec 주기의 tick을 사용한다.
Counter Period는 1000 으로 해서 1000 번의 tick이 모이면 (= 1초) timer interrupt가 발생하게 한다.
NVIC Settings에서 TIM2 global interrupt를 발생시키게 하고 프로젝트 갱신하고
아래의 함수들을 추가하면 끝
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
static int pwm_val = 0;
static int dir = 1;
if(dir)
{
if(pwm_val < 10)
{
pwm_val++;
}
else
{
dir = 0;
pwm_val--;
}
}
else
{
if(pwm_val > 0)
{
pwm_val--;
}
else
{
dir = 1;
pwm_val++;
}
}
// printf("pwm_val[%d] dir[%d]\n", pwm_val, dir);
htim3.Instance->CCR1 = pwm_val;
htim3.Instance->CCR2 = pwm_val;
}
int main(void)
{
/* USER CODE BEGIN 2 */
HAL_TIM_Base_Start_IT(&htim2);
/* USER CODE END 2 */
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_Delay(10);
}
/* USER CODE END 3 */
}
|
[링크 : https://eteo.tistory.com/73]