你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
原帖由ST老少女于2008-12-02 14:40发表: " e3 B+ n8 B' M' ?+ O# k+ _仔细研究了固件库,发现使用的代价,性能损失还是相当的大。 7 m: c. q; p t2 d) @8 a- Y! \激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。 3 j3 f6 y) G! }3 O! T由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。2 T: w7 l9 K/ B; v( l0 N; i; | 很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。 1 j) k' p5 ^' b* c, q我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。 2 Z D0 c c# F7 X, ^3 S' j在此留个贴,慢慢记录无固件库的尝试过程。 " k6 K" Y- U) k& c; j * N$ o* O! K ]+ [0 EIAR编译器传统的INC目录中包含有两个STM32的头文件$ j: l+ J! d( h% z5 y. ] 分别是 # C- r( I. L, F$ \4 E4 Z$ I G2 a+ u' niostm32f10xxB.h 7 b4 I% p. Q+ s1 I. i3 Jiostm32f10xxE.h8 `' L$ ^7 O8 f9 S$ j9 p 经过对比,E比B的头文件:APB 和 AHB 部分不同,增加了TIM5、6、7、8,UART4、5,ADC3,DMA2,SRAM、NOR,GPIOF,GPIOG,BKP,SPI3,FSMC,SDIO,DAC。9 \2 F5 O! f; X( p 1 [! e2 T, z# ~ B% Q 也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。$ x& Z1 y5 G" |, T+ T- M" ?) r1 h 而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。 e% T: V# K. E, Y3 O& P+ v/ j& ]- |; T* O0 Q( Z 仔细研究了启动代码部分 # k4 P0 y$ ~1 g- ? [cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含) 8 B8 W" O* v! z' q7 C$ ^; |6 \" l( @2 }+ X Y2 X* r. w& r 为了方便进行中断处理,将& c; B/ P! D6 }! {. E- \& o stm32f10x_vector.c # R; l# Q& B4 J: `7 ?, r3 y4 `stm32f10x_it.c 0 ~. w C0 b* J9 E stm32f10x_it.h1 a0 i7 a. c8 L: S. U/ q% E2 o 三个文件进行脱离固件库的修改。然后Include进main文件。 ; U( y, \0 L% _( O \+ E # e0 x" Y, a6 v( {" m; }好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。' n; P8 f; v2 J3 H " }5 E+ E1 O" M# v3 Ymain.c头部 : F! X$ a9 Y9 J2 x, H* c: _#include "iostm32f10xxB.h" , I# @7 n" o7 Y+ _0 T4 u# {% X" b#include "stm32f10x_it.c" # l* l# L! s/ b- q: H! A#include "stm32f10x_vector.c"+ Q& d0 e. {" }" A8 D- y; w 以下附件为开源代码。
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
仔细研究了固件库,发现使用的代价,性能损失还是相当的大。. {+ {' m+ e. C
激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。. H q2 p2 o# w Y
由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。 u6 l. j- Y; C2 u
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。& k4 ~+ t7 }0 ] w1 J! y {9 \. J5 Z+ m: ^
我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。
在此留个贴,慢慢记录无固件库的尝试过程。
IAR编译器传统的INC目录中包含有两个STM32的头文件
分别是1 N: E1 m% H: c; l
iostm32f10xxB.h' T8 `8 b/ }( m
iostm32f10xxE.h
经过对比,E比B的头文件:APB 和 AHB 部分不同,增加了TIM5、6、7、8,UART4、5,ADC3,DMA2,SRAM、NOR,GPIOF,GPIOG,BKP,SPI3,FSMC,SDIO,DAC。6 i( R# N% g- Z& I
也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。
而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。
仔细研究了启动代码部分3 R/ ^4 d2 L Q- H) S# X
cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含)5 v# S" q# n* q$ R/ H9 {. Z8 z
为了方便进行中断处理,将8 M8 A3 w$ }, p5 M: w" L2 c1 A3 W# w
stm32f10x_vector.c
stm32f10x_it.c
stm32f10x_it.h+ w. q/ N2 {. I
三个文件进行脱离固件库的修改。然后Include进main文件。; y k F# G0 k$ J
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。5 y- [3 t% T0 r$ z( A/ o
+ r; S: s$ M% W
main.c头部# a f7 {" d5 P
#include "iostm32f10xxB.h"* I& f( c6 \9 t5 }4 D. v; m
#include "stm32f10x_it.c"& b, C3 F! j+ C; ?3 o* e. Z
#include "stm32f10x_vector.c"
以下附件为开源代码。
2 b5 l0 k: o% i! p9 ]0 N
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
依然是代码
# ?- c4 s2 r* o2 S5 t' k) I8 D
研究学习
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
仔细研究了固件库,发现使用的代价,性能损失还是相当的大。' d8 T/ ]! ?* D, O" }' c6 ?! N
激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。. |% C5 z0 ~7 T! G- g# I
由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。7 ?) g+ f9 t# A, h/ ~7 q5 ^1 m8 m; ?
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。
我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。
在此留个贴,慢慢记录无固件库的尝试过程。
IAR编译器传统的INC目录中包含有两个STM32的头文件
分别是
iostm32f10xxB.h
iostm32f10xxE.h# F1 q+ L. E( Y+ v! k
经过对比,E比B的头文件:APB 和 AHB 部分不同,增加了TIM5、6、7、8,UART4、5,ADC3,DMA2,SRAM、NOR,GPIOF,GPIOG,BKP,SPI3,FSMC,SDIO,DAC。
0 Q2 G. p- v& s8 l: U5 {0 c( y( T& N
也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。
而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。
仔细研究了启动代码部分
cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含)8 p- H0 C+ x+ G8 j: `/ g: E) l' O
8 _9 o& {& N Y0 z j
为了方便进行中断处理,将* H: y9 }6 G0 O$ S! z
stm32f10x_vector.c
stm32f10x_it.c 6 u9 H: L3 U4 n4 g( W
stm32f10x_it.h1 P: u1 S2 T" W0 y9 @$ ^
三个文件进行脱离固件库的修改。然后Include进main文件。
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。
8 r3 ^0 K* A6 \* l0 O2 C
main.c头部
#include "iostm32f10xxB.h"
#include "stm32f10x_it.c" t% U: }' k. S$ O A+ S
#include "stm32f10x_vector.c"8 u6 |1 N, f }# Y% E
以下附件为开源代码。
) x2 {- `4 I. [0 M
+ I& p H5 q( D9 }, Z
好,支持!!!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!