본문 바로가기

임베디드/STM32

stm32f Systick을 활용한 MicroSecond Delay 만들기

I2C 통신을 하다.. 1us 단위로 동작하는 delay가 필요하여.. 이리저리 찾아보다가

systick을 활용한 delay 방법을 찾았다.

(그런데... Hal_Delay()와 같이 쓰니까 프로그램이 멈춘다... 그렇지만 일단 정리는 해본다.)

 

하기는 systick 관련 자료이다. 

SysTick -> CTRL
SysTick -> LOAD
SysTick -> VAL

위 자료를 참고 해서 systick을 코딩했다.

1. SysTick -> CTRL 을 설정 해준다. 

2.  SysTick -> LOAD값을 설정한다. 시스템 클록이 100Mhz라면 Load값을 100으로 설정하면, 100,000,000 / 100 = 1,000,000hz -> 1us마다 카운트가 0이 된다.

3. SysTick -> VAL 초기에 0으로 설정.

 

오실로 스코프 측정 결과 1us 단위로 toggle 동작을 실행하는 것을 확인할수 있다.

 

'임베디드 > STM32' 카테고리의 다른 글

STM32F I2C 통신 _ MCP3426 ADC  (0) 2022.10.24
stm32f asm("nop")을 활용한 MicroSecond Delay 만들기  (0) 2022.10.22