有一个电机驱动的程序,一开始写在主函数中达到预期效果。
但是我写成子函数调用的时候实现的效果却不一样,为什么呀??还有变量是在子函数.c文件定义还是在.h文件里定义呀??
这是主函数:
#include "PWM_start.h"
#include "PWM_start_updown.h"
int main(void)
{
delay_init();
NVIC_Configuration();
uart_init(9600);
LED_Init();
TIM3_PWM_Init();
  WM_start_updown();
while(1)
{
}
}
这是子函数:
#include "PWM_start_updown.h"
#include "delay.h"
#include "usart.h"
#include "timer.h"
void PWM_start_updown(void)
{
u16 PWM=17880;
u8 dir=1;
delay_ms(1000);
TIM_SetCompare2(TIM3,19080);
delay_ms(5000);
while(1)
{
if(dir)PWM++;
else PWM--;
if(PWM==19080)dir=0;
if(PWM==17880)dir=1;
TIM_SetCompare2(TIM3,PWM);
}
}
是不是变量定义位置的问题呀?
如果直接写在主函数里面就可以达到效果:
int main(void)
{
u16 PWM=17880;
u8 dir=1;
delay_init();
NVIC_Configuration();
uart_init(9600);
LED_Init();
TIM3_PWM_Init();
delay_ms(1000);
TIM_SetCompare2(TIM3,19080);
delay_ms(5000);
while(1)
{
if(dir)PWM++;
else PWM--;
if(PWM==19080)dir=0;
if(PWM==17880)dir=1;
TIM_SetCompare2(TIM3,PWM);
}
}
为什么呀??求解大神、、
|