我在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);
}
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
没有while(1)程序就跑飞了,不受你控制了,只是实际上编译器也许会给做点优化,不会真正跑飞。所以正常的main函数最后都会有个while(1)的死循环,即使里面什么也不做也能防止程序跑飞
那就是说这是C语言的问题吗,就是有while(1)的时候是在里面循环,没有的时候是整个程序的循环?(语言我还不懂)
这个就太复杂了,我也不太懂,你可以研究下stm32的启动过程和.s文件 看看执行完main到底干嘛去了
看你也刚用,学会模仿就够了,加上while(1)不就行了,等你真没把这个研究懂估计就想放弃了
哦哦,多谢解答。不过我学的东西就是这个。
一周热门 更多>