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