🗊Презентация Продвинутые таймеры на STM32F1xx

Категория: Технология
Нажмите для полного просмотра!
Продвинутые таймеры на STM32F1xx, слайд №1Продвинутые таймеры на STM32F1xx, слайд №2Продвинутые таймеры на STM32F1xx, слайд №3Продвинутые таймеры на STM32F1xx, слайд №4Продвинутые таймеры на STM32F1xx, слайд №5Продвинутые таймеры на STM32F1xx, слайд №6Продвинутые таймеры на STM32F1xx, слайд №7Продвинутые таймеры на STM32F1xx, слайд №8Продвинутые таймеры на STM32F1xx, слайд №9Продвинутые таймеры на STM32F1xx, слайд №10Продвинутые таймеры на STM32F1xx, слайд №11Продвинутые таймеры на STM32F1xx, слайд №12Продвинутые таймеры на STM32F1xx, слайд №13Продвинутые таймеры на STM32F1xx, слайд №14Продвинутые таймеры на STM32F1xx, слайд №15Продвинутые таймеры на STM32F1xx, слайд №16

Вы можете ознакомиться и скачать презентацию на тему Продвинутые таймеры на STM32F1xx. Доклад-сообщение содержит 16 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Продвинутые таймеры 
на STM32F1xx
Кто, почему и зачем?
Описание слайда:
Продвинутые таймеры на STM32F1xx Кто, почему и зачем?

Слайд 2





Кто?
В микроконтроллере stm32f103 имеются 2 продвинутых таймера
TIM1
TIM8
Описание слайда:
Кто? В микроконтроллере stm32f103 имеются 2 продвинутых таймера TIM1 TIM8

Слайд 3





Почему они называются продвинутыми?
Как и остальные таймеры, TIM1 и TIM8 позволяют:
Захватывать ШИМ-сигналы
Выводить ШИМ-сигналы
Считать вверх/вниз/вверх-вниз
Изменять частоту работы, период заполнения и тд
Синхронизироваться друг с другом (для увеличения разрядности, например)
НО!
Описание слайда:
Почему они называются продвинутыми? Как и остальные таймеры, TIM1 и TIM8 позволяют: Захватывать ШИМ-сигналы Выводить ШИМ-сигналы Считать вверх/вниз/вверх-вниз Изменять частоту работы, период заполнения и тд Синхронизироваться друг с другом (для увеличения разрядности, например) НО!

Слайд 4





Почему они называются продвинутыми?
Выводить на выходы микроконтроллера комплементарный ШИМ-сигнал с настраиваемым «Мёртвым временем»
Задавать счетчик повторов, который позволит выставлять флаг прерывания через заданное количество срабатываний события, порождающего прерывание (переполнения, например)
Обрабатывать данные с квадратурного энкодера и датчика Холла
Сбрасывать выходы микроконтроллера, на которые выводился ШИМ в предустановленное состояние Reset
Использовать Прямой Доступ к Памяти по любому поводу, описанному ранее
Описание слайда:
Почему они называются продвинутыми? Выводить на выходы микроконтроллера комплементарный ШИМ-сигнал с настраиваемым «Мёртвым временем» Задавать счетчик повторов, который позволит выставлять флаг прерывания через заданное количество срабатываний события, порождающего прерывание (переполнения, например) Обрабатывать данные с квадратурного энкодера и датчика Холла Сбрасывать выходы микроконтроллера, на которые выводился ШИМ в предустановленное состояние Reset Использовать Прямой Доступ к Памяти по любому поводу, описанному ранее

Слайд 5





Почему они называются продвинутыми?
Описание слайда:
Почему они называются продвинутыми?

Слайд 6





Зачем они нам нужны?
1) При управлении полумостом на полевых или IGBT транзисторах необходимо дожидаться полного закрытия одного транзистора полумоста перед открытием второго, иначе оба транзистора будут открыты и ток потечет через них, игнорирую нагрузку.
С этим помогает 
мёртвое время
Описание слайда:
Зачем они нам нужны? 1) При управлении полумостом на полевых или IGBT транзисторах необходимо дожидаться полного закрытия одного транзистора полумоста перед открытием второго, иначе оба транзистора будут открыты и ток потечет через них, игнорирую нагрузку. С этим помогает мёртвое время

Слайд 7





Зачем они нам нужны?
1, 5 – выход на нагрузку
2, 7 – общая точка (земля)
3 – напряжение питания полумоста
4, 6 – управляющие сигналы на ключи полумоста
Описание слайда:
Зачем они нам нужны? 1, 5 – выход на нагрузку 2, 7 – общая точка (земля) 3 – напряжение питания полумоста 4, 6 – управляющие сигналы на ключи полумоста

Слайд 8





Зачем они нужны?
2)Считывать показания с датчиков Холла или квадратурного энкодера
Описание слайда:
Зачем они нужны? 2)Считывать показания с датчиков Холла или квадратурного энкодера

Слайд 9





Зачем они нужны?
Описание слайда:
Зачем они нужны?

Слайд 10





Зачем они нужны?
3)Прерывания после заданного числа событий
Описание слайда:
Зачем они нужны? 3)Прерывания после заданного числа событий

Слайд 11





Как их настроить?
1) Запускаем тактирование таймера
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIMx , ENABLE);
2) Создаём экземпляр структуры основных настроек таймера
TIM_TimeBaseInitTypeDef    
Заполняем её поля, глядя на её определение в файле stm32f10x_tim.h
typedef struct
{
  uint16_t TIM_Prescaler;         /*!< Specifies the prescaler value used to divide the TIM clock.
                                       This parameter can be a number between 0x0000 and 0xFFFF */
  uint16_t TIM_CounterMode;       /*!< Specifies the counter mode.
                                       This parameter can be a value of @ref TIM_Counter_Mode */
  uint16_t TIM_Period;            /*!< Specifies the period value to be loaded into the active
                                       Auto-Reload Register at the next update event.
                                       This parameter must be a number between 0x0000 and 0xFFFF.  */ 
  uint16_t TIM_ClockDivision;     /*!< Specifies the clock division.
                                      This parameter can be a value of @ref TIM_Clock_Division_CKD */
  uint8_t TIM_RepetitionCounter;  /*!< Specifies the repetition counter value. Each time the RCR downcounter
                                       reaches zero, an update event is generated and counting restarts
                                       from the RCR value (N).
                                       This means in PWM mode that (N+1) corresponds to:
                                          - the number of PWM periods in edge-aligned mode
                                          - the number of half PWM period in center-aligned mode
                                       This parameter must be a number between 0x00 and 0xFF. 
                                       @note This parameter is valid only for TIM1 and TIM8. */
} TIM_TimeBaseInitTypeDef;
3) Вызвать TIM_TimeBaseInit
Описание слайда:
Как их настроить? 1) Запускаем тактирование таймера RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIMx , ENABLE); 2) Создаём экземпляр структуры основных настроек таймера TIM_TimeBaseInitTypeDef Заполняем её поля, глядя на её определение в файле stm32f10x_tim.h typedef struct { uint16_t TIM_Prescaler; /*!< Specifies the prescaler value used to divide the TIM clock. This parameter can be a number between 0x0000 and 0xFFFF */ uint16_t TIM_CounterMode; /*!< Specifies the counter mode. This parameter can be a value of @ref TIM_Counter_Mode */ uint16_t TIM_Period; /*!< Specifies the period value to be loaded into the active Auto-Reload Register at the next update event. This parameter must be a number between 0x0000 and 0xFFFF. */ uint16_t TIM_ClockDivision; /*!< Specifies the clock division. This parameter can be a value of @ref TIM_Clock_Division_CKD */ uint8_t TIM_RepetitionCounter; /*!< Specifies the repetition counter value. Each time the RCR downcounter reaches zero, an update event is generated and counting restarts from the RCR value (N). This means in PWM mode that (N+1) corresponds to: - the number of PWM periods in edge-aligned mode - the number of half PWM period in center-aligned mode This parameter must be a number between 0x00 and 0xFF. @note This parameter is valid only for TIM1 and TIM8. */ } TIM_TimeBaseInitTypeDef; 3) Вызвать TIM_TimeBaseInit

Слайд 12





Как их настроить?
4) Создаём экземпляр структуры настроек Output Compare таймера
TIM_OCInitTypeDef
Заполняем её поля, глядя на её определение в файле stm32f10x_tim.h
typedef struct
{
  uint16_t TIM_OCMode;        /*!< Specifies the TIM mode.
                                   This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */
  uint16_t TIM_OutputState;   /*!< Specifies the TIM Output Compare state.
                                   This parameter can be a value of @ref TIM_Output_Compare_state */
  uint16_t TIM_OutputNState;  /*!< Specifies the TIM complementary Output Compare state.
                                   This parameter can be a value of @ref TIM_Output_Compare_N_state
                                   @note This parameter is valid only for TIM1 and TIM8. */
  uint16_t TIM_Pulse;         /*!< Specifies the pulse value to be loaded into the Capture Compare Register. 
                                   This parameter can be a number between 0x0000 and 0xFFFF */
  uint16_t TIM_OCPolarity;    /*!< Specifies the output polarity.
                                   This parameter can be a value of @ref TIM_Output_Compare_Polarity */
  uint16_t TIM_OCNPolarity;   /*!< Specifies the complementary output polarity.
                                   This parameter can be a value of @ref TIM_Output_Compare_N_Polarity
                                   @note This parameter is valid only for TIM1 and TIM8. */
  uint16_t TIM_OCIdleState;   /*!< Specifies the TIM Output Compare pin state during Idle state.
                                   This parameter can be a value of @ref TIM_Output_Compare_Idle_State
                                   @note This parameter is valid only for TIM1 and TIM8. */
  uint16_t TIM_OCNIdleState;  /*!< Specifies the TIM Output Compare pin state during Idle state.
                                   This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State
                                   @note This parameter is valid only for TIM1 and TIM8. */
} TIM_OCInitTypeDef;
5) Вызвать для каждого канала    TIM_OCxInit(TIMy, &TIM_OCInitStructure);
Описание слайда:
Как их настроить? 4) Создаём экземпляр структуры настроек Output Compare таймера TIM_OCInitTypeDef Заполняем её поля, глядя на её определение в файле stm32f10x_tim.h typedef struct { uint16_t TIM_OCMode; /*!< Specifies the TIM mode. This parameter can be a value of @ref TIM_Output_Compare_and_PWM_modes */ uint16_t TIM_OutputState; /*!< Specifies the TIM Output Compare state. This parameter can be a value of @ref TIM_Output_Compare_state */ uint16_t TIM_OutputNState; /*!< Specifies the TIM complementary Output Compare state. This parameter can be a value of @ref TIM_Output_Compare_N_state @note This parameter is valid only for TIM1 and TIM8. */ uint16_t TIM_Pulse; /*!< Specifies the pulse value to be loaded into the Capture Compare Register. This parameter can be a number between 0x0000 and 0xFFFF */ uint16_t TIM_OCPolarity; /*!< Specifies the output polarity. This parameter can be a value of @ref TIM_Output_Compare_Polarity */ uint16_t TIM_OCNPolarity; /*!< Specifies the complementary output polarity. This parameter can be a value of @ref TIM_Output_Compare_N_Polarity @note This parameter is valid only for TIM1 and TIM8. */ uint16_t TIM_OCIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. This parameter can be a value of @ref TIM_Output_Compare_Idle_State @note This parameter is valid only for TIM1 and TIM8. */ uint16_t TIM_OCNIdleState; /*!< Specifies the TIM Output Compare pin state during Idle state. This parameter can be a value of @ref TIM_Output_Compare_N_Idle_State @note This parameter is valid only for TIM1 and TIM8. */ } TIM_OCInitTypeDef; 5) Вызвать для каждого канала TIM_OCxInit(TIMy, &TIM_OCInitStructure);

Слайд 13





Как их настроить?
6) Создаём экземпляр структуры настроек BDTR таймера
TIM_OCInitTypeDef
Заполняем её поля, глядя на её определение в файле stm32f10x_tim.h
typedef struct
{
  uint16_t TIM_OSSRState;        /*!< Specifies the Off-State selection used in Run mode.
                                      This parameter can be a value of @ref OSSR_Off_State_Selection_for_Run_mode_state */
  uint16_t TIM_OSSIState;        /*!< Specifies the Off-State used in Idle state.
                                      This parameter can be a value of @ref OSSI_Off_State_Selection_for_Idle_mode_state */
  uint16_t TIM_LOCKLevel;        /*!< Specifies the LOCK level parameters.
                                      This parameter can be a value of @ref Lock_level */ 
  uint16_t TIM_DeadTime;         /*!< Specifies the delay time between the switching-off and the
                                      switching-on of the outputs.
                                      This parameter can be a number between 0x00 and 0xFF  */
  uint16_t TIM_Break;            /*!< Specifies whether the TIM Break input is enabled or not. 
                                      This parameter can be a value of @ref Break_Input_enable_disable */
  uint16_t TIM_BreakPolarity;    /*!< Specifies the TIM Break Input pin polarity.
                                      This parameter can be a value of @ref Break_Polarity */
  uint16_t TIM_AutomaticOutput;  /*!< Specifies whether the TIM Automatic Output feature is enabled or not. 
                                      This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */
} TIM_BDTRInitTypeDef;
7) Вызвать для каждого канала    TIM_BDTRConfig
Описание слайда:
Как их настроить? 6) Создаём экземпляр структуры настроек BDTR таймера TIM_OCInitTypeDef Заполняем её поля, глядя на её определение в файле stm32f10x_tim.h typedef struct { uint16_t TIM_OSSRState; /*!< Specifies the Off-State selection used in Run mode. This parameter can be a value of @ref OSSR_Off_State_Selection_for_Run_mode_state */ uint16_t TIM_OSSIState; /*!< Specifies the Off-State used in Idle state. This parameter can be a value of @ref OSSI_Off_State_Selection_for_Idle_mode_state */ uint16_t TIM_LOCKLevel; /*!< Specifies the LOCK level parameters. This parameter can be a value of @ref Lock_level */ uint16_t TIM_DeadTime; /*!< Specifies the delay time between the switching-off and the switching-on of the outputs. This parameter can be a number between 0x00 and 0xFF */ uint16_t TIM_Break; /*!< Specifies whether the TIM Break input is enabled or not. This parameter can be a value of @ref Break_Input_enable_disable */ uint16_t TIM_BreakPolarity; /*!< Specifies the TIM Break Input pin polarity. This parameter can be a value of @ref Break_Polarity */ uint16_t TIM_AutomaticOutput; /*!< Specifies whether the TIM Automatic Output feature is enabled or not. This parameter can be a value of @ref TIM_AOE_Bit_Set_Reset */ } TIM_BDTRInitTypeDef; 7) Вызвать для каждого канала TIM_BDTRConfig

Слайд 14





Как их настроить?
8)Вызываем для каждого прямого ШИМ-выхода 
TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx)
9)Вызываем для каждого инверсного ШИМ-выхода 
TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx)
ВАЖНО!
10) Функция разрешения ШИМ-выхода
TIM_CtrlPWMOutputs(TIM1, ENABLE);
11) Запускаем таймер
TIM_Cmd(TIMx, ENABLE);
12) Готово
Описание слайда:
Как их настроить? 8)Вызываем для каждого прямого ШИМ-выхода TIM_CCxCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx) 9)Вызываем для каждого инверсного ШИМ-выхода TIM_CCxNCmd(TIM_TypeDef* TIMx, uint16_t TIM_Channel, uint16_t TIM_CCx) ВАЖНО! 10) Функция разрешения ШИМ-выхода TIM_CtrlPWMOutputs(TIM1, ENABLE); 11) Запускаем таймер TIM_Cmd(TIMx, ENABLE); 12) Готово

Слайд 15





Фичи для успеха в лабораторной работе
Настроить таймер в режим Center-align
Настроить 4-й канал таймера на вывод ШИМа с заполнением PWM_PERIOD-1
Настроить триггер запуска преобразования АЦП на переполнение 4-го канала
Описание слайда:
Фичи для успеха в лабораторной работе Настроить таймер в режим Center-align Настроить 4-й канал таймера на вывод ШИМа с заполнением PWM_PERIOD-1 Настроить триггер запуска преобразования АЦП на переполнение 4-го канала

Слайд 16


Продвинутые таймеры на STM32F1xx, слайд №16
Описание слайда:



Похожие презентации
Mypresentation.ru
Загрузить презентацию