luokanx 发表于 2017-9-13 15:41:49

为什么STM32F103程序运行3次才结束?

本帖最后由 luokanx 于 2017-9-13 15:45 编辑

使用MDK编译器,发现每次程序都会运行3次才结束,不知道各位大大有遇到过吗?怎么才能避免这个啊。以前也遇到过,只是一直没怎么在意,今天又出现了。

程序如下:

int main(void)

{
int a;
u16 adcx;
float temp;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOB, ENABLE);
delay_init();
LED_Init();
delay_ms(10);
uart_init(115200);
Motor_Init();
Adc_Init();
   TIM1_Cap_Init(0XFFFF,72-1);
PAout(2)=1;
PAout(7)=0;
PBout(0)=1;
PBout(1)=0;


for(a=0;a<10;a++)
{
   adcx=Get_Adc_Average(ADC_Channel_0,10);
      temp=(float)adcx*(3.3/4096);
   printf("%d:v1=%f \r\n",a,temp);
   
   adcx=Get_Adc_Average(ADC_Channel_1,10);
      temp=(float)adcx*(3.3/4096);
   printf("%d:v1=%f \r\n",a,temp);

   
}

return(0);
}

运行结果:




gujiamao 发表于 2017-9-13 15:49:32

看不出啥问题,要不你在return0之前加个while(1)吧

luokanx 发表于 2017-9-13 15:52:59

gujiamao 发表于 2017-9-13 15:49
看不出啥问题,要不你在return0之前加个while(1)吧

没用啊。。。你没有遇到过?

张亚飞 发表于 2017-9-13 16:01:15

一点一点调试吧,先把for循环去掉,再把循环加大。

发表于 2017-9-13 16:11:00

本帖最后由 安 于 2017-9-13 16:43 编辑

应该是复位导致的,如二楼说的,价格while(1)死循环。注意代码优化,如果光写一个while会优化掉。

luokanx 发表于 2017-9-13 16:39:53

安 发表于 2017-9-13 16:11
应该是复位导致的,如二楼说的,价格while(1)死循环。注意代码优化,如果光写一个while会有花掉。 ...

什么复位造成的哟?

发表于 2017-9-13 16:43:52

程序异常。

luokanx 发表于 2017-9-13 16:45:40

张亚飞 发表于 2017-9-13 16:01
一点一点调试吧,先把for循环去掉,再把循环加大。

还是会运行3次

张亚飞 发表于 2017-9-13 17:02:44

打断点找找。

luokanx 发表于 2017-9-13 17:40:12

gujiamao 发表于 2017-9-13 15:49
看不出啥问题,要不你在return0之前加个while(1)吧

加个while(1)确实可以,重新试了一下。
页: [1] 2
查看完整版本: 为什么STM32F103程序运行3次才结束?