@.CHARSET =CP1251
@GNU AS

@ +------------------------------------------------------------------+
@ |                    Демонстрационная программа                    |
@ |  Автоматические управление скважностью PWM таймера при помощи    |
@ |  DMA с частотой изменения скважности заданной в другом таймере   |
@ +------------------------------------------------------------------+
@ |  микроконтроллер STM32F4xxx    отладочная плата  MiniSTM32F401   |
@ +------------------------------------------------------------------+
@ | Подключения: GPIO A6 - светодиод через резистор 1 ком на GND     |
@ |                                                                  |
@ | ОПИСАНИЕ РАБОТЫ:                                                 |
@ |                                                                  |
@ | На канале сравнения 1 (CCR1Ref) таймера 3 (TIM3) настраивается   |
@ | PWM генератор с частотой 1000 кгц, с разрешением 100             |
@ |                                                                  |
@ | При  этом  значение  в  регистр  TIM3_CCR1,  который определяет  |
@ | скважность (длину) импульса, записывается при помощи DMA 1       |
@ |                                                                  |
@ | блок DMA 1 настроен на передачу значений скважности из памяти.   |
@ | Массив расположен по метке VALUES и содержит 20 значений         |
@ | блок  DMA 1  осуществляет  пересылку 32 бит данных из массива в  |
@ | регистр TIM3_CCR1 по событию переполнения Таймера 4 (TIM3_UDE)   |
@ | при адрес памяти увеличивается чтения значения для перехода к    |
@ | следующему значению                                              |
@ |                                                                  |
@ | Таймер 4 настроен на генерацию запросов к DMA с частотой 10 раз  |
@ | в секунду и при помощи DMA обновить значение TIM3_CCR1 изменив   |
@ | скважность                                                       |
@ |                                                                  |
@ +------------------------------------------------------------------+

.SYNTAX   unified             @ синтаксис исходного кода
.THUMB                        @ тип используемых инструкций Thumb
.CPU      cortex-m4           @ процессор


.SECTION  .asmcode

@ основная программа
.GLOBAL   Start
Start:
                   @ настройка  тактирования
                    BL         SYSCLK84_START    @ запуск тактирования на 84 мгц

.INCLUDE   "/src/periph/rcc/rcc_ahb1enr_gpio_set.inc"
.INCLUDE   "/src/periph/gpio/gpio_a_conf.inc"

                    BL         TIM3_INIT      @ PWM генератор

                    BL         DMA_INIT       @ управление скважностью PWM

                    BL         TIM4_INIT      @ периодичность изменения скважности

MAIN_LOOP:
                    B          MAIN_LOOP



