СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №9/2014

ЭЛЕМЕНТЫ И КОМПОНЕНТЫ 26 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 9 2014 Структурная схема базового таймера Современные 32-разрядные ARM-микроконтроллеры серии STM32: базовые таймеры В статье приведено описание таймеров 32-разрядных ARM-микроконтроллеров серии STM32 от компании STMicroelectronics. Рассмотрена архитектура и состав регистров базовых таймеров, а также приведены практические примеры программ. Олег Вальпа (г. Миасс, Челябинская обл.) В ВЕДЕНИЕ Для любого микроконтроллера тай- мер является одним из важнейших узлов, который позволяет очень точно отсчитывать интервалы времени, счи- тать импульсы, поступающие на вхо- ды, генерировать внутренние преры- вания, формировать сигналы с широт- но-импульсной модуляцией (ШИМ) и поддерживать процессы прямого доступа к памяти (ПДП). Микроконтроллер STM32 [1] имеет в своём составе несколько типов тай- меров, отличающихся друг от друга по функциональному назначению. Первый тип таймеров является са- мым простым и представляет собой базовые таймеры (Basic Timers). К дан- ному типу принадлежат таймеры TIM6 и TIM7. Эти таймеры очень про- сто настраиваются и управляются при помощи минимума регистров. Они способны отсчитывать интерва- лы времени и генерировать прерыва- ния при достижении таймером задан- ного значения. Второй тип представляет собой тай- меры общего назначения (General- Purpose Timers). К нему относятся тай- меры с TIM2 по TIM5 и таймеры с TIM12 по TIM17. Они могут генерировать ШИМ, считать импульсы, поступаю- щие на определённые выводы микро- контроллера, обрабатывать сигналы от энкодера и т.п. Третий тип определяет таймеры с развитым управлением (Advanced- Control Timer). К этому типу относит- ся таймер TIM1, который способен выполнять все перечисленные выше операции. Кроме того, на основе дан- ного таймера можно построить устрой- ство, способное управлять трёхфазным электроприводом. У СТРОЙСТВО БАЗОВОГО ТАЙМЕРА Рассмотрим устройство и работу базового таймера, структурная схема которого представлена на рисунке. Базовый таймер построен на осно- ве 16-битных регистров. Его основой является счётный регистр TIMx_CNT. (Здесь и далее символ «х» заменяет номер 6 или 7 для базовых таймеров TIM6 и TIM7 соответственно.) Предва- рительный делитель TIMx_PSC позво- ляет регулировать частоту тактовых импульсов для счётного регистра, а регистр автозагрузки TIMx_ARR даёт возможность задавать диапазон отсчё- та таймера. Контроллер запуска и синхронизации вместе с регистрами управления и состояния служат для организации режима работы тайме- ра и позволяют контролировать его функционирование. Благодаря своей организации счёт- чик таймера может считать в прямом и в обратном направлении, а также до середины заданного диапазона в пря- мом, а затем в обратном направлении. На вход базового таймера может подаваться сигнал от нескольких источ- ников, в том числе тактовый сигнал синхронизации от шины APB1, внеш- ний сигнал или выходной сигнал дру- гих таймеров, подаваемый на выводы захвата и сравнения. Таймеры TIM6 и TIM7 тактируют- ся от шины APB1. Если использовать кварцевый резонатор с частотой 8 МГц и заводские настройки тактирования по умолчанию, то тактовая частота с шины синхронизации APB1 соста- вит 24 МГц. Р ЕГИСТРЫ БАЗОВОГО ТАЙМЕРА В таблице приведена карта регистров для базовых таймеров TIM6 и TIM7. Базовые таймеры включают в свой состав следующие 8 регистров: ● TIMx_CNT – Counter (счётный ре- гистр); ● TIMx_PSC – Prescaler (предваритель- ный делитель); ● TIMx_ARR – Auto Reload Register (регистр автоматической загрузки); ● TIMx_CR1 – Control Register 1 (ре- гистр управления 1); ● TIMx_CR2 – Control Register 2 (ре- гистр управления 2); ● TIMx_DIER – DMA Interrupt Enable Register (регистр разрешения ПДП и прерываний); ● TIMx_SR – Status Register (статусный регистр); ● TIMx_EGR – Event Generation Register (регистр генерации событий). Регистры TIMx_CNT, TIMx_PSC и TIMx_ARR используют 16 информа- ционных разрядов и позволяют запи- сывать значения от 0 до 65535. Частота тактовых импульсов для счётного регистра TIMx_CNT, прошед- ших через делитель TIMx_PSC, рассчи- тывается по формуле: Fcnt = Fin/(PSC + 1), где Fcnt – частота импульсов счётно- го регистра таймера; Fin – тактовая Источники запуска и синхронизации Регистр автозагрузки TIMx_ARR Счётный регистр TIMx_CNT Выходные сигналы Предварительный делитель TIMx_PSC Контроллер запуска и синхронизации с регистрами управления и состояния

RkJQdWJsaXNoZXIy MTQ4NjUy