No ACL setup yet! Denying access to everyone.
en:edu:zmitac:s2:aih:lab:stm32fan
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:edu:zmitac:s2:aih:lab:stm32fan [2024/01/13 19:33] – ktokarz | en:edu:zmitac:s2:aih:lab:stm32fan [2024/01/16 09:37] (current) – ktokarz | ||
|---|---|---|---|
| Line 8: | Line 8: | ||
| </ | </ | ||
| In the stm32duino examples ((https:// | In the stm32duino examples ((https:// | ||
| - | The code is composed | + | At the beginning of the code, we need to define pins. |
| + | <code c> | ||
| + | // PWM timer 2 for Servo and Fan control | ||
| + | #define SERVO_PWM_PIN PA0 | ||
| + | #define FAN_PWM_PIN PA1 | ||
| + | </ | ||
| + | < | ||
| + | Pin names use STM naming, not Arduino naming. | ||
| + | </ | ||
| + | Both outputs are controlled with the same timer, so only one instance of the timer is needed. It will control two channels one for fan, one for servo. | ||
| + | <code c> | ||
| + | // PWM variables definitions | ||
| + | TIM_TypeDef *SRVInstance; | ||
| + | uint32_t channelSRV, channelFAN; //2 channels | ||
| + | HardwareTimer *MyTimServo; | ||
| + | </ | ||
| + | At the beginning | ||
| + | < | ||
| + | The frequency used must fulfil | ||
| + | </ | ||
| + | <code c> | ||
| + | //Create Timer instance type based on the servo pin (the same timer is used for fan). | ||
| + | TIM_TypeDef | ||
| + | //Define two separate channels for servo and fan | ||
| + | channelSRV = STM_PIN_CHANNEL(pinmap_function(digitalPinToPinName(SERVO_PWM_PIN), | ||
| + | channelFAN = STM_PIN_CHANNEL(pinmap_function(digitalPinToPinName(FAN_PWM_PIN), | ||
| + | // Instantiate HardwareTimer object. Thanks to ' | ||
| + | MyTimServo = new HardwareTimer(SRVInstance); | ||
| + | // Configure and start PWM | ||
| + | MyTimServo-> | ||
| + | MyTimServo-> | ||
| + | </ | ||
| + | To modify the duty cycle it is possible to use the function setCaptureCompare() which has the possibility of passing the argument as the value of microseconds or percents. The following lines show examples of setting that fan speed in percents (provided by FanSpeed variable), and servo range in duty cycle time (provided by SrvTime variable). | ||
| + | <code c> | ||
| + | MyTimServo-> | ||
| + | MyTimServo-> | ||
| + | </ | ||
en/edu/zmitac/s2/aih/lab/stm32fan.1705170833.txt.gz · Last modified: by ktokarz
