复习跑马灯,这里我直使用delay.c里的delay_ms()进行延时,个人习惯把一个功能的代码放在一起(之前也没搞懂原子哥为什么先 GPIO_TypeDef 再 使能时钟),所以我先delay_init() 再 定义GPIO初始化函数。手搓点灯时就碰见
main.c(20): error: #268: declaration may not appear after executable statement in block
翻译:声明可能不会出现在可执行语句之后的块中;
解释:(我理解为)报错处所声明的内容(变量或者其他)之前有可执行语句;
解决办法:将声明定义的变量或其他放在函数开头;
也就是说GPIO_TypeDef定义结构体必须放在所有可执行语句的最前面
问题解决
总结
如果图省事把外设初始化放在主函数里,就不可避免要定义结构体,这样的话就必须在主函数的第一排写结构体代码(给鬼读)。
但如果是因为GPIO_TypeDef里面有#define文件而不是结构体的事,我还没做实验。