wdshuang09 发表于 2016-10-17 23:25:20

STM32F103C8 TIM4 PWM CH4输不出PWM

用STM32F103C8写了一个 TIM4 PWM输出 输出通道为CH4,但不出PWM,不知寄存器哪里设置不对,求高手指点,


系统时钟为72MHz
TIM4_PWMOut_Init(999,71);
void TIM4_PWMOut_Init(u16 arr,u16 psc)
{
      RCC->APB1ENR|=1<<2;      //TIM4时钟使能
      RCC->APB2ENR|=1<<3;//使能B端口时钟
      TIM4->PSC=psc;          //72000000/72=1Mh
      TIM4->ARR=arr;          //1000000/1000=1000PWM频率为1K
      TIM4->CCR4=500;
      
      TIM4->CCMR2|=(6<<12);//PWM模式样
      TIM4->CCMR2|=(1<<11);//开启预装载功能
      TIM4->CCER|=(1<<12);//CH4 开启输出对应管脚
      TIM4->CCER|=0<<13;//高电平有效
      
      TIM4->CR1|=0<<4;//向上计数
      TIM4->CR1|=(1<<7);//自动重装允许
      TIM4->SR=0X00;
      TIM4->DIER|=1<<0;//允许更新
      TIM4->DIER|=1<<4;//允许CH4中断
      TIM4->EGR|=1<<4;
      TIM4->CR1|=0x01;    //使能计数器
      MY_NVIC_Init(1,3,TIM4_IRQn,2);//中断      

}

void TIM4_IRQHandler(void)
{                                                                  
      
      if(TIM4->SR&0X0010)
      {
                TIM4->SR&=~(1<<4);
      }      
      
}


wdshuang09 发表于 2016-10-23 08:14:37

anywill 发表于 2016-10-20 11:05
TIM4有一个MOE位,控制了TIM4的输出

问题找到了,是GPIO输出模式没有配对,要配成复用功能输出,之前配成通用输出功能,PWM就出不来;所以不是GPIO映射问题,手册缺省是TIM4 CH4输出,如果需要映射的话,手册会写在RAMAP那一栏在;可以结贴了,谢谢各位网友的帮助,

wdshuang09 发表于 2016-10-18 20:25:19

没有人回贴呀:'(

z258121131 发表于 2016-10-20 08:44:45

TIM4使能了吗?

liu553824989 发表于 2016-10-20 08:57:10

打开tim4时钟,配置time4 pwm配置,配置好tim4 映射的GPIO初始化,打开计数器,开总中断。

看你好像没有配置映射gpio引脚,如果还不行用库的试试,寄存器的要一个一个试,有点麻烦。

胤幻1988 发表于 2016-10-20 09:14:31

输出PWM的GPIO管脚及其时钟未配置。

无薪税绵 发表于 2016-10-20 09:51:39

STM32F103C8,没有TIM4吧。

annysky 发表于 2016-10-20 09:53:45

首先要配置PWM时钟,PWM是复用管脚,这个也得配置.

anywill 发表于 2016-10-20 11:05:55

TIM4有一个MOE位,控制了TIM4的输出

benlarden 发表于 2016-10-20 12:20:25

帮顶!@~~

johnson_gong 发表于 2016-10-20 17:24:15

用习惯了库,再看寄存器操作,反应慢呀
页: [1] 2 3
查看完整版本: STM32F103C8 TIM4 PWM CH4输不出PWM