123 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			5.9 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| /**
 | |
|   @page TIM_6Steps TIM 6 Steps example
 | |
|   
 | |
|   @verbatim
 | |
|   ******************** (C) COPYRIGHT 2016 STMicroelectronics *******************
 | |
|   * @file    Examples_MIX/TIM/TIM_6Steps/readme.txt 
 | |
|   * @author  MCD Application Team
 | |
|   * @brief   Description of the TIM 6 Steps 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 
 | |
| 
 | |
| Configuration of the TIM1 peripheral to generate six-step PWM signals. 
 | |
| The STM32F1xx TIM1 peripheral allows programming in advance the configuration 
 | |
| for the next TIM1 output behavior (or step) and changing simultaneously the configuration of all the 
 | |
| channels. This operation is possible when the COM (commutation) event is used. 
 | |
| This example is based on the STM32F1xx TIM HAL and LL API. The LL API is used for performance improvement.
 | |
| 
 | |
| The COM event can be generated by software by setting the COM bit in the TIM1_EGR
 | |
| register or by hardware (on TRC rising edge).
 | |
| In this example, a software COM event is generated each 1 ms: using the SysTick 
 | |
| interrupt.
 | |
| 
 | |
| The TIM1 is configured in Timing Mode, each time a COM event occurs, a new TIM1
 | |
| configuration will be set in advance. Only changed states are programmed. 
 | |
| 
 | |
| The break Polarity is used at High level.
 | |
| 
 | |
| The following Table describes the TIM1 Channels states:
 | |
| 
 | |
| @verbatim
 | |
|                      -----------------------------------------------
 | |
|                     | Step1 | Step2 | Step3 | Step4 | Step5 | Step6 |
 | |
|           ----------------------------------------------------------
 | |
|          |Channel1  | 1(PWM)|   0   |   0   |   0   |   0   |1(PWM) |
 | |
|           ----------------------------------------------------------
 | |
|          |Channel1N |   0   |   0   |1(PWM) |1(PWM) |   0   |   0   |
 | |
|           ----------------------------------------------------------
 | |
|          |Channel2  |   0   |   0   |   0   |1(PWM) |1(PWM) |   0   |
 | |
|           ----------------------------------------------------------
 | |
|          |Channel2N |1(PWM) |1(PWM) |   0   |   0   |   0   |   0   |
 | |
|           ----------------------------------------------------------
 | |
|          |Channel3  |   0   |1(PWM) |1(PWM) |   0   |   0   |   0   |
 | |
|           ----------------------------------------------------------
 | |
|          |Channel3N |   0   |   0   |   0   |   0   |1(PWM) |1(PWM) |
 | |
|           -----------------------------------------------------------
 | |
|  
 | |
| 
 | |
|  
 | |
|                      . Step1 . Step2 . Step3 . Step4 . Step 5 . Step 6 . Step1 . Step2 . Step 3 . Step 4 . Step5 ... 
 | |
| 
 | |
|  Channel1  (PA.08)   |||||||||_________________________________|||||||||||||||||____________________________________
 | |
|  Channel1N (PB.13)   ________________|||||||||||||||||__________________________________||||||||||||||||||__________
 | |
|                                                     
 | |
|  Channel2  (PA.09)   ________________________||||||||||||||||||_________________________________|||||||||||||||||___
 | |
|  Channel2N (PB.14)   |||||||||||||||||_________________________________|||||||||||||||||____________________________    
 | |
|                                                     
 | |
|  Channel3  (PA.10)   ________|||||||||||||||||__________________________________||||||||||||||||||___________________
 | |
|  Channel3N (PB.15)   _________________________________||||||||||||||||||__________________________________|||||||||||
 | |
|    
 | |
| @endverbatim
 | |
| 
 | |
| @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)
 | |
|       than the peripheral interrupt. Otherwise the caller ISR process will be blocked.
 | |
|       To change the SysTick interrupt priority you have to use HAL_NVIC_SetPriority() function.
 | |
| 
 | |
| @note The application needs to ensure that the SysTick time base is always set to 1 millisecond
 | |
|       to have correct HAL operation.
 | |
| 
 | |
| @par Directory contents 
 | |
| 
 | |
|   - Examples_MIX/TIM/TIM_6Steps/Inc/stm32f1xx_hal_conf.h    HAL configuration file
 | |
|   - Examples_MIX/TIM/TIM_6Steps/Inc/stm32f1xx_it.h          Interrupt handlers header file
 | |
|   - Examples_MIX/TIM/TIM_6Steps/Inc/main.h                  Header for main.c module  
 | |
|   - Examples_MIX/TIM/TIM_6Steps/Src/stm32f1xx_it.c          Interrupt handlers
 | |
|   - Examples_MIX/TIM/TIM_6Steps/Src/main.c                  Main program
 | |
|   - Examples_MIX/TIM/TIM_6Steps/Src/system_stm32f1xx.c      STM32F1xx system source file
 | |
|   - Examples_MIX/TIM/TIM_6Steps/Src/stm32f1xx_hal_msp.c     HAL MSP file    
 | |
| 
 | |
| 
 | |
| @par Hardware and Software environment
 | |
| 
 | |
|   - This example runs on STM32F103xB devices.
 | |
|     
 | |
|   - This example has been tested with STM32F103RB-Nucleo board and can be
 | |
|     easily tailored to any other supported device and development board.    
 | |
| 
 | |
|   - STM32F103RB-Nucleo Set-up
 | |
|     - Connect the TIM1 pins to an oscilloscope to monitor the different waveforms:
 | |
|       - TIM1_CH1  PA.08: connected to pin 8 of CN9 connector  
 | |
|       - TIM1_CH1N PB.13: connected to pin 30 of CN10 connector 
 | |
|       - TIM1_CH2  PA.09: connected to pin 1 of CN5 connector 
 | |
|       - TIM1_CH2N PB.14: connected to pin 28 of CN10 connector 
 | |
|       - TIM1_CH3  PA.10: connected to pin 3 of CN9 connector 
 | |
|       - TIM1_CH3N PB.15: connected to pin 26 of CN10 connector 
 | |
| 
 | |
|     - Connect the TIM1 break to the GND. To generate a break event, switch this
 | |
|       pin level from 0V to 3.3V.  
 | |
|       - TIM1_BKIN  PB.12: connected to pin 16 of CN10 connector 
 | |
| 
 | |
| @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
 | |
| 
 | |
| 
 | |
|  */
 |