Гл ас д-р инж. Любомир Богданов


uint8_t reset_cause;HAL_Init();init_watchdog();reset_cause = watchdog_check_reset();if



Pdf просмотр
страница11/17
Дата06.03.2024
Размер2.94 Mb.
#120572
1   ...   7   8   9   10   11   12   13   14   ...   17
06 timers
Свързани:
01 introduction
uint8_t reset_cause;
HAL_Init();
init_watchdog();
reset_cause = watchdog_check_reset();
if(reset_cause){
//Force pinger turn on
}
else{
//Normal start-up
}
}
Пример – STML011 в уред, който трябва да се активира принудително, ако програмата увисне.


56/86
Стражеви таймери
uint8_t watchdog_check_reset(void){
uint32_t reset_cause = 0;
uint8_t val;
reset_cause = (RCC->CSR & WWDGRSTF) | (RCC->CSR & IWDGRSTF);
RCC->CSR &=
(WWDGRSTF | IWDGRSTF);
if(reset_cause){
//Reset cause: WDT
val = 1;
}
else{
//Reset cause: non-WDT
val = 0;
}
return val;
}
Пример – API функция за
STML011 за проверка източника на рестарт. Този контролер има два стражеви таймера, затова се проверяват два флага на CSR регистъра.


57/86
Стражеви таймери


58/86
Системни таймери (SysTick – System Tick) – таймери, използвани за генериране на прекъсвания на равни интервали от време за нуждите на библиотеки или системен софтуер, работещ в реално време.
Някои от приложенията на тези таймери са:
*в операционна система за реално време (за диспечера на ядрото иŠ)
*в системни библиотеки (за организиране на закъснения и периодична проверка за събития)
*във файлови системи (за вътрешната логика, house keeping, на системата).
Ако μCU не използва софтуер, изискващ SysTick, този таймер може да се използва с общо преназначение във всички приложения.
Системни таймери


59/86
Пример – микропроцесорите от фамилията ARM Cortex имат вграден системен таймер, чийто конфигурационни регистри са достъпни в адресното му поле.


Сподели с приятели:
1   ...   7   8   9   10   11   12   13   14   ...   17




©obuch.info 2024
отнасят до администрацията

    Начална страница