你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器。关注该话题即可发布文章!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
仔细研究了固件库,发现使用的代价,性能损失还是相当的大。6 k" }( q$ P9 b* e q7 g
激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。% [% \) B- G" Z: D0 B# A
由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。
我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。0 I& U5 k& ^ @6 g6 @+ d, ]' X1 s
在此留个贴,慢慢记录无固件库的尝试过程。 g! y/ ^3 r0 N$ e
6 M: \; \1 Y' A6 e
IAR编译器传统的INC目录中包含有两个STM32的头文件
分别是
iostm32f10xxB.h' x7 ~. h) u5 Y
iostm32f10xxE.h
经过对比,E比B的头文件:APB 和 AHB 部分不同,增加了TIM5、6、7、8,UART4、5,ADC3,DMA2,SRAM、NOR,GPIOF,GPIOG,BKP,SPI3,FSMC,SDIO,DAC。
: V$ J/ T- S2 F S; R; n$ f
也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。
而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。. g3 o2 o3 Q( |* v- n" J% m( \
仔细研究了启动代码部分
cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含)% G! U. P- }1 X% ~/ K8 h: D
为了方便进行中断处理,将0 _9 ]- @0 @7 N1 m4 m
stm32f10x_vector.c
stm32f10x_it.c
stm32f10x_it.h
三个文件进行脱离固件库的修改。然后Include进main文件。
, q+ e0 [ k9 y. B `
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。
0 A5 N3 }8 M1 ~: r* K V
main.c头部
#include "iostm32f10xxB.h"& ^5 }% t/ b$ T; J
#include "stm32f10x_it.c"! O- X Z) Y% D+ E( z
#include "stm32f10x_vector.c"7 ~5 _0 }, G m; w
以下附件为开源代码。
好
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
仔细研究了固件库,发现使用的代价,性能损失还是相当的大。
激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。
由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。: a" D8 @4 m) D2 M/ \) I
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。
我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。, g9 [' ~7 k+ E5 ]+ Z. f
在此留个贴,慢慢记录无固件库的尝试过程。% u9 P: j3 f+ J/ P0 ?
9 O w! C# V$ w. N
IAR编译器传统的INC目录中包含有两个STM32的头文件
分别是: I3 K, |! s4 F/ i! |0 N$ \
iostm32f10xxB.h; w8 q4 f Z; t" l! h* W2 R# _
iostm32f10xxE.h$ ^( p, d0 [0 D) ~. w6 T. c/ p
经过对比,E比B的头文件:APB 和 AHB 部分不同,增加了TIM5、6、7、8,UART4、5,ADC3,DMA2,SRAM、NOR,GPIOF,GPIOG,BKP,SPI3,FSMC,SDIO,DAC。* U: O7 j7 i: a+ g& q
也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。
而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。
仔细研究了启动代码部分5 _$ b2 Z) }+ X# s; n& X
cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含)% l. Z# {+ z9 C
8 U. o- u o$ @8 e
为了方便进行中断处理,将 C" j9 K: V0 C# @ D
stm32f10x_vector.c
stm32f10x_it.c ! o8 w- D A6 z# ?8 K' ?4 K+ [
stm32f10x_it.h
三个文件进行脱离固件库的修改。然后Include进main文件。
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。 N$ _, `$ [7 q8 B* y, Q D' D
main.c头部" {3 ~, [- e; B1 Q9 s
#include "iostm32f10xxB.h"
#include "stm32f10x_it.c"/ u, A- g0 X. Z" C6 Q
#include "stm32f10x_vector.c"
以下附件为开源代码。' P6 ~: r4 S- O" A. O# P! v' U9 h
+ @8 A) ?6 Y5 P/ v- m* U e# W
& T" P9 W5 w* E! V3 i ~
正有此想法
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
仔细研究了固件库,发现使用的代价,性能损失还是相当的大。
激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。
由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。
我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。% Z7 c6 }: ~$ }
在此留个贴,慢慢记录无固件库的尝试过程。
4 \6 U( z4 g3 o# \- x
IAR编译器传统的INC目录中包含有两个STM32的头文件& B, r1 r9 n8 y( _6 @: s
分别是
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。
也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。
而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。9 G* H2 }" W/ |% K
9 V1 S1 |2 _/ x' m7 ]
仔细研究了启动代码部分% q0 [& q7 r* r! I
cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含)
+ @ A3 O# X6 z; }) G- |
为了方便进行中断处理,将1 D* T" y/ I( E0 R- \ Y3 E5 O: u
stm32f10x_vector.c7 F: u9 X3 Q2 T5 f8 x
stm32f10x_it.c
stm32f10x_it.h& ]1 U g$ b, g2 h: _7 X
三个文件进行脱离固件库的修改。然后Include进main文件。
; }3 v2 @' a/ w; a S2 c5 e" ^
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。/ v+ ]- _/ D5 m# c
4 A9 b! v) {, g$ u R' v8 ]: Y
main.c头部/ B9 e: D5 m: I6 l2 u/ o
#include "iostm32f10xxB.h"' n! }6 O, n! R' f- Y( m
#include "stm32f10x_it.c"3 a" L" k5 |5 \* q6 ~8 a' i
#include "stm32f10x_vector.c"
以下附件为开源代码。
7 A$ T e2 j9 ~
/ V! e: M2 o8 |3 l: U
+ b" b) J. ^( I6 k0 e& m
学习了,呵呵
RE:【心得】用传统方法开发STM32,放弃固件库的使用!