|
对比两个uart2.c
这个时候,我用ultra compare这个工具来做对比。
在过去的第一份工作,两年时间里,我有一年半的时间在用这款工具。
所以我非常习惯那个界面,以至于我甚至没办法习惯它的新界面...呵呵
闲话少说,说说结果。
我发现,在stm8s_uart2.c里,居然多了一句
包含
#include "stm8s_clk.h"
而在我的库里没有这一句。
这个时候,还不明白,我只好回到stm8s库的项目去检查
我发现当时有一个不很醒目的 编译警告,没有引起我的注意,以至于导致今天的麻烦。
整整两个晚上!
这个教训是深刻的。
下面我们来看看我为此做的改动并加在 说明文档里的 说明文字- 事实上,我当初没特别留意。
- 在stm8s_uart2.c里有一个使用了stm8s_clk.c的函数。
- 如果在stm8s_uart2.c里不包含stm8s_clk.h 就会导致这个警告,而实际上,也会使得这个函数调用无效。
- 而这次,使用我的库去替代例程里的stm8s_clk.c和 stm8s_uart2.c导致串口不能收发正是这个原因。
- 这点事情告诉我。
- 一定要特别注意警告。
- 事实上,我现在的编译里,还有5个警告,但有一些我一时半会解决不了,老规矩,仍然贴上来。
- 分割线以下是上一次编译的 信息,也许意义不大,作废了,故而被我删除了。
- Building configuration: stm8s105-lib - Debug
- Updating build tree...
-
- 40 file(s) deleted.
- Updating build tree...
- Add_clk.c
- stm8s_adc1.c
- stm8s_awu.c
- stm8s_beep.c
- stm8s_clk.c
- stm8s_exti.c
- stm8s_flash.c
- stm8s_gpio.c
- stm8s_i2c.c
- Warning[Pe550]: variable "tmp1" was set but never used E:\STM8S-WORKFILE\stm8s105-lib\src\stm8s_i2c.c 594
- Warning[Pe550]: variable "tmp2" was set but never used E:\STM8S-WORKFILE\stm8s105-lib\src\stm8s_i2c.c 595
- Warning[Pe550]: variable "tmp1" was set but never used E:\STM8S-WORKFILE\stm8s105-lib\src\stm8s_i2c.c 705
- Warning[Pe550]: variable "tmp2" was set but never used E:\STM8S-WORKFILE\stm8s105-lib\src\stm8s_i2c.c 706
- stm8s_itc.c
- Warning[Pe940]: missing return statement at end of non-void function "ITC_GetCPUCC" E:\STM8S-WORKFILE\stm8s105-lib\src\stm8s_itc.c 56
- stm8s_iwdg.c
- stm8s_rst.c
- stm8s_spi.c
- stm8s_tim1.c
- stm8s_tim2.c
- stm8s_tim3.c
- stm8s_tim4.c
- stm8s_uart2.c
- stm8s_wwdg.c
- Building library
-
- Total number of errors: 0
- Total number of warnings: 5
- 相对而言,前四个警告不算很严重的事情。只是几个暂存变量,设置了却没用;
- 至于第五个感觉需要严阵以待。然而,这个地方,它是宏条件编译的,而且两个分支是不对称的。
- 本想去掉,可惜其调用的地方需要用到返回值,不能简单去掉。
- 再回头看。代码中注释提到 忽视警告即可。
- stm8s_itc.c
- /**
- * @brief Utility function used to read CC register.
- * @param None
- * @retval CPU CC register value
- */
- uint8_t ITC_GetCPUCC(void)
- {
- #ifdef _COSMIC_
- _asm("push cc");
- _asm("pop a");
- return; /* Ignore compiler warning, the returned value is in A register */
- #elif defined _RAISONANCE_ /* _RAISONANCE_ */
- return _getCC_();
- #else /* _IAR_ */
- asm("push cc");
- asm("pop a"); /* Ignore compiler warning, the returned value is in A register */
- #endif /* _COSMIC_*/
- }
- 这里就暂时不动它。
- 2013.8.13 00:00(之所以特别提这个,是觉得才过了几秒钟就变成第二天挺吃亏的)
- --------------------------------------------------------------------------------------------
复制代码 |
|