Ik probeer over te schakelen naar de ST HAL-bibliotheken, maar het lukt me niet om de PWM aan het werk te krijgen. Compileert prima, start gewoon niet.
In mijn main () noem ik de timer-initialisatiefunctie:
/ * TIM3 init-functie * / void MX_TIM3_Init (void) {TIM_MasterConfigTypeDef sMasterConfig; TIM_OC_InitTypeDef sConfigOC; htim3.Instance = TIM3; htim3.Init.Prescaler = 0; htim3.Init.CounterMode = TIM_COUNTERMODE_UP; htim3.Init.Period = 1300; htim3.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1; HAL_TIM_PWM_Init (&htim3); sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET; sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE; HAL_TIMEx_MasterConfigSynchronisatie (&htim3, &sMasterConfig); sConfigOC.OCMode = TIM_OCMODE_PWM1; sConfigOC.OCIdleState = TIM_OCIDLESTATE_SET; sConfigOC.Pulse = 650; sConfigOC.OCPolarity = TIM_OCPOLARITY_HIGH; sConfigOC.OCFastMode = TIM_OCFAST_ENABLE; HAL_TIM_PWM_ConfigChannel (&htim3, &sConfigOC, TIM_CHANNEL_1); HAL_TIM_PWM_ConfigChannel (&htim3, &sConfigOC, TIM_CHANNEL_2); HAL_TIM_PWM_ConfigChannel (&htim3, &sConfigOC, TIM_CHANNEL_3); HAL_TIM_PWM_ConfigChannel (&htim3, &sConfigOC, TIM_CHANNEL_4); HAL_TIM_PWM_MspInit (&htim3);}
De GPIO wordt geïnitialiseerd in de HAL_TIM_PWM_MspInit ()
functie:
void HAL_TIM_PWM_Mspandleit (TIM_TIM_PWM_Mspandleit (TIM_TIM_PWM_Mspandleit) htim_pwm) {GPIO_InitTypeDef GPIO_InitStruct; if (htim_pwm->Instance == TIM3) {/ * Perifere klok inschakelen * / __TIM3_CLK_ENABLE (); / ** TIM3 GPIO-configuratie PC9 ------ > TIM3_CH4 PC8 ------ > TIM3_CH3 PC7 ------ > TIM3_CH2 PC6 ------ > TIM3_CH1 * / GPIO_InitStruct.Pin = GPIO_PIN_9 | GPIO_PIN_8 | GPIO_PIN_7 | GPIO_PIN_6; GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_InitStruct.Alternate = GPIO_AF2_TIM3; HAL_GPIO_Init (GPIOC, &GPIO_InitStruct); }
}
eindelijk ziet mijn main () er als volgt uit: (ik roep SystemInit () aan vanuit main omdat ik door STCube gegenereerde bestanden gebruik met coocox coide )
int main (void) {SystemInit (); / * Reset van alle randapparatuur, initialiseert de Flash-interface en de Systick. * / HAL_Init (); / * Configureer de systeemklok * / SystemClock_Config (); / * Initialiseer alle geconfigureerde randapparatuur * / MX_TIM3_Init (); MX_GPIO_Init (); MX_LWIP_Init (); while (1) {}}