你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
原帖由ST老少女于2008-12-02 14:40发表: & A9 r5 M5 v4 I, f1 g! K仔细研究了固件库,发现使用的代价,性能损失还是相当的大。 " _# V3 I7 d) X! _, ^激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。$ g. Z; o3 _ f5 o* V- P 由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。! g, C+ {" ^. R d* H 很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。, m4 r" m3 C$ U 我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。7 q3 U1 |& S7 t6 l5 Q 在此留个贴,慢慢记录无固件库的尝试过程。- K% n9 D# L! u4 z9 S 3 H1 O5 D+ z* V1 Q9 y7 C IAR编译器传统的INC目录中包含有两个STM32的头文件$ u5 C4 X" r/ p( d: s2 ` 分别是 . l' H! [4 S% y( u `0 Viostm32f10xxB.h 7 u* s" E* B' l& O. l. ^: g( ^3 Wiostm32f10xxE.h 3 V$ D+ z+ e. A* d$ K8 J- Y经过对比,E比B的头文件:APB 和 AHB 部分不同,增加了TIM5、6、7、8,UART4、5,ADC3,DMA2,SRAM、NOR,GPIOF,GPIOG,BKP,SPI3,FSMC,SDIO,DAC。 * d8 j; v) c- f- {% z& z3 }$ ], q: |! D4 i! |8 p 也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。" Z( \" }1 I9 m! m1 E$ \6 v 而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。 8 Q+ s. N* s/ T) b 7 Y. W. j& J/ L" z7 z* e1 e仔细研究了启动代码部分$ z" J2 n$ R/ |1 L8 ~ cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含) & q* H. N5 p- @3 g0 J; Y$ I% b. q ]3 b0 z: {! p 为了方便进行中断处理,将, u' x* w, G! h7 ^- f stm32f10x_vector.c 2 ^6 F& m1 n5 e: G) O! L1 P0 Lstm32f10x_it.c * X, `# ]) i+ p, o. Y5 K1 _2 m stm32f10x_it.h, z: g" \" A! T$ j& y 三个文件进行脱离固件库的修改。然后Include进main文件。 0 k$ S4 e# H. W9 G# n/ n) `3 |" P0 u/ O1 { 好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。1 l8 [& d- |, P( E 1 n. y) ~5 T8 K Y, J3 {2 amain.c头部# R& n" ^6 p$ I4 Z #include "iostm32f10xxB.h"5 @& Y E7 e0 y, \ #include "stm32f10x_it.c" " K$ |/ H: S9 ^! w% G#include "stm32f10x_vector.c" ' u) w f( C+ \: a& k以下附件为开源代码。
意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器。关注该话题即可发布文章!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
仔细研究了固件库,发现使用的代价,性能损失还是相当的大。
激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。' ?9 r' @( ~) K
由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。& y0 J6 E* o3 d
我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。
在此留个贴,慢慢记录无固件库的尝试过程。
0 S9 {4 J# t1 y
IAR编译器传统的INC目录中包含有两个STM32的头文件. r5 W# N: G% i3 t1 z* c
分别是9 [! T* O( @: @1 i. d8 G
iostm32f10xxB.h
iostm32f10xxE.h8 z5 {+ f4 A6 o% Y( Z' T
经过对比,E比B的头文件:APB 和 AHB 部分不同,增加了TIM5、6、7、8,UART4、5,ADC3,DMA2,SRAM、NOR,GPIOF,GPIOG,BKP,SPI3,FSMC,SDIO,DAC。4 h6 {9 R" l$ |3 @% s& d
6 f$ W! v% `/ O
也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。* R2 b9 w& Z+ f2 i& y* {
而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。0 w% C$ w3 @/ g. G( x
仔细研究了启动代码部分: A Y8 Y0 |8 K3 |1 f; M
cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含)
为了方便进行中断处理,将
stm32f10x_vector.c
stm32f10x_it.c
stm32f10x_it.h( h1 [ P) |4 b
三个文件进行脱离固件库的修改。然后Include进main文件。
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。; e# O! G% i$ U/ b e- V& x
main.c头部
#include "iostm32f10xxB.h"- V# c1 k. s: a2 u2 t3 I0 ~/ a, N
#include "stm32f10x_it.c"
#include "stm32f10x_vector.c"7 q, J# [: `+ O, w6 o1 ^( N0 N: S! E" I
以下附件为开源代码。
, q/ S# ?8 T# X; F3 l9 s/ i5 d
1 }. \: u* x: u. h* E" Q
6 Z; h; x6 f$ d
看看
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
仔细研究了固件库,发现使用的代价,性能损失还是相当的大。1 a* _2 ~) o4 ]
激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。* D t. a; ?- H: c$ T, X! d
由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。- h' l( }: x4 }5 q
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。: s) r5 q- _7 M8 B
我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。
在此留个贴,慢慢记录无固件库的尝试过程。& F2 L9 \8 W. S# V4 ~" b2 f
1 H! ~/ F; z# @) r) }% r+ d
IAR编译器传统的INC目录中包含有两个STM32的头文件
分别是
iostm32f10xxB.h
iostm32f10xxE.h
经过对比,E比B的头文件:APB 和 AHB 部分不同,增加了TIM5、6、7、8,UART4、5,ADC3,DMA2,SRAM、NOR,GPIOF,GPIOG,BKP,SPI3,FSMC,SDIO,DAC。( J, K7 |# H& N
也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。
而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。2 x+ g2 R8 {8 j" N8 t
! B" M" y+ S( W
仔细研究了启动代码部分
cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含). g3 n: R! n* n. c8 r1 Q
% Q' q5 E% l! L3 m
为了方便进行中断处理,将 Y: ~" o! f3 _# x, V, ?
stm32f10x_vector.c& Y2 y: q( D: n- H% C1 _ u3 q
stm32f10x_it.c ) O' O) y, Z4 P* M& K
stm32f10x_it.h
三个文件进行脱离固件库的修改。然后Include进main文件。
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。
main.c头部
#include "iostm32f10xxB.h"3 n% j* r9 T+ s5 c% C* u- a) Y2 E
#include "stm32f10x_it.c"% u; r: e% T5 `# U+ Y
#include "stm32f10x_vector.c"
以下附件为开源代码。
; G8 I3 i7 z6 I. c) X
% F7 p! d' }& `
+ p7 n: @2 `+ j
tks!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
依然是代码
tks!