SysTick Timer(STK)란 24비트 시스템 타이머로
다운카운트되어 0이될때 인터럽트가 발생합니다.
STK_CTRL래자스터입니다.
STK_CTRL레지스터는 설정하는 레지스터입니다.
16비트에 있는 COUNT FLAG 는 24비트 타이머가 1씩 감소하다가
0이되면 1을 리턴
0이아닌 값일때는 0을 리턴합니다.
2번비트인 CLKSOURCE는
systick의 Clock source를 칩의것을 그대로 사용할것인지
8로나눠서 사용할 것인지
설정하는 비트입니다.
즉 0으로 설정하면 AHB/8
1로 설정하면 AHB 클락을 그대로 사용합니다.
1번비트인 TICKINT 는
24비트 타이머가 1씩 감소하다가 0이되면
인터럽트 요청을 할 것인지 말것인지 설정합니다.
0으로 설정하면 카운트가0이되도 인터럽트를 발생하지 않습니다.
1으로 설정하면 카운트가 0이될때마다 인터럽트를 발생합니다.
때문에 대부분 1로 설정하고 사용합니다.
0번비트인 ENABLE은
카운터를 할것인지 말것인지를 설정합니다.
해당비트가 1으로 설정되어있다면 SET하겠다는 말이고 이는
아래설명할 STK_LOAD레지스터의 RELOAD값을 가져와
( RELOAD 값 : 다운카운팅을 처음 시작 할 값 )
카운트 다운을 합니다.
해당비트가 0으로 설정되어있다면 카운트를 하지 않겠다는것이므로
보통 이 비트는 1로 설정합니다.
다음은 STK_LOAD 레지스터입니다.
24비트 타이머가 다운카운팅 된다고 설명했는데
24비트 중 처음 시작할 값을 지정합니다.
예를들어 처음시작값을 1500으로 지정했다면
1500부터 1씩 다운카운팅되다가 0이되면 인터럽트되어
( STK_CTRL레지스터의 설정여부에따라 )
다시 1500부터 다운카운팅 됩니다.
위에서 24비트 타이머라고 설명드렸듯이
범위는 0x00000001~0x00FFFFFF까지 지정할 수있습니다.
0으로도 설정가능하나 0으로 설정할 경우 아무 반응이 없습니다.
STK_VAL 레지스터 입니다.
이 레지스터는 현재 카운팅되고 있는 값을 읽을 수있습니다.
rw로 되어있는걸 보아 쓰기도 가능한데
쓰기기능은 Systick타이머를 재설정 할때 사용합니다.
어떠한 값을 쓰면 이 레지스터는 0으로 클리어되며
STK_CRTL레지스터의 COUNTFLAG비트도 클리어됩니다.
Systick 타이머를 재설정하는방법은
------------------------------------------------------------------
1. STK_LOAD 레지스터를 카운트다운을 시작할 값을 저장
2. STK_VAL 레지스터의 값 클리어
3. STK_CTRL레지스터 초기화
------------------------------------------------------------------
하면 됩니다.
'프로그래밍' 카테고리의 다른 글
윈도우시스템프로그래밍_02.윈도우에서의 문자셋(SBCS/MBCS/WBCS)(아스키코드,유니코드 등) (0) | 2017.01.18 |
---|---|
윈도우시스템프로그래밍_01.컴퓨터구조의 이해 (0) | 2017.01.16 |
ARM데이터시트_Systick 우선순위 및 발생 시점 (0) | 2016.12.18 |
ARM실습_SPL를 이용하여 GPIO를 해보자 (0) | 2016.12.14 |
ARM데이터시트_GPIOx_IDR 입력(input)제어 (0) | 2016.12.11 |
댓글