本帖最后由 spring 于 2015-3-21 17:14 编辑
if(X<0)
{
short t = 160;
TIM1->CCR4 = 0;
TIM1->CCR2 = -X;
GPIOA->ODR &= ~GPIO_Pin_8;
while(t--);
GPIOA->ODR |= GPIO_Pin_10;
}
else
{
short t = 160;
TIM1->CCR2 = 0;
TIM1->CCR4 = X;
GPIOA->ODR &= ~GPIO_Pin_10;
while(t--);
GPIOA->ODR |= GPIO_Pin_8;
}
这样写可以吗太浪费时间片了
不能刷新充电电容,能一直保持高电平吗?
有更好的方法吗?
if(X<0)
{
TIM1->CCR1 = 0;
TIM1->CCR4 = 0;
TIM1->CCR2 = -X;
TIM1->CCR3 = -X;
}
else
{
TIM1->CCR1 = X;
TIM1->CCR4 = X;
TIM1->CCR2 = 0;
TIM1->CCR3 = 0;
}令一种方法不怕炸的可以试一下
#define SETCOMPARE(X) (X < 0)? (TIM1->CCR1 = 0, TIM1->CCR4 = 0, TIM1->CCR2 = -X, TIM1->CCR3 = -X):\
(TIM1->CCR1 = X, TIM1->CCR4 = X, TIM1->CCR2 = 0, TIM1->CCR3 = 0)
|