60/86
Пример –
HAL библиотеката на STM32L011 използва SysTick на
μPU за таймаути.
Системни таймериstatic HAL_StatusTypeDef ADC_Enable(
ADC_HandleTypeDef* hadc){
uint32_t tickstart = 0U;
if (ADC_IS_ENABLE(hadc) == RESET){
if (ADC_ENABLING_CONDITIONS(hadc) == RESET){
SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
return HAL_ERROR;
}
__HAL_ADC_ENABLE(hadc);
ADC_DelayMicroSecond(ADC_STAB_DELAY_US);
/* Get tick count */
tickstart = HAL_GetTick();
/* Wait for ADC effectively enabled */
while(__HAL_ADC_GET_FLAG(hadc, ADC_FLAG_RDY) == RESET){
if((HAL_GetTick() - tickstart) > ADC_ENABLE_TIMEOUT){
SET_BIT(hadc->State, HAL_ADC_STATE_ERROR_INTERNAL);
SET_BIT(hadc->ErrorCode, HAL_ADC_ERROR_INTERNAL);
return HAL_ERROR;
}
}
} return HAL_OK;
}
61/86
Часовниците за реално време (RTC,
Real
Time
Clock) - периферни схеми за отмерване на астрономическо време. Те представляват един брояч, към който са свързани няколко регистъра. Стойността на брояча се увеличава с едно на всяка една секунда. В регистрите се
записва текущата стойност, като при препълването на един регистър започва попълването на следващия. Препълването на всеки регистър е пропорционално на:
*секунди
*минути
*часове
*дни
*седмици
*месеци
*години
Часовници за реално време (RTC) 62/86
Почти винаги RTC притежават
резервно захранване, което позволява отмерване на времето,
дори когато системата не е включена. Типичен пример са персоналните компютри –
дори да са изключени, часът и датата остават верни.
За тактова честота на брояча се използват
генератори с Сподели с приятели: