求助跑马灯实验问题

2019-07-21 03:40发布

我在STM32中的主函数中去掉了  while(1){},OBJ文件删除后重新编译了一次,结果LED还是按照之前的正确程序无限循环闪烁,不是只是闪一次呢。下面是正确的


#include "stm32f10x.h"
#include "led.h"
#include "delay.h"
int main(void)
{
  delay_init();
  LED_Init();

while(1){
  GPIO_SetBits(GPIOB,GPIO_Pin_11);


delay_ms(100);

  GPIO_ResetBits(GPIOB,GPIO_Pin_11);
  delay_ms(100);
}

}



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
family5love
1楼-- · 2019-07-21 06:14
柒喜 发表于 2019-3-17 11:30
那就是说这是C语言的问题吗,就是有while(1)的时候是在里面循环,没有的时候是整个程序的循环?(语言我 ...

没有while(1)程序就跑飞了,不受你控制了,只是实际上编译器也许会给做点优化,不会真正跑飞。所以正常的main函数最后都会有个while(1)的死循环,即使里面什么也不做也能防止程序跑飞
nashui_sx
2楼-- · 2019-07-21 11:59
 精彩回答 2  元偷偷看……
柒喜
3楼-- · 2019-07-21 12:27
nashui_sx 发表于 2019-3-17 11:19
不带while1 执行完main 退出main重启了 继续执行 main

那就是说这是C语言的问题吗,就是有while(1)的时候是在里面循环,没有的时候是整个程序的循环?(语言我还不懂)
nashui_sx
4楼-- · 2019-07-21 13:59
柒喜 发表于 2019-3-17 11:30
那就是说这是C语言的问题吗,就是有while(1)的时候是在里面循环,没有的时候是整个程序的循环?(语言我 ...

这个就太复杂了,我也不太懂,你可以研究下stm32的启动过程和.s文件 看看执行完main到底干嘛去了
看你也刚用,学会模仿就够了,加上while(1)不就行了,等你真没把这个研究懂估计就想放弃了
柒喜
5楼-- · 2019-07-21 15:38
nashui_sx 发表于 2019-3-17 11:40
这个就太复杂了,我也不太懂,你可以研究下stm32的启动过程和.s文件 看看执行完main到底干嘛去了
看你也 ...

哦哦,多谢解答。不过我学的东西就是这个。
a5820736
6楼-- · 2019-07-21 17:30
这个是keil工具自动帮你优化了,正常都是需要while或者for的

一周热门 更多>