реклама на сайте
подробности

 
 
> Передача глобальной переменной в функцию.
Jenya7
сообщение Nov 8 2016, 14:04
Сообщение #1


Профессионал
*****

Группа: Участник
Сообщений: 1 778
Регистрация: 29-03-12
Пользователь №: 71 075



Есть переменная которая инкрементируется кажую милисекунду.
Код
globalSysTime++;

Вопрос как лучше.
Так
Код
static inline Delay_ms(Uint32 * start_val, Uint32 del_us)
{

    Uint32 del = *start_val + del_us;  
    do{
           asm("  NOP");
    }while(del > *start_val);
}

или так
Код
static inline Delay_ms(Uint32 del_us)
{

    Uint32 del = globalSysTime + del_us;  
    do{
           asm("  NOP");
    }while(del > globalSysTime);
}
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
smalcom
сообщение Nov 9 2016, 06:28
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 292
Регистрация: 26-06-07
Пользователь №: 28 718



Второй вариант лучше. Покажу свой, пхожий вариант

Код
void Delay_ms(const uint8_t pDelay)
{
    for(uint8_t i = 0; i < pDelay; i++) Delay_1ms();
}

void Delay_1ms()
{
uint32_t startval = TIM_GetCounter(HWCONF_DELTIM_TIM);

    do {} while((TIM_GetCounter(HWCONF_DELTIM_TIM) - startval) <= 1);
}


в случае ТС вместо значения счётчика использовать переменную.

зы. ПМСМ первый вариант бессмысленный, т.к. переменная глобальная.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st August 2025 - 02:30
Рейтинг@Mail.ru


Страница сгенерированна за 0.01366 секунд с 7
ELECTRONIX ©2004-2016