你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器。关注该话题即可发布文章!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
仔细研究了固件库,发现使用的代价,性能损失还是相当的大。+ _; [/ e/ O5 a4 K# B
激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。
由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。0 ~1 F. O; x6 ~7 T, _
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。0 j& X' g t) \4 T
我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。
在此留个贴,慢慢记录无固件库的尝试过程。$ u6 |4 M5 s: S* L4 m! {
IAR编译器传统的INC目录中包含有两个STM32的头文件4 ^. t6 @" b' O% ^6 O3 _9 b
分别是
iostm32f10xxB.h$ p; z3 y+ W7 P' O: T# x; d
iostm32f10xxE.h7 I' H S9 L, {; c* d
经过对比,E比B的头文件:APB 和 AHB 部分不同,增加了TIM5、6、7、8,UART4、5,ADC3,DMA2,SRAM、NOR,GPIOF,GPIOG,BKP,SPI3,FSMC,SDIO,DAC。% v0 v$ f) q' p2 {
3 c- z8 H. u+ \
也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。
而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。2 D- a$ b# a; q9 U! b% i- S0 o
/ F. F/ J- u8 A+ C2 E3 N
仔细研究了启动代码部分! w# |/ O3 u9 K; W- y
cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含)
为了方便进行中断处理,将
stm32f10x_vector.c
stm32f10x_it.c 0 P* d) J) i$ ~6 \( A7 ]3 i
stm32f10x_it.h
三个文件进行脱离固件库的修改。然后Include进main文件。% |2 ^0 X" ?" M9 b; ^6 ~
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。6 I0 O# b- g; }# ~2 r
main.c头部
#include "iostm32f10xxB.h"; Z C* J6 ^ X6 A+ F X: r6 A
#include "stm32f10x_it.c"
#include "stm32f10x_vector.c"
以下附件为开源代码。' c @+ M0 z6 b3 E
- C7 d' H- `9 ]+ ^( i2 ^- @
不错啊
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
仔细研究了固件库,发现使用的代价,性能损失还是相当的大。
激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。+ n9 K4 {6 Y; W; Q* a, Z
由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。3 D% ~( r9 B0 k4 _3 v# j
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。' x3 X, i& q5 O& F' ~/ |& F( ]
我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。5 Z' L0 O3 B- {! }/ c! }
在此留个贴,慢慢记录无固件库的尝试过程。% b. \$ {7 N$ |: Q* O% ~. j+ S
IAR编译器传统的INC目录中包含有两个STM32的头文件; ]' q& p( c- q$ l" z( a1 x* V; D
分别是
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。8 @4 w3 T' V' g, i
" K* p4 B1 \1 U, f, Z3 U% c; Y) a
也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。
而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。
仔细研究了启动代码部分 d# h/ h. \5 J1 e1 b* C) @
cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含)
为了方便进行中断处理,将7 X8 t5 Y1 e6 f8 [( _
stm32f10x_vector.c' ?) V4 R+ ?. _# Q
stm32f10x_it.c
stm32f10x_it.h/ _) F B/ |5 d* {# \
三个文件进行脱离固件库的修改。然后Include进main文件。
- @- K/ ?6 t3 S; D) g( s
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。
main.c头部6 W8 S `5 i. ]( a
#include "iostm32f10xxB.h"
#include "stm32f10x_it.c"
#include "stm32f10x_vector.c"
以下附件为开源代码。
5 B% d3 f7 c0 L) l. d5 `5 |2 L. E% G
! y5 v1 M6 Q" L( X0 d
不错啊
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
仔细研究了固件库,发现使用的代价,性能损失还是相当的大。
激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。
由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。, J" r( d: t" n; _
我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。. `" J; Q8 n& t9 b: Q" {- A
在此留个贴,慢慢记录无固件库的尝试过程。
IAR编译器传统的INC目录中包含有两个STM32的头文件
分别是
iostm32f10xxB.h2 g+ h9 K' K' f2 I9 F5 i0 \
iostm32f10xxE.h& S5 J. Z3 s. F
经过对比,E比B的头文件:APB 和 AHB 部分不同,增加了TIM5、6、7、8,UART4、5,ADC3,DMA2,SRAM、NOR,GPIOF,GPIOG,BKP,SPI3,FSMC,SDIO,DAC。5 s" B* H) u$ ]1 i5 P
# E7 X8 v' s5 e* l v+ Z- |
也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。
而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。
仔细研究了启动代码部分; S6 M. ]6 r, V/ B0 @
cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含)/ b1 y4 Z0 n8 a3 M
为了方便进行中断处理,将6 `! g. U( U3 Q- g
stm32f10x_vector.c9 j% s( J! `! g6 i9 D9 O' N! ^
stm32f10x_it.c / M: T( n# Z) S8 {! ?
stm32f10x_it.h9 S$ J+ V% z2 ?' N
三个文件进行脱离固件库的修改。然后Include进main文件。
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。4 J" e3 q; b3 j% d
# x7 d% g# p5 Z; L' S
main.c头部
#include "iostm32f10xxB.h"
#include "stm32f10x_it.c"4 S3 ? Q0 v/ w$ l C/ q. I: h% n. N
#include "stm32f10x_vector.c"0 l3 A& H4 L" U( i
以下附件为开源代码。
8 I# O8 z X5 n5 ~: l
原文出自哪里?
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!