STM32L443RC PWM library
Posted: 01 Feb 2021 13:43
Hi Sir,
I have PWM several issue with STM32L443RC mcu.
TIM1,TIM2,TIM15,TIM16 PWM function works only channel1 for each Timer with this code "
main:
GPIO_Digital_output (@GPIOH_BASE,_GPIO_PINMASK_1 )
delay_ms(100)
PWM_TIM2_Init(6000)
PWM_TIM2_Set_Duty(2000,_PWM_NON_INVERTED,_PWM_CHANNEL1)
PWM_TIM2_Start(_PWM_CHANNEL1,@_GPIO_MODULE_TIM2_PA0)
PWM_TIM1_Init(6000)
PWM_TIM1_Set_Duty(2000,_PWM_NON_INVERTED,_PWM_CHANNEL1)
PWM_TIM1_Start(_PWM_CHANNEL1,@_GPIO_MODULE_TIM1_PA8)
PWM_TIM15_Init(6000)
PWM_TIM15_Set_Duty(2000,_PWM_NON_INVERTED,_PWM_CHANNEL1)
PWM_TIM15_Start(_PWM_CHANNEL1,@_GPIO_MODULE_TIM15_PA2)
PWM_TIM16_Init(6000)
PWM_TIM16_Set_Duty(2000,_PWM_NON_INVERTED,_PWM_CHANNEL1)
PWM_TIM16_Start(_PWM_CHANNEL1,@_GPIO_MODULE_TIM16_PA6)
while 1
GPIOH_ODR.B1 = not GPIOH_ODR.B1
delay_ms(100)
wend
end.
But for other PWM channels I could not get PWM output.
With this code MCU hanging !!
main:
GPIO_Digital_output (@GPIOH_BASE,_GPIO_PINMASK_1 )
delay_ms(100)
PWM_TIM1_Init(6000)
PWM_TIM1_Set_Duty(2000,_PWM_NON_INVERTED,_PWM_CHANNEL2)
PWM_TIM1_Start(_PWM_CHANNEL2,_GPIO_TIM1_CH2_PA9)
while 1
GPIOH_ODR.B1 = not GPIOH_ODR.B1
delay_ms(100)
wend
end.
This code also same result;
main:
GPIO_Digital_output (@GPIOH_BASE,_GPIO_PINMASK_1 )
delay_ms(100)
PWM_TIM2_Init(6000)
PWM_TIM2_Set_Duty(2000,_PWM_NON_INVERTED,_PWM_CHANNEL2)
PWM_TIM2_Start(_PWM_CHANNEL2,_GPIO_TIM2_CH2_PA1)
while 1
GPIOH_ODR.B1 = not GPIOH_ODR.B1
delay_ms(100)
wend
end.
So I mean I can use only channel1 for each timers. Other channels not work.
Do you have some commad for this issue..
I have PWM several issue with STM32L443RC mcu.
TIM1,TIM2,TIM15,TIM16 PWM function works only channel1 for each Timer with this code "
main:
GPIO_Digital_output (@GPIOH_BASE,_GPIO_PINMASK_1 )
delay_ms(100)
PWM_TIM2_Init(6000)
PWM_TIM2_Set_Duty(2000,_PWM_NON_INVERTED,_PWM_CHANNEL1)
PWM_TIM2_Start(_PWM_CHANNEL1,@_GPIO_MODULE_TIM2_PA0)
PWM_TIM1_Init(6000)
PWM_TIM1_Set_Duty(2000,_PWM_NON_INVERTED,_PWM_CHANNEL1)
PWM_TIM1_Start(_PWM_CHANNEL1,@_GPIO_MODULE_TIM1_PA8)
PWM_TIM15_Init(6000)
PWM_TIM15_Set_Duty(2000,_PWM_NON_INVERTED,_PWM_CHANNEL1)
PWM_TIM15_Start(_PWM_CHANNEL1,@_GPIO_MODULE_TIM15_PA2)
PWM_TIM16_Init(6000)
PWM_TIM16_Set_Duty(2000,_PWM_NON_INVERTED,_PWM_CHANNEL1)
PWM_TIM16_Start(_PWM_CHANNEL1,@_GPIO_MODULE_TIM16_PA6)
while 1
GPIOH_ODR.B1 = not GPIOH_ODR.B1
delay_ms(100)
wend
end.
But for other PWM channels I could not get PWM output.
With this code MCU hanging !!
main:
GPIO_Digital_output (@GPIOH_BASE,_GPIO_PINMASK_1 )
delay_ms(100)
PWM_TIM1_Init(6000)
PWM_TIM1_Set_Duty(2000,_PWM_NON_INVERTED,_PWM_CHANNEL2)
PWM_TIM1_Start(_PWM_CHANNEL2,_GPIO_TIM1_CH2_PA9)
while 1
GPIOH_ODR.B1 = not GPIOH_ODR.B1
delay_ms(100)
wend
end.
This code also same result;
main:
GPIO_Digital_output (@GPIOH_BASE,_GPIO_PINMASK_1 )
delay_ms(100)
PWM_TIM2_Init(6000)
PWM_TIM2_Set_Duty(2000,_PWM_NON_INVERTED,_PWM_CHANNEL2)
PWM_TIM2_Start(_PWM_CHANNEL2,_GPIO_TIM2_CH2_PA1)
while 1
GPIOH_ODR.B1 = not GPIOH_ODR.B1
delay_ms(100)
wend
end.
So I mean I can use only channel1 for each timers. Other channels not work.
Do you have some commad for this issue..