IAR 一直显示 Warning[Pe223]: function "gpio_initial" declared implicitly

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IAR 一直显示 Warning[Pe223]: function "gpio_initial" declared implicitly相关的知识,希望对你有一定的参考价值。

我包含了 gpio.h 也在gpio.c 中将gpio_initial申明为extern 的函数了 ,还是有问题~

这个问题是因为宏USE_STDPERIPH_DRIVER没有打开,Options->C/C++ Compiler的Preprocessor页的Defined symbols中加上USE_STDPERIPH_DRIVER ,就不会再有这个告警、错误。
USE_STDPERIPH_DRIVER又是定义在哪里,干什么用?
USE_STDPERIPH_DRIVER定义在stm32f10x.h中
#if !defined (STM32F10X_LD) && !defined (STM32F10X_MD) && !defined (STM32F10X_HD)
/* #define STM32F10X_LD */ /*!< STM32 Low density devices */
/* #define STM32F10X_MD */ /*!< STM32 Medium density devices */
#define STM32F10X_HD /*!< STM32 High density devices */
#endif
把这个宏打开,也是解决连接出错的一种方法。
那它到底和assert_param有什么关系呢?我们继续查找这个文件中的USE_STDPERIPH_DRIVER,发现
#ifdef USE_STDPERIPH_DRIVER
#include "stm32f10x_conf.h"
#endif
而stm32f10x_conf.h中就定义了assert_param。
参考技术A

IAR编译时提示这样的错误:
Error[Pe147]: declaration is incompatible with "__interwork __softfp void rtc_set_alarm(uint32)" (declared at line 26 of ……

解决方法:函数的声明和定义不一样,导致冲突。改成一致即可。

提示警告:
Warning[Pe068]: integer conversion resulted in a change of sign
原因是 我的代码里有 0xFF<< 8 , 0xFF  估计在 IAR 里是有符号类型来存储,导致编译提示警告

解决方法:改成  0xFFu<< 8 ,多加了个 u 表示 unsigned ,即无符号类型。这样就没警告了

Warning[Pa082]: undefined behavior: the order of volatile accesses is undefined in this statement

运算符两边都是volatile变量的警告

这警告有意义.

用volatile修饰的变量一般不直接参与运算,volatile就以为着这个变量在运算过程中有可能已经改变了

例如:想计算a * b 要这样:

volatile unsigned char a;volatile unsigned char b;unsigned char x,y;x = a;y = b;return (x * y);

建议使用另外一个变量参与计算:

volatile char VVV = 9;char fun() char xxx; char yyy = 9; xxx = VVV; return xxx * yyy

参考技术B gpio.h文件里加extern
gpio.c里面不要加extern
参考技术C 发给我看看 参考技术D 你看看和头文件里声明的大小写一样不

以上是关于IAR 一直显示 Warning[Pe223]: function "gpio_initial" declared implicitly的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 IAR 解决下载和调试问题?

IAR调试cc2541串口遇到的Warning : Possible IDATA stack overflow detected

Warning: Permanently added the RSA host key for IP address ‘13.250.177.223‘ to the list of known(代码片

STM32的keil移植到IAR的问题。

Warning: Permanently added the RSA host key for IP address '52.74.223.119' to the list of kn

关于IAR函数指针问题