Страница 1 из 1

Исполнение кода каждые 10 микросекунд

Добавлено: Ср фев 15, 2023 08:06:08
userstm2023
Добрые люди помогите.
Проверьте мой код, главным образом настройку таймера в JPG, будет ли исполнение кода каждые 10 микросекунд
запутался с периодами что то.....

Код: Выделить всё

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if(htim->Instance == TIM2) //100кГц
		{
		if (t>0) t--;
		}

//в главном цикле вызывается бесконечно эта функция:
void func(...)
{
if (t > 0) return; //выжидаем заданное число десятков микросекунд 

t=1;
//сюда переходим каждые 10 микросекунд, за исключением первого раза когда таймер не синхронизирован с моментом присвоения t 

}

Re: Исполнение кода каждые 10 микросекунд

Добавлено: Ср фев 15, 2023 13:50:53
AlanDrakes
Предделитель можно выставить в 0, тогда частота не будет делиться.
А значение счётчика установить в (50000000 / 100000) - 1 = 499.

Но можете получить джиттер из-за обработчика прерывания и собственно кода.

Если код маленький - его можно было бы обрабатывать прямо в прерывании.