PWM输出800Hz波形

2019-08-14 18:11发布

用STM32F103C8T6,要利用 TIM3 的 CH2 输出 PWM,把 TIM3_CH2映射到 PB5 上,现在想输出800Hz波形,怎么改
试了一下输出8000Hz正常:TIM3_PWM_Init(8999,0);         //72000/9000=8Khz
想输出800Hz,求助!谢谢!


void TIM3_PWM_Init(u16 arr,u16 psc)
{  
        GPIO_InitTypeDef GPIO_InitStructure;
        TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
        TIM_OCInitTypeDef  TIM_OCInitStructure;
       
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);        //
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB  | RCC_APB2Periph_AFIO, ENABLE);  //
        GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE); //TIM3_CH2->PB5   

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //TIM_CH2
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;  //
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOB, &GPIO_InitStructure);//

   //TIM3
        TIM_TimeBaseStructure.TIM_Period = arr; //
        TIM_TimeBaseStructure.TIM_Prescaler =psc; //
        TIM_TimeBaseStructure.TIM_ClockDivision = 0; //
        TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //
        TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); //
         
        TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM2; //
        TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; //
        TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; //
        TIM_OC2Init(TIM3, &TIM_OCInitStructure);  //

        TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable);  
        TIM_Cmd(TIM3, ENABLE);  
}



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
ziyan0005
1楼-- · 2019-08-14 18:24
 精彩回答 2  元偷偷看……
ziyan0005
2楼-- · 2019-08-14 22:09
TIM3_PWM_Init(10000,9);输出是720.006Hz
ziyan0005
3楼-- · 2019-08-14 22:19
TIM3_PWM_Init(2500,36);输出是778.152Hz
电子之旅
4楼-- · 2019-08-14 23:24
按照图片公式计算
gao1neng
5楼-- · 2019-08-15 04:27
8khz 的10分频不就是800HZ
tao23
6楼-- · 2019-08-15 05:52
 精彩回答 2  元偷偷看……

一周热门 更多>