设置了TIM1的CHN1及CHN4输出PWM,代码如下,但是仿真的波形不对,上设备也不正确:
RCC->APB2ENR|=1<<11; //TIM1时钟使能
RCC->APB2ENR|=1<<2; //使能PORTA时钟
GPIOA->CRH&=0XFFFFFFF0;//PA8输出
GPIOA->CRH|=0X0000000B;//通用推挽输出
GPIOA->ODR|=1<<8;//PA8上拉
GPIOA->CRH&=0XFFFF0FFF;//PA11输出
GPIOA->CRH|=0X0000B000;//通用推挽输出
GPIOA->ODR|=1<<11;//PA11上拉
TIM1->ARR=arr;//设定计数器自动重装值
TIM1->PSC=psc;//预分频器不分频
TIM4->ARR=arr;//设定计数器自动重装值
TIM4->PSC=psc;//预分频器不分频
TIM1->CCMR1|=6<<4; //CH1 PWM2模式
TIM1->CCMR1|=1<<3; //CH1预装载使能
TIM1->CCMR2|=7<<12; //CH4 PWM2模式
TIM1->CCMR2|=1<<11; //CH4预装载使能
TIM1->CCER|= pwdState << 0; //OC1 输出使能
TIM1->CCER|= pwdState << 12; //OC1 输出使能
TIM1->CR1=0x8000; //ARPE使能
TIM1->CR1|=0x01; //使能定时器1
查寄存器手册,发现TIM1有一个MOE位,控制了TIM1的输出:MOE: 主输出使能 (Main output enable) 位15 一旦刹车输入有效,该位被硬件异步清’0’。根据AOE位的设置值,该位可以由软件清’0’或被自动置1。它仅对配置为输出的通道有效。 0:禁止OC和OCN输出或强制为空闲状态; 1:如果设置了相应的使能位(TIMx_CCER寄存器的CCxE、CCxNE位),则开启OC和OCN输出。 有关OC/OCN使能的细节,参见13.4.9TIM1和TIM8捕获/比较使能寄存器(TIMx_CCER)。
加上下面这句代码,输出就正常了:
TIM1->BDTR |= 1<<15;
上一篇:STM32 TIM1 做PWM输出问题
下一篇:STM32F103_频率计
推荐阅读最新更新时间:2024-03-16 16:07