My code is the follow:
Code: Select all
#include "ch.h"
#include "hal.h"
static uint32_t DUTY=5000;
static PWMConfig pwmcfg = {
1000000, /* 100kHz PWM clock frequency. */
1000, /* Initial PWM period 1S. (Numero colpi di clock di un periodo */
NULL,
{
{PWM_OUTPUT_ACTIVE_HIGH, NULL},
{PWM_OUTPUT_ACTIVE_HIGH, NULL},
{PWM_OUTPUT_ACTIVE_HIGH, NULL},
{PWM_OUTPUT_DISABLED, NULL}
},
};
static PWMConfig pwmcfg_neg = {
1000000, /* 10kHz PWM clock frequency. */
1000, /* Initial PWM period 1S. (Numero colpi di clock di un periodo */
NULL,
{
{PWM_OUTPUT_ACTIVE_LOW, NULL},
{PWM_OUTPUT_ACTIVE_LOW, NULL},
{PWM_OUTPUT_ACTIVE_LOW, NULL},
{PWM_OUTPUT_DISABLED, NULL}
},
};
int main(void) {
/*
* System initializations.
* - HAL initialization, this also initializes the configured device drivers
* and performs the board-specific initializations.
* - Kernel initialization, the main() function becomes a thread and the
* RTOS is active.
*/
halInit();
chSysInit();
pwmStart(&PWMD2,&pwmcfg);
palSetPadMode(GPIOA, 0, PAL_MODE_ALTERNATE(1));
palSetPadMode(GPIOA,1,PAL_MODE_ALTERNATE(1));
palSetPadMode(GPIOA,2,PAL_MODE_ALTERNATE(1));
chThdSleepMilliseconds(100);
pwmStart(&PWMD3,&pwmcfg_neg);
palSetPadMode(GPIOC, 6, PAL_MODE_ALTERNATE(2));
palSetPadMode(GPIOC, 7, PAL_MODE_ALTERNATE(2));
palSetPadMode(GPIOC, 8, PAL_MODE_ALTERNATE(2));
chThdSleepMilliseconds(1000);
pwmEnableChannel(&PWMD2, 0, PWM_PERCENTAGE_TO_WIDTH(&PWMD2, DUTY));
pwmEnableChannel(&PWMD2, 1, PWM_PERCENTAGE_TO_WIDTH(&PWMD2, DUTY));
pwmEnableChannel(&PWMD2, 2, PWM_PERCENTAGE_TO_WIDTH(&PWMD2, DUTY));
pwmEnableChannel(&PWMD3,0, PWM_PERCENTAGE_TO_WIDTH(&PWMD3, DUTY));
pwmEnableChannel(&PWMD3,1, PWM_PERCENTAGE_TO_WIDTH(&PWMD3, DUTY));
pwmEnableChannel(&PWMD3,2, PWM_PERCENTAGE_TO_WIDTH(&PWMD3, DUTY));
chThdSleepMilliseconds(10000);
}
thanks to your availability.