mirror of
https://github.com/STMicroelectronics/STM32CubeF7.git
synced 2025-05-03 22:17:13 +08:00
/** @page TIM_DMA TIM DMA example @verbatim ****************************************************************************** * @file TIM/TIM_DMA/readme.txt * @author MCD Application Team * @brief Description of the TIM DMA example. ****************************************************************************** * @attention * * Copyright (c) 2016 STMicroelectronics. * All rights reserved. * * This software is licensed under terms that can be found in the LICENSE file * in the root directory of this software component. * If no LICENSE file comes with this software, it is provided AS-IS. * ****************************************************************************** @endverbatim @par Example Description Use of the DMA with TIMER Update request to transfer data from memory to TIMER Capture Compare Register 3 (TIM2_CCR3). The following configuration values are used in this example: - TIM2CLK = SystemCoreClock - Counter repetion = 3 - Prescaler = 0 - TIM2 counter clock = SystemCoreClock - SystemCoreClock is set to 216 MHz for STM32F7xx The objective is to configure TIM2 channel 3 to generate complementary PWM (Pulse Width Modulation) signal with a frequency equal to 17.57 KHz, and a variable duty cycle that is changed by the DMA after a specific number of Update DMA request. The number of this repetitive requests is defined by the TIM2 Repetition counter, each 4 Update Requests, the TIM2 Channel 3 Duty Cycle changes to the next new value defined by the aCCValue_Buffer. The PWM waveform can be displayed using an oscilloscope. In nominal mode (except at start) , it should looks like this : . . . . . . . . . . . . . . . . . . ___________ _______ ___ ___________ __ _| |___| |_______| |___________| |__| <----57us -----><----57us -----><----57us -----><----57us -----> @note Care must be taken when using HAL_Delay(), this function provides accurate delay (in milliseconds) based on variable incremented in SysTick ISR. This implies that if HAL_Delay() is called from a peripheral ISR process, then the SysTick interrupt must have higher priority (numerically lower) @note The application need to ensure that the SysTick time base is always set to 1 millisecond to have correct HAL operation. @par Keywords Timers, DMA, PWM, Frequency, Duty Cycle, Waveform, Oscilloscope, Output, Signal @Note<74>If the user code size exceeds the DTCM-RAM size or starts from internal cacheable memories (SRAM1 and SRAM2),that is shared between several processors, <20><><A0><A0><A0>then it is highly recommended to enable the CPU cache and maintain its coherence at application level. <0A><><A0><A0><A0><A0>The address and the size of cacheable buffers (shared between CPU and other masters) must be properly updated to be aligned to cache line size (32 bytes). @Note It is recommended to enable the cache and maintain its coherence, but depending on the use case <0A><><A0><A0><A0> It is also possible to configure the MPU as "Write through", to guarantee the write access coherence. <0A><><A0><A0><A0><A0>In that case, the MPU must be configured as Cacheable/Bufferable/Not Shareable. <0A><><A0><A0><A0><A0>Even though the user must manage the cache coherence for read accesses. <0A><><A0><A0><A0><A0>Please refer to the AN4838 <20>Managing memory protection unit (MPU) in STM32 MCUs<55> <0A><><A0><A0><A0><A0>Please refer to the AN4839 <20>Level 1 cache on STM32F7 Series<65> @par Directory contents - TIM/TIM_DMA/Inc/stm32f7xx_hal_conf.h HAL configuration file - TIM/TIM_DMA/Inc/stm32f7xx_it.h Interrupt handlers header file - TIM/TIM_DMA/Inc/main.h Header for main.c module - TIM/TIM_DMA/Src/stm32f7xx_it.c Interrupt handlers - TIM/TIM_DMA/Src/main.c Main program - TIM/TIM_DMA/Src/stm32f7xx_hal_msp.c HAL MSP file - TIM/TIM_DMA/Src/system_stm32f7xx.c STM32F7xx system source file @par Hardware and Software environment - This example runs on STM32F756xx/STM32F746xx devices. - This example has been tested with STMicroelectronics STM327x6G-EVAL revB board and can be easily tailored to any other supported device and development board. - STM327x6G-EVAL revB Set-up - Connect the TIM2 pin to an oscilloscope to monitor the different waveforms: - TIM2 CH3 (PB.10) @par How to use it ? In order to make the program work, you must do the following : - Open your preferred toolchain - Rebuild all files and load your image into target memory - Run the example */