STM32学习之路的坑一

在学习STM32的过程中,难免会遇到各式各样的问题。遇到问题别害怕,这是正常的,每个人都会犯错,但是要记住一点:学会找问题的解决方式,比如说:百度、博客、论坛等等,这些都是问题解决的战场,记住一点,千万不要做伸手党!不要一遇到问题就退缩!只有你真正的动手去分析问题,才能知道问题出在哪,才能在后面的学习过程中再次避免发生类似的错误!真的动手去解决问题了,你才能印象深刻。

本人也是一名小白,刚刚开启STM32的学习之路,之前也没有51的学习经验,编程知识也不好,一切都是从零开始。但是没关系,现在学习也不晚,向着目标努力就可以!

 

必踩的坑之一

在编写函数时,变量的定义一定在函数的最前面,即变量要在可执行变量之前定义

通过上面这张图我们可以看到,结构体变量的定义是在代码的中间部分,这样的话编译时就会报错,提示:declaration may not appear after executable statement in block GPIO_InitTypeDef GPIO_InitStruct;       

上面错误信息的意思是: 声明可能不会出现在GPIO_InitTypeDef的可执行语句之后。

变成我们能理解的语言表述:GPIO_InitStruct  这个变量要定义在可执行程序之前定义

产生这个问题的原因:早期的C语言定义的:变量要定义在可执行程序的最前面

比较早的编译器也会出现这样的提示。但是我们现在学习C/C++之后,我们会发现,变量的定义是哪里需要哪里定义,如果在最前面定义感觉好麻烦,对于小白来说对代码的理解不够友好。

不过现在很多编译器已经支持C99标准了,现在这个问题也被解决了,最新的编译器也解决了这个问题。

同样 keil5 也支持C99的标准,也可以解决这个问题

解决方法如下:

完成这三步,再编译一下就不会出现报错,编译通过! 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值