你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器。关注该话题即可发布文章!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
/ [5 i& I9 y% B3 O g( t
学习学习
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
. I3 T, Z% q. A6 n
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
仔细研究了固件库,发现使用的代价,性能损失还是相当的大。
激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。
由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。, ]1 t" Z) A3 `% b9 `2 C w
我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。
在此留个贴,慢慢记录无固件库的尝试过程。2 Y7 D1 s4 P" o( u8 m9 f
IAR编译器传统的INC目录中包含有两个STM32的头文件+ ^( _1 T4 K, _2 } Y1 M
分别是( R2 _6 h5 @$ _( `
iostm32f10xxB.h8 y, ~+ h0 e/ E% l, b: ?
iostm32f10xxE.h' s1 K2 W6 x' j$ i K' E$ x
经过对比,E比B的头文件:APB 和 AHB 部分不同,增加了TIM5、6、7、8,UART4、5,ADC3,DMA2,SRAM、NOR,GPIOF,GPIOG,BKP,SPI3,FSMC,SDIO,DAC。; P) K m$ R. m2 b9 U7 O
2 t' F: v3 Y- x
也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。% [6 r1 g2 F! w+ ~# k
而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。$ {/ B+ _; ]1 b' a* F
仔细研究了启动代码部分$ E h% ~, o: M$ M( R
cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含)
" f5 m9 ~8 o$ W# L5 R
为了方便进行中断处理,将% B% g: J8 o5 V2 S" b& b
stm32f10x_vector.c
stm32f10x_it.c " \9 ? I" `/ d* X) k1 p1 ~ t2 Y
stm32f10x_it.h
三个文件进行脱离固件库的修改。然后Include进main文件。
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。
( L% r- M7 Y! _! u, i
main.c头部/ z) Y# d0 [/ V( D
#include "iostm32f10xxB.h"
#include "stm32f10x_it.c"8 R- |/ S# H# ~5 f1 P. ~
#include "stm32f10x_vector.c"
以下附件为开源代码。2 P4 _6 w: Q& @0 {
( o! m* z0 t' U
- b# V3 d) y( @$ p5 {/ z. ]1 k4 d
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
仔细研究了固件库,发现使用的代价,性能损失还是相当的大。+ e. Z7 o& {: h- F
激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。/ B0 p. T, N, r8 m5 b
由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。! s* W2 [5 ], O) W0 S
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。
我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。
在此留个贴,慢慢记录无固件库的尝试过程。
IAR编译器传统的INC目录中包含有两个STM32的头文件4 t L' V- D: }( [$ f9 L
分别是
iostm32f10xxB.h9 D% x; A& B% R
iostm32f10xxE.h
经过对比,E比B的头文件:APB 和 AHB 部分不同,增加了TIM5、6、7、8,UART4、5,ADC3,DMA2,SRAM、NOR,GPIOF,GPIOG,BKP,SPI3,FSMC,SDIO,DAC。 L. e7 u/ g( f
9 _9 j1 z: [: j! r. W
也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。
而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。
仔细研究了启动代码部分# H# r. E4 T) n( v1 L, y
cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含)
为了方便进行中断处理,将, ~) j! ~$ Q2 o) x3 t1 n/ I: h; U
stm32f10x_vector.c
stm32f10x_it.c
stm32f10x_it.h
三个文件进行脱离固件库的修改。然后Include进main文件。
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。8 E& m' I1 U f4 B% X
! m" D, S+ ~$ k& z! j. g1 s
main.c头部
#include "iostm32f10xxB.h"6 i9 m. N" d) e& J- T
#include "stm32f10x_it.c"
#include "stm32f10x_vector.c" N3 z/ K' ]3 m- }4 I
以下附件为开源代码。% F* ~7 i, A% k
: O5 S$ Y: A* M
3 I& \/ Y3 T4 u, x2 g6 F6 C
STM 固件库虽然好用,但效率确实有待提高。