728x90
반응형
1. stm32cube 설정
시간 계산
T = Counter Period / (APB2 timer clocks / Prescaler)
%Counter Period 는 최소 100이상이여야한다.
%값은 16비트제한으로 최대 65536 입니다.
%정확한 카운터를 위해서는 -1을 해야한다.
duty비(%) = 100/(Prescaler / Pulse)
시간 계산은 T = 8000000/8 / 1000 = 1ms 듀티비는 100 이면 10% 입니다. |
2. 소스
int main(void)
{
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM8_Init();
HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_1);
while (1)
{
}
}
main.c 에 HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_1); 이거만 추가하시면 됩니다.
3. 응용 코드
int main(void)
{
uint8_t test=0;
HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_TIM8_Init();
HAL_TIM_PWM_Start(&htim8, TIM_CHANNEL_1);
while (1)
{
test++;
TIM8->CCR1 = test;
HAL_Delay(100);
}
}
이렇게 하면 100 ms 마다 duty비가 1(0.1%)씩 증가합니다.
하지만 uint8_t 라서 256 이되면 0 이되니깐 참고하세요~~
TIM8->CCR1=(val);
val에 따라 듀티비를 바꿀수 있는 코드였습니다.
참고로 펄스 값을 바꾸기 위해선
TIM8->ARR = 1000;
이렇게 값을 바꾸면 htim8.Init.Period = 1000; <--요 값이 바꿔주니 참고하세요~~
728x90
반응형
'공부 > STM32F1' 카테고리의 다른 글
15.[stm32f103][hal] 타이머 (6) _ Timer PWM One Pulse Mode (0) | 2017.09.28 |
---|---|
14.[stm32f103][hal] 타이머 (5) _ Timer PWM Interrupt (0) | 2017.09.28 |
12.[stm32f103][hal] 타이머 (3) _ Timer OC(Output Compare) Interrupt (0) | 2017.09.26 |
11.[stm32f103][hal] 타이머 (2) _ Timer OC(Output Compare) (0) | 2017.09.22 |
10.[stm32f103][hal] 타이머 (1) _ 개요 (0) | 2017.09.22 |