你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器。关注该话题即可发布文章!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
仔细研究了固件库,发现使用的代价,性能损失还是相当的大。 @* X7 T! y) T6 l. I* Q
激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。
由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。
我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。+ y0 b" O% X$ P {% `0 M
在此留个贴,慢慢记录无固件库的尝试过程。4 r& S" Y. [: u, m: }$ n$ s: p
IAR编译器传统的INC目录中包含有两个STM32的头文件% J" h7 _3 L% m( I
分别是# }& Z p; G, Q
iostm32f10xxB.h" R; T5 [: R6 b) t" t0 h
iostm32f10xxE.h7 m5 X! U' }* f2 {+ D
经过对比,E比B的头文件:APB 和 AHB 部分不同,增加了TIM5、6、7、8,UART4、5,ADC3,DMA2,SRAM、NOR,GPIOF,GPIOG,BKP,SPI3,FSMC,SDIO,DAC。
也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。9 v$ b$ D; d0 {; i/ w8 m
而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。( y; g" p7 ?0 V P9 { h2 q5 q
仔细研究了启动代码部分6 p P ^2 M, m; p
cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含)( O6 \ }' U8 W- o" H
为了方便进行中断处理,将6 l4 E; R1 D# L
stm32f10x_vector.c+ V9 g7 N5 A+ m& W/ l
stm32f10x_it.c
stm32f10x_it.h8 D- b, f* u: |4 R. K0 I" E
三个文件进行脱离固件库的修改。然后Include进main文件。8 O! W1 c. [! F- E6 \0 k6 m
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。
main.c头部
#include "iostm32f10xxB.h"! e# ?2 D7 V z' q0 `) M6 n
#include "stm32f10x_it.c"
#include "stm32f10x_vector.c"2 p7 v+ r4 ~0 _0 j
以下附件为开源代码。 O( C0 P8 H) X- y" T' W! C0 h3 o
. q9 T4 n# S+ ~; K0 ]
学习中
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
仔细研究了固件库,发现使用的代价,性能损失还是相当的大。
激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。
由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。: ]0 M( h" C8 g& Q* w/ J
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。$ G4 U# G. m! ^; w0 U& D3 e- |7 r h
我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。
在此留个贴,慢慢记录无固件库的尝试过程。
IAR编译器传统的INC目录中包含有两个STM32的头文件$ b: Y$ P9 S7 j6 _
分别是
iostm32f10xxB.h- T$ R% D& f) L9 l
iostm32f10xxE.h
经过对比,E比B的头文件:APB 和 AHB 部分不同,增加了TIM5、6、7、8,UART4、5,ADC3,DMA2,SRAM、NOR,GPIOF,GPIOG,BKP,SPI3,FSMC,SDIO,DAC。
也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。; g! p9 x l% i; c- f! T; w( f
而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。
仔细研究了启动代码部分% u$ H" D9 L) F- ]
cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含)
- o# p# x9 {) h9 Z' L# I
为了方便进行中断处理,将
stm32f10x_vector.c
stm32f10x_it.c
stm32f10x_it.h
三个文件进行脱离固件库的修改。然后Include进main文件。
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。% A# @, N1 i! Y5 U _/ F* b* W; d& y
main.c头部
#include "iostm32f10xxB.h"! \8 x! y/ Z5 C- p- d
#include "stm32f10x_it.c"8 J5 o0 e- Q! }- ~5 H
#include "stm32f10x_vector.c"% U+ {) F8 K$ q. L! D
以下附件为开源代码。3 [, s& ?9 D! o! I+ _. Q
; Q8 B6 j; a; j- W7 @$ R
7 a+ i z ^* w
" A0 ]7 ?. {; _& v* E5 l4 Q
LET mE sEEE
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
附件:回复后可见!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!