平台:stm32+keil5
功能:用TIMER3的OCToggle模式产生占空比非50%的方波OCToggle模式可以产生多路频率不同的方波,而PWM只能产生多路频率相同的方波。
代码如下:
因为使用了中断,所以代码有2部分:第一部分是功能配置,第二部分是中断处理:
__IO uint16_t CCR1_Val = 32768;
__IO uint16_t CCR2_Val = 16384;
__IO uint16_t CCR3_Val = 8192;
__IO uint16_t CCR4_Val = 4096;
uint16_t PrescalerValue = 0;
/**
* disable CHX output
*
*/
void DisableChxOutput(uint8_t CHX)
{
switch(CHX)
{
case 1:
{
/* Disable the Channel 1: Reset the CC1E Bit */
TIM3->CCER &= (uint16_t)(~(uint16_t)TIM_CCER_CC1E);
TIM_ITConfig(TIM3, TIM_IT_CC1 , DISABLE);
}
break;
case 2:
{
/* Disable the Channel 2: Reset the CC2E Bit */
TIM3->CCER &= (uint16_t)(~(uint16_t)TIM_CCER_CC2E);
TIM_ITConfig(TIM3, TIM_IT_CC2 , DISABLE);
}
break;
case 3:
{
TIM3->CCER &= (uint16_t)(~(uint16_t)TIM_CCER_CC3E);
TIM_ITConfig(TIM3, TIM_IT_CC3 , DISABLE);
}
break;
case 4:
{
TIM3->CCER &= (uint16_t)(~(uint16_t)TIM_CCER_CC4E);
TIM_ITConfig(TIM3, TIM_IT_CC4 , DISABLE);
}
break;
default:
break;
}
}
void TIMER3_PWM_GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* GP