void TIM3_PWM_Init(void)
{
GPIO_Set(GPIOB,PIN5,GPIO_MODE_AF,GPIO_OTYPE_PP,GPIO_SPEED_100M,GPIO_PUPD_PU);
GPIO_AF_Set(GPIOB,5,2); //PB5 AF2 TIM3_CH2
TIM3->ARR=10;
TIM3->CCR2=1;
TIM3->CR2 |= 5<<4; //TRGO OC2REF
TIM3->SMCR |= 1<<7; //slave mode
TIM3->SMCR |= 1<<4; //TIM2 trigger
TIM3->SMCR |= 7<<0; //TIM2 TRGO Rising edge count+
TIM3->CCMR1|= 3<<12; //CNT==CCR2, OC2 output evert
TIM3->CCER |= 1<<4; //enable OC2
TIM3->CCER |= 0<<5; //OC2 polarity high Level effective
TIM3->DIER |= 1<<2; //enable compare2 interrupt
MY_NVIC_Init(1,3,TIM3_IRQn ,2);
TIM3->CR1 |= 1<<0;
}
void TIM3_IRQHandler(void)
{
if(TIM3->CCR2==1)
{
TIM3->CCR2=8;
}
else
{
TIM3->CCR2=1;
}
TIM3->SR &= ~(1<<2); //clear Compare 2 interrupt flag
}
CLK由TIM2產生的
原本想產生第一個CLK上升 第8個CLK下降的PWM
結果連週期都錯的....應該是10個CLK 結果變20個 duty也錯的
是不是TIMx_CCMR1 OC1M:输出比较 1 模式 (Output compare 1 mode) 011:翻转––TIMx_CNT=TIMx_CCR1 时,OC1REF 发生翻转。
不能這樣玩阿...想說在中斷修改CCR讓它在別的地方翻轉就好....
有沒有大俠知道為啥~~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
{
PCout(7)=~PCout(7);
TIM2->SR = ~(1<<3); //clear CC3I
}
這樣寫就正常...好奇怪阿~~~~~
一周热门 更多>