BASIC4MCU | 질문게시판 | stm32에서 코드 경과시간 측정하는 방법좀
페이지 정보
작성자 라칸 작성일2022-12-07 18:16 조회283회 댓글3건본문
stm32에서 코드 경과시간 측정하는 방법좀 알려주세요
전에는
start_time = clock();
end_time = clock();
check_time =(float) (end_time - start_time)/ CLOCKS_PER_SEC;
printf("걸린시간 : %f\n\r", check_time);
이렇게해서 구했는데 stm32에서 할때 CLOCKS_PER_SEC =1로 나오는데
코드는 1초에 10번쯤 나오는 상태였는데 2자리수로 나와서요
대충 100으로 나누고 하면 얼추 맞나 싶었는데
코드 안을 세부적으로 해보면 뭔가 printf하면서 시간이 걸려서 1초에 4번 출력되었는데 코드 시간 합계도 29~30으로 나와서요(시간 계산 안하면 7~8번쯤 나왔어야했었습니다)
printf를 감안해도 안맞으니
stm32에서는 어떻게 해야 정확한 경과시간을 구할수 있나요?
댓글 3
조회수 283master님의 댓글
master 작성일
변수 선언의 데이터형은 충분히 큰 것으로 했겠죠?
//
check_time =clock();
printf("check_time : %ld\n\r", check_time);
delay(1000);
값이 제대로 증가하는지 체크하세요
//
printf("CLOCKS_PER_SEC : %ld\n\r", CLOCKS_PER_SEC);
delay(1000);
CLOCKS_PER_SEC도 얼마인지 체크 해보시고요
//
start_time = clock();
end_time = clock();
check_time =end_time - start_time;
printf("end_time - start_time : %ld\n\r", check_time);
하나씩 차례대로 출력해서 값이 제대로 연산되는지 추적하다보면 어디서 문제가 생기는지 찾을 수 있습니다.
라칸님의 댓글
라칸
CLOCKS_PER_SEC은 1로 나오고 있고
start_time = clock();
HAL_Delay(1000);
end_time = clock();
check_time = (float)(end_time -start_time) /CLOCKS_PER_SEC;
printf("걸린 시간 : %f\n\r", check_time);
로 했을때 136, 126 이런식으로 나왔습니다
start_time, end_time은 int로 하고 check_time은 float으로 했습니다
master님의 댓글
master
printf()의 영향을 줄이려면 보레이트는 115200으로 최대 속도로 선언하고요
HAL_Delay(1000);
check_time = clock();
printf("걸린 시간 : %f\n\r", check_time);
시간이 1초(1000ms씩 증가) 하는지 부터 체크하세요