Timer based PWM output for MAX32630FTHR platform
This library provides PWM output using the MAX32630 32-bit timers.
The mbed PwmOut API implementation uses the MAX32630 Pulse Train peripherals.
The table below contains the available GPIO pins that can be connected to the six 32-bit timers (TMR0-5). Timer 0 is used for the microsecond ticker API and is not available for PWM output. Timer 5 is used by the BLE API and will not be available for PWM output if the BLE API is used.
Timer | GPIO Port and Pin |
TMR1 | P3_1, P5_3 |
TMR2 | P2_4, P3_2, P4_0, P5_4 |
TMR3 | P2_5, P3_3, P5_5 |
TMR4 | P2_6, P3_4, P5_0, P5_6 |
TMR5 | P3_5, P5_1 |
Note GPIO P2_4, P2_5 and P2_6 are connected to onboard LEDs 1, 2 and 3.
Diff: MAX32630FTHR_PwmOut.h
- Revision:
- 3:717258c64304
- Parent:
- 2:77d9bb2fa44e
- Child:
- 4:bd1c27ca31e8
--- a/MAX32630FTHR_PwmOut.h Fri Apr 20 17:40:46 2018 +0000 +++ b/MAX32630FTHR_PwmOut.h Fri Apr 20 22:36:02 2018 +0000 @@ -38,32 +38,36 @@ * not be available for PWM output if the BLE API is used. * * Timer | GPIO Port and Pin<br> - * TMR1 | P3_1, P5_3<br> - * TMR2 | P3_2, P4_0, P5_4<br> - * TMR3 | P3_3, P5_5<br> - * TMR4 | P3_4, P5_0, P5_6<br> - * TMR5 | P3_5, P5_1<br> + * TMR1 | P3_1, P5_3<br> + * TMR2 | P2_4, P3_2, P4_0, P5_4<br> + * TMR3 | P2_5, P3_3, P5_5<br> + * TMR4 | P2_6, P3_4, P5_0, P5_6<br> + * TMR5 | P3_5, P5_1<br> + * + * Note GPIO P2_4, P2_5 and P2_6 are connected to onboard LEDs 1, 2 and 3. * * @code * #include "mbed.h" * #include "MAX32630FTHR_PwmOut.h" - * - * DigitalOut led(LED1, LED_OFF); - * MAX32630FTHR_PwmOut servo(P3_4); - * + * + * MAX32630FTHR_PwmOut led[] = { + * MAX32630FTHR_PwmOut(LED1), + * MAX32630FTHR_PwmOut(LED2), + * MAX32630FTHR_PwmOut(LED3) + * }; + * * int main() * { + * float dc; + * unsigned int idx = 0; + * * while (1) { - * led = !led; - * for (float pw = 0.000f; pw <= 1.000f; pw += 0.001f) { - * servo.write(pw); - * wait_ms(100); + * for (dc = 0.0f; dc <= 1.0f; dc += 0.01f) { + * led[idx % 3].write(dc); + * led[(idx + 1) % 3].write(1.0f - dc); + * wait_ms(20); * } - * led = !led; - * for (float pw = 1.000f; pw >= 0.000f; pw -= 0.001f) { - * servo = pw; - * wait_ms(100); - * } + * idx++; * } * } * @endcode