Keil5-延时函数不起作用现象处理
Keil5-延时函数不起作用现象处理
睡着の黑色素引言
在使用Keil5编写程序,编写完成烧写后发现延迟函数并没有在正常运行
通过分析main.c代码,导致出现上述现象的间接原因是延时函数没有起作用。检查延时函数的实现代码,并没有错误。所以极大可能是编译器在编译过程中优化掉了延时函数,使得整个程序不能按照预定功能实现。
修改前
实现
方法一
降低ARM Compiler version
在Target设置界面下,Code Generation默认的是ARM Compiler version 6。将ARM Compiler version 6改为ARM Compiler version 5即可。
点开魔术棒->Target->Code Generation->ARM Compiler
修改前
修改后
方法二
volatile关键字影响编译器编译的结果,用volatile声明的变量表示该变量随时可能发生变化,与该变量有关的运算,不要进行编译优化,以免出错。
volatile关键字最通俗的解释是,告诉编译器这个变量我有其他用,不要给我随便优化掉。
修改前
1 | void led_delay(uint32_t DelayTime) |
修改后
1 | void led_delay(volatile uint32_t DelayTime) |
结论
修改完成点击OK,再次编译烧写