STM32F0 da microseconds delay nasıl oluştururum ?

Başlatan Halil Gök, 22 Kasım 2019, 09:30:46

Halil Gök

İnternette  DWT_stm32_delay kütüphanesini dahil ettim fakat bu kütüphanenin .h uzantılı dosyasında kartı stm32f103 var başlangıçta onu stm32f0'a çektiğimde hatalar alıyorum. stm32f0 ile ilgili yazılmış bir kütüphane göremedim. işlemciyi mikrosaniyede sürmek istiyorum.




robikod

Şöyle bir şey yapabilirsiniz belki, Belirli milisaniyede sayan bir timer oluşturup o timer içerisine counter değeri ekleyebilirsiniz. mesela 1 ms Timerına sahipseniz, counter değeriniz her ms de 1 artar.

Elektroemre

#2
Systick timer'dan direkt milisaniye küsüratı alınabilir.

uint64_t micros()
{
	uint32_t millis, microsL;

	uint32_t dummyRead = SysTick->CTRL;

	do
	{
		millis = tickCounter;
		microsL = SysTick->VAL;
	}
	while(SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk);

	uint64_t microsVal = (uint64_t)millis * 1000 + ((SysTick->LOAD + 1 - microsL) * 1000) / SysTick->LOAD;

	return microsVal;
}