Main Content

PWM Output

Generate square waveform on enabled channels using timer module

Since R2021b

Add-On Required: This feature requires the Embedded Coder Support Package for STMicroelectronics STM32 Processors add-on.

  • PWM Output Block

Libraries:
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32F3xx Based Boards
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32F4xx Based Boards
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32F746G-Discovery
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32F769I-Discovery
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32F7xx Based Boards
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32G4xx Based Boards
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32H7xx Based Boards (Dual-core)
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32H7xx Based Boards (Single-core)
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32L475VG-Discovery (B-L475E-IOT01A)
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32L4xx Based Boards
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32L5xx Based Boards
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32U5xx Based Boards
Embedded Coder Support Package for STMicroelectronics STM32 Processors / STM32WBxx Based Boards
Simulink Coder Support Package for STMicroelectronics Nucleo Boards / Common

Description

Use the PWM Output block to generate a square waveform on the enabled channels using the timer module.

The block input controls the duty cycle of the square waveform for each channel.

If you set Duty Cycle unit parameter to Percentage, an input value of 0 produces a 0 percent duty cycle and an input of 100 produces an output with 100 percent duty cycle on the corresponding channel. If you set the Duty Cycle unit parameter to Counts, the block writes input value to the capture compare register of the corresponding channel.

If you select the Enable frequency input, the block writes the corresponding input to the autoreload register of the timer to set the counter period.

Ports

Input

expand all

The input port considers the duty cycle of the corresponding channel.

If you set the Duty cycle units parameter to Percentage, specify a value range between 0 to 100. If you set the duty cycle unit to Counts, specify a value range for 32 bit timers between 0 to 0xFFFFFFFF and for 16 bit timers between 0 to 0xFFFF.

Dependencies

To enable this port, select the Enable channel parameter.

Data Types: Boolean | uint16 | uint32 | int8 | uint8 | int16 | int32 | uint64 | int64 | single | double

Use this port to enable input port counter. Set the port to one of these values.

  • 0 - Disable counter

  • 1 - Enable counter

Dependencies

To enable this port, select the Enable input to enable/disable timer parameter.

Data Types: Boolean | uint16 | uint32 | int8 | uint8 | int16 | int32 | uint64 | int64 | single | double

This main output enable (MOE) bit is cleared asynchronously by the hardware as soon as the break input is active.

If input is 1, then the MOE bit is set as 1.

Dependencies

To enable this port, select the Enable main output enable (MOE) input parameter.

Data Types: Boolean | uint16 | uint32 | int8 | uint8 | int16 | int32 | uint64 | int64 | single | double

The input at this port determines the frequency of the counter. This value is written directly to the auto reload register.

The frequency count for 32 bit timers is between 0 to 0xFFFFFFFF and for 16 bit timers is between 0 to 0xFFFF.

Dependencies

To enable this port, select the Enable frequency input parameter.

Data Types: Boolean | uint16 | uint32 | int8 | uint8 | int16 | int32 | uint64 | int64 | single | double

Use this port to generate an update event. When you specify a value of 1, the port generates an update event.

Dependencies

To enable this port, select the Enable update generation event input parameter.

Data Types: Boolean | uint16 | uint32 | int8 | uint8 | int16 | int32 | uint64 | int64 | single | double

Use this port to generate capture compare generation event. When you specify a value of 1, the port generates an capture compare event.

Dependencies

To enable this port, select the Enable capture compare # generation event input parameter.

Data Types: Boolean | uint16 | uint32 | int8 | uint8 | int16 | int32 | uint64 | int64 | single | double

Use this port to generate trigger event. When you specify a value of 1, the port generates an trigger event.

Dependencies

To enable this port, select the Enable trigger generation event input parameter.

Data Types: Boolean | uint16 | uint32 | int8 | uint8 | int16 | int32 | uint64 | int64 | single | double

Use this port to generate break generation event. When you specify a value of 1, the port generates an break generation event.

Dependencies

To enable this port, select the Enable break generation event input parameter.

Data Types: Boolean | uint16 | uint32 | int8 | uint8 | int16 | int32 | uint64 | int64 | single | double

Use this port to generate break 2 generation event. When you specify a value of 1, the port generates an break 2 generation event and MOE status is cleared.

Dependencies

To enable this port, select the Enable break generation 2 event input parameter.

Data Types: Boolean | uint16 | uint32 | int8 | uint8 | int16 | int32 | uint64 | int64 | single | double

Output

expand all

The block outputs the current direction of the counter as one of the following:

  • 0 - Up counter

  • 1 - Down counter

Dependencies

To enable this port, select the Enable timer counter direction output parameter.

Data Types: Boolean

Status of the main output enable (MOE) bit.

Dependencies

To enable this port, select the Enable main output enable (MOE) status output parameter.

Data Types: Boolean

The simulation-only message output port, when connected to an PWM Interface (SoC Blockset) block, acts as pass-through with the output emitted on the output of the PWM Interface block during simulation.

Note

  • The PWM Interface (SoC Blockset) does not use the frequency input of this block and must be set manually in the PWM Interface block mask.

  • For STM32F7xx, STM32H7xx, and STM32G4xx based boards, channel 5 and channel 6 are not supported for simulation. However, code generation is supported for all channels.

Dependencies

To enable this port, select the Enable simulation port parameter.

Data Types: SoCData

Parameters

expand all

Main

Select the timer module. Number of timer module available will vary for different processors.

Note

Ensure that Timer module is also configured in the STM32CubeMX project.

The block input controls the duty cycle of the square waveform for each channel.

If Duty Cycle unit is Percentage, an input value of 0 produces a 0 percent duty cycle and an input of 100 produces a 100 percent duty cycle output on the corresponding channel. If Duty Cycle unit is Counts, the input value is written to the Capture Compare register of the corresponding channel.

Enable the channels on which you want the block to generate the PWM output. The input considers the duty cycle of the corresponding channels.

Each Timer module can have one to six channels. Number of channels available vary based on the timer module selected. Enable the channel supported for the corresponding timer. By default, the block enables channel 1.

Note

Ensure that the channels you want to enable are configured for PWM generation in the STM32CubeMX project.

Dependencies

The number of channels available depends on the module you select in the Timer module parameter.

Enable or disable the counter through the input port. If you do not select this parameter, then the counter is enabled during model initialization.

Enable this parameter to set the main output enable (MOE) bit to recover from a break.

Dependencies

To enable this parameter, set the Timer module parameter to either TIM1 or TIM8.

Enable this parameter to set the frequency of the timer. All the channel outputs have the same frequency.

For odd values in the repetition counter, the update event occurs on underflow or overflow depending on when you set the repetition counter.

By default, the block sets repetition counter before you enable the timer counter, so an update event occurs on underflow.

If you enable this parameter, the block sets repetition counter after you enable the time counter, so an update events occur on overflow.

Dependencies

To enable this parameter, set the Timer module parameter to either TIM1 or TIM8.

Enable this parameter to output the current direction of the counter.

Enable this parameter to output the main output enable (MOE) bit status.

Dependencies

To enable this parameter, set the Timer module parameter to either TIM1 or TIM8.

Select this parameter to add an SoC Blockset compatible simulation output port.

Events

Enable this parameter to generate an update event through input port.

Enable this parameter to generate a capture compare event through the input port.

Dependencies

The number of Enable capture compare # generation event input parameters available depends on the module you select in the Timer module.

Enable this parameter to generate a trigger event through the input port.

Enable this parameter to generate a break event through the input port.

Dependencies

To enable this parameter, set the Timer module parameter to either TIM1, TIM8, TIM15, TIM16, TIM17 or TIM20.

Enable this parameter to generate a break 2 event through the input port.

Dependencies

To enable this parameter, set the Timer module parameter to either TIM1, TIM8 or TIM20.

Specify how often (in seconds) the status of enabled output ports are read if no input ports are selected. Enter a value greater than zero. When you specify this parameter as -1, Simulink determines the best sample time for the block based on the block context within the model.

Dependencies

To enable the Sample time parameter, deselect all the input ports.

Extended Capabilities

C/C++ Code Generation
Generate C and C++ code using Simulink® Coder™.

Version History

Introduced in R2021b