你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【心得】用传统方法开发STM32,放弃固件库的使用!

[复制链接]
ST老少女 发布时间:2008-12-2 14:40
仔细研究了固件库,发现使用的代价,性能损失还是相当的大。4 p0 U; G5 g  D9 m/ k
激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。
" ?; D( Z4 b0 \: a, Z- }由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。+ d3 m) `7 t! s2 f/ L9 ~: |6 S9 \
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。" Y& f+ O- ^% u7 f3 T
我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。" ]6 z: I" H* P( [% q1 Q) t( d; a
在此留个贴,慢慢记录无固件库的尝试过程。# f) W, s0 V4 |$ H' l
6 W7 P. j2 D7 U3 Z% D
IAR编译器传统的INC目录中包含有两个STM32的头文件
6 @3 Z, v# p8 b8 g# H分别是
3 j2 G" }* R, Y7 U/ Biostm32f10xxB.h% |' v1 Z) N3 O( d6 O- z
iostm32f10xxE.h
1 ^, |3 H* f% b0 A经过对比,E比B的头文件:APB 和 AHB 部分不同,增加了TIM5、6、7、8,UART4、5,ADC3,DMA2,SRAM、NOR,GPIOF,GPIOG,BKP,SPI3,FSMC,SDIO,DAC。' y- ?7 {- C0 b6 M/ |: C- a

% \' Y+ r5 F6 W- ?# \( Y- A也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。* Z8 J, {4 ~! ?3 r9 ]% i- Q
而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。
' O5 S( k/ o. c2 C7 ~: X6 G
; {: h+ g: K9 J% r* e5 ?仔细研究了启动代码部分
0 b+ n! }. E* z- Ocortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含)
& C, E4 p: t# W; V% V$ H/ r2 ]7 a5 M0 Z, s
为了方便进行中断处理,将
& ^+ s6 Q9 h! e5 J/ a& O+ ?stm32f10x_vector.c  n- ]) v5 A9 @) d* W  A
stm32f10x_it.c 9 P2 }, R, e4 L( Q& ~
stm32f10x_it.h
& Y6 E* K) o3 X$ k) w三个文件进行脱离固件库的修改。然后Include进main文件。. ~& T5 p; u( W5 S# f
& q" Z6 ^* R- s' ]+ ?. k6 ?
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。6 D' Y/ Q% z0 K0 ^5 \' ?

3 m' U) C$ `. X* r5 imain.c头部
8 I$ h! N4 l3 o6 |5 k- ]5 H1 `#include "iostm32f10xxB.h"
4 K! q; b( K% T! O' l#include "stm32f10x_it.c"7 f9 |" m1 V) A% C, b
#include "stm32f10x_vector.c"
; t1 @- o# O4 K+ _3 K; I; E( Z以下附件为开源代码。

cortexm3_macro.s.txt

下载

10.04 KB, 下载次数: 1451

收藏 评论1459 发布时间:2008-12-2 14:40

举报

1459个回答
ST老少女 回答时间:2008-12-2 14:41:45

回复:【心得】用传统方法开发STM32,放弃固件库的使用!

原帖由ST老少女于2008-12-02 14:40发表:
8 \* r5 q4 X3 ~仔细研究了固件库,发现使用的代价,性能损失还是相当的大。5 n% N' ^9 _8 h  S
激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。
' H; S( K1 v4 ?3 R/ G9 U由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。- _2 p6 W* z; g: {  d6 R6 a
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。
( g8 y5 v4 y1 |5 |我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。
' V1 s$ r6 a3 `8 v& [在此留个贴,慢慢记录无固件库的尝试过程。+ \$ B- \  L$ q- n" a1 _$ ]5 N8 p" H

- g& P' G9 d/ J2 X7 c& CIAR编译器传统的INC目录中包含有两个STM32的头文件/ [3 j  M8 {- h0 L' z0 S
分别是, O7 H) x8 N8 E% Y, H5 i( u
iostm32f10xxB.h
9 V8 ~5 i- V* J8 n& Iiostm32f10xxE.h
- @( P( L' s4 I" {8 P0 b7 C1 q经过对比,E比B的头文件:APB 和 AHB 部分不同,增加了TIM5、6、7、8,UART4、5,ADC3,DMA2,SRAM、NOR,GPIOF,GPIOG,BKP,SPI3,FSMC,SDIO,DAC。
5 J. b+ a3 N% s6 \$ c2 B/ B7 g: U- O. o
- F5 u6 A6 _) ]0 n4 \* Y: C: M也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。
2 Y- ?+ L4 P5 R而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。+ M9 X+ t% w/ e4 q5 J* l$ B) S; \% n
" X3 ?1 W) y# o
仔细研究了启动代码部分
. |# h* M4 ?5 k4 f9 A2 n3 P4 Wcortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含)
8 ?5 D) S3 ]- [( d7 m% n6 k- e; ~3 |+ _# z. f, _' N* S% f
为了方便进行中断处理,将8 v9 {2 A, ?* p! n3 }& L. R) n; |+ s
stm32f10x_vector.c' \4 N( |/ I3 C1 T2 ?2 T  m( s7 F
stm32f10x_it.c 9 l+ Q; c9 h: }2 @" h
stm32f10x_it.h
) b! n8 b5 f0 }, U1 y三个文件进行脱离固件库的修改。然后Include进main文件。
& I. J4 C* L+ ]" ^$ A, H; d# P- e4 \# k/ X
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。
! t2 b7 I$ P6 b* s$ `1 T+ J( k* k5 i0 v# w0 W8 F( _# I
main.c头部
7 w, Q- O, K& N1 O1 Y0 @#include "iostm32f10xxB.h"
( K3 V) q5 R* n- e5 M" c. P  w* }#include "stm32f10x_it.c"
$ D# P  u2 |5 @; X3 w#include "stm32f10x_vector.c" . c1 b/ Y3 K7 n9 d2 S0 t1 s7 s
以下附件为开源代码。
, F, K. u( O9 X) P" _# n/ I
依然是代码
ST老少女 回答时间:2008-12-2 14:44:13

回复:【心得】用传统方法开发STM32,放弃固件库的使用!

原帖由ST老少女于2008-12-02 14:41发表:6 e& k2 @- w3 f, E! f2 ]
, `5 D: {5 d2 {- L# z4 |
/ Q& ^5 I1 H8 c9 Y5 ~
依然是代码

2 q+ v3 ]# {- ]  a" u% R, Isorry,放在包里了

开源代码包.rar

下载

34.43 KB, 下载次数: 1567

surfer-95855 回答时间:2008-12-2 16:18:39

回复:【心得】用传统方法开发STM32,放弃固件库的使用!

我正在学STM32,刚开始觉得使用固件库的确比较方便,直接调用函数就行,但看到你的文章,猛然回头。
jamiedu-91220 回答时间:2008-12-4 21:54:37

RE:【心得】用传统方法开发STM32,放弃固件库的使用!

我也没用
agnd 回答时间:2008-12-5 12:51:55

RE:【心得】用传统方法开发STM32,放弃固件库的使用!

还是不用库灵活方便!
braveboys 回答时间:2008-12-6 01:07:27

RE:【心得】用传统方法开发STM32,放弃固件库的使用!

谢谢楼主,我的思路也是这样的
ly020908 回答时间:2008-12-6 09:57:36

RE:【心得】用传统方法开发STM32,放弃固件库的使用!

是一种思路,一种方法,值得探索
breakaway 回答时间:2008-12-6 23:25:14

RE:【心得】用传统方法开发STM32,放弃固件库的使用!

初学用固件库上手快啊
lofeng 回答时间:2008-12-7 21:23:36

RE:【心得】用传统方法开发STM32,放弃固件库的使用!

是的 对于初学者来说固件还是有帮助的
colaring-97826 回答时间:2008-12-11 14:51:00

RE:【心得】用传统方法开发STM32,放弃固件库的使用!

同意,我也想试试
cnelf 回答时间:2008-12-12 09:43:06

RE:【心得】用传统方法开发STM32,放弃固件库的使用!

不错不错,不过都是有利有弊,刚开始的话,还是用固件熟悉一下吧。
liongt-89555 回答时间:2008-12-12 10:22:02

RE:【心得】用传统方法开发STM32,放弃固件库的使用!

用传统方法开发STM32
togive-98006 回答时间:2008-12-12 10:32:40

RE:【心得】用传统方法开发STM32,放弃固件库的使用!

不同场合,使用不同的方法。使用固件库有利于快速开发和维护。
hoolheart 回答时间:2008-12-12 17:49:36

回复:【心得】用传统方法开发STM32,放弃固件库的使用!

赞,完全支持,我也是这样做的

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版