7328|21

76

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

建议尽快升级到Lib3.0(stdperiph&USB) [复制链接]

新的库产生的代码明显减小
但是对比源码看,相对2.x并没有多少改动,最后发现效率来源于ST对库的架构做了优化

stm32f10x_conf.h 中可以看到一部分
以前是一堆宏定义,自己开关
现在时自己控制对include的开关

中断向量映射ISR程序:
以前是所有ISR都有一个空函数
现在是所有中断默认到一个Default ISR,用户自己声明一个ISR会自动覆盖相应中断到Defaul ISR

当然,对ARM CMSIS的支持,使我们更方便重用
Doxygen的支持,我们可以用工具自动产出很多文档,更是节约了不少无谓的人力

此帖出自stm32/stm8论坛

最新回复

                                 IAR的设定不清楚至于版权问题......(此处省略1000字)   详情 回复 发表于 2009-4-26 18:12
点赞 关注
 

回复
举报

77

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

我没看明白

                                 新的ISR应该怎么产生,这块儿变化最大了
此帖出自stm32/stm8论坛
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

看了像是优化了不少

                                  
此帖出自stm32/stm8论坛
 
 

回复

89

帖子

0

TA的资源

一粒金砂(初级)

4
 

我的代码减小了10K的样子

用2.x的库编译,出来是46K
换新的库,居然只有34K

都是把Optimization的Level设置为0

所以,好奇才去分析ST新的库的架构,确实有很多值得我们学习的地方。
这种思路,做不用库的纯裸奔也用得上。
此帖出自stm32/stm8论坛
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

5
 

偶的代码怎么米有减少那么多?

偶的Optimize Level设置为High。。。
并且,Multi-file compilation,Discard Unused Publics没有用,以后也44。
此帖出自stm32/stm8论坛
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 

3.0.0还没完美

改进的是,在极高优化下,以前中断Vector被优化掉的现象没有了,这个问题以前给ST的工程师发过mail,在新版本的库中确实得到改进。

但如果使用IAR的最高优化(最大Size优化+Multi-file compilation+Discard Unused Publics),某些中断会被优化掉,需要修改stm32f10x_it.c文件解决。是否要向ST提供解决方法?
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

7
 

我在调试的时候一般不开优化

这是早年Keil C51留下的经验教训。
等功能都基本OK后,再开优化。
此帖出自stm32/stm8论坛
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

8
 

FWLib3.0 和 FWLib2.0比较

最大的改变是:FWLib3.0的封装更加完美,移植起来更方便。它把中断,cortex m3相关的东西封装好,然后把stm32外设另外封装好,之后在链接起来。你用的时候可以选择用库或者不用库,但哪些烦人的寄存器定义和映射你都可以用。 另外对中断那里的重新封装更加的方便,代码也会少很多。总之,比2.0有了很大的进步。  

至于优化嘛,嘿嘿,一般我也开Low那档,本人原则(工控),稳定压倒一切,容量不够换大的嘛。  
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

9
 

请问 库的代码大家都能看得懂么?

新库确实感觉很清晰!!!

有些代码我看得比较糊涂,大家感觉怎么样??

设置时钟的函数看着还可以,但是有些..............
比如说 这个函数
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)里面的语句很多啊


那些库读起来 大家觉得是小菜一碟么????

是不是多看几遍就会懂了???

此帖出自stm32/stm8论坛
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

10
 

这个库很简单,有一定C语言的功力和经验都能够很容易看懂

偶的代码是在Versaloon上用的,功能基本都OK了,所以偶希望占用的空间越小越好,就都使用最高的优化级别。
其他应用的话,肯定根据需要选择不同的优化级别。

3.0.0的库其实也有一些可以改进的,比如:system_stm32f10x.c中的static void SetSysClockTo72(void)函数:
/*!< PLLCLK = 8MHz * 9 = 72 MHz */
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC | RCC_CFGR_PLLMULL9);
这个默认了系统使用8M晶振,如果使用12M的话就有问题了,2.0.3的库中的RCC_Configuration函数中可以这么实现:
/* PLLCLK */
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, (_SYS_FREQUENCY * 1000000 / HSE_Value - 2) << 18);
这里只是默认系统频率是晶振频率的整数倍。使用8M或者12M晶振,只需要修改HSE_Value即可。
此帖出自stm32/stm8论坛
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

11
 

如果你不使用库的话,要在system_stm32f10x.c中根据实际定义时

如果你使用了库,那么在 stm32f10x_conf 文件中需要重定义时钟的,再那里你可以重新配置。总的来说,比2.0好。

void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) 是一个端口寄存器初始化,指针和结构体概念搞明后看起来你就会顺畅多了。
此帖出自stm32/stm8论坛
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

12
 

对一般的工程师而言,库的代码看懂应该是没什么问题

                                 我们用它的目的,一是使用它的稳定性,二是降低自家的重复劳动
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

13
 

哪里有下?

                                 顺便问问
此帖出自stm32/stm8论坛
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

14
 

用了新库之后,MDK编译速度变慢了!!!

                                 你们的编译速度变慢了么?
此帖出自stm32/stm8论坛
 
 
 

回复

85

帖子

0

TA的资源

一粒金砂(初级)

15
 

看看你OPTIONS的设置

                                 取消BROWSE INFORMATION选项
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

16
 

哦 请问15楼 你这是在哪里知道的?

还有 那个BROWSE INFORMATION功能 我得用啊!!!

我估计是新库的头文件不在keil的INC导致编译速度慢的
此帖出自stm32/stm8论坛
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

17
 

新库确实会编译变慢

原因是inlcude文件的搜索目录更多了

因为ST把不同的.h文件放置于不同的目录,编译就会按照顺序挨个去找。
以前只有一个include目录,现在要搜索好几个,自然会慢些。
另外Keil的编译器会自动去分析你include的.h文件是否有更新,
拆分.h文件增多也会让编译速度下降。

我自己程序源代码也从原来的六七个c文件,功能化整理成了18个c文件了。
我现在很少build ALL了,因为一次要一分钟零十秒(刚测试的)。

总体而言,架构优化还是值得的。
少build All就可以了
此帖出自stm32/stm8论坛
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

18
 

4楼代码减少很多,5楼代码减少的不多!!???

我看原因小有可能是5楼没选 Options For TArget 下的 Use MicroLIB吧!!!

选好还是不选好呢?答:不清楚!

----------------------
另外:楼上说的听起来有道理!!!
此帖出自stm32/stm8论坛
 
 
 

回复

62

帖子

0

TA的资源

一粒金砂(初级)

19
 

总体而言,架构优化还是值得的。

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

70

帖子

0

TA的资源

一粒金砂(初级)

20
 

那就顺便唠叨下MicroLib

MicroLib是一个阳春版本的C运行库,体积小了,功能弱了。
就像赛扬相对奔腾一样,价钱便宜了,功耗上去了。

举个例子,C程序必须有的main函数的标准声明是:
int main(int argc,char *argv[]);
但是MicroLib把它简化成了:
void main(void);
没有了参数没有了返回值。



一般情况下,建议选用MicroLib库,对STM32来说,它正合适。
没必要充大款,非把程序无缘无故搞得挺肥大的。


更多内容,请参看Keil的网站链接:
相关链接:http://www.keil.com/arm/microlib.asp
此帖出自stm32/stm8论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表