你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
Stm32F103.h.txt
2009-12-20 10:53 上传
点击文件名下载附件
30.16 KB, 下载次数: 8
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
俺这里扩充了一个::直接的寄存器文件::
搞单片机的人更喜欢直接的寄存器控制。
/************************************************************* , H& N1 @) U; u4 ]
文件名: STM32F10X_My_lib.H * A$ Z# O8 S3 g1 M! t( E
创建日期:2008-12-03
创建者: 王官辅 9 l2 @# D, h3 f( r( k& l3 K2 r
版本: REV1.0 # n* \/ B, x$ f3 x' X2 S' j
***************************************************************/
//0x4002 2000 - 0x4002 23FF 闪存存储器接口///////////////////// -- ??3 ~3 j; R3 E3 J
#define FLASH_ACR (*(volatile unsigned long *)0x40022000), p% v! K. e( B8 t( q
//0x4002 1000 - 0x4002 13FF 复位和时钟控制///////////////////// 0 e0 Y9 R( e( g0 K5 i- z! {
#define RCC_CR (*(volatile unsigned long *)0x40021000) //时钟控制寄存器 Y8 g' D. ~5 a& c' p
#define RCC_CFGR (*(volatile unsigned long *)0x40021004) //时钟配置寄存器
#define RCC_CIR (*(volatile unsigned long *)0x40021008) //时钟中断寄存器 , d& z+ l' g6 R) O7 s
#define RCC_APB2RSTR (*(volatile unsigned long *)0x4002100C) //APB2 外设复位寄存器 # v# Z( h' d0 W% m; y6 D
#define RCC_APB1RSTR (*(volatile unsigned long *)0x40021010) //APB1 外设复位寄存器
#define RCC_AHBENR (*(volatile unsigned long *)0x40021014) //AHB外设时钟使能寄存器
#define RCC_APB2ENR (*(volatile unsigned long *)0x40021018) //APB2 外设时钟使能寄存器 3 {' h% c7 h) {: L+ g/ m. X
#define RCC_APB1ENR (*(volatile unsigned long *)0x4002101C) //APB1 外设时钟使能寄存器 - Z5 ^8 E1 R/ `- D* f+ F) \
#define RCC_BDCR (*(volatile unsigned long *)0x40021020) //备份域控制寄存器 1 Z" B! D6 X$ \8 [" x3 f5 h
#define RCC_CSR (*(volatile unsigned long *)0x40021024) //控制/状态寄存器# N. {0 v2 o5 c9 u1 {
//0x4002 0000 - 0x4002 03FF DMA//////////////////////////////// 下载全文件吧。。。
Stm32F103.h.txt
2009-12-20 10:53 上传
点击文件名下载附件
30.16 KB, 下载次数: 8
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
不过不使用库的话个人的工作量会比较大啊
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
回复:【心得】用传统方法开发STM32,放弃固件库的使用!
仔细研究了固件库,发现使用的代价,性能损失还是相当的大。2 ~: @/ C' j- x2 D1 s0 |3 a/ x& n8 F
激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。1 ?" Y I5 C4 w8 M1 o2 R$ f9 t
由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。2 H+ f+ @& Y8 D8 R& B+ T% T
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。3 q2 w+ o3 e7 I! R
我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。
在此留个贴,慢慢记录无固件库的尝试过程。 }! H" V! u" h) B, Z, D
9 X4 j% [& T9 W9 p
IAR编译器传统的INC目录中包含有两个STM32的头文件
分别是
iostm32f10xxB.h3 v$ u! T# N. a* s
iostm32f10xxE.h; V: L$ q+ D. C1 M$ f c' B
经过对比,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。& g8 x9 u' _/ [- d" Z) k- Z# U
而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。/ V: \; G' g) n" @
* g, `1 X+ W& A8 |
仔细研究了启动代码部分9 |2 U$ B0 b4 X# p- X) m5 ]% j
cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含)' G: N. v4 K. q) c7 I x
J$ u* c: d/ L3 r# k( e) a
为了方便进行中断处理,将
stm32f10x_vector.c1 f: e: F/ q7 I7 W1 U; Q+ ]5 ^
stm32f10x_it.c 5 S) R2 i5 q1 |( F
stm32f10x_it.h0 Q1 t/ G5 J8 E( l) `
三个文件进行脱离固件库的修改。然后Include进main文件。
/ r# f3 P1 G$ L) {
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。
main.c头部: C" e1 s$ t" ]
#include "iostm32f10xxB.h"4 p8 v8 R, M* S1 `( w! M" ^
#include "stm32f10x_it.c"" R8 Q6 B6 {% g7 j- C, ^
#include "stm32f10x_vector.c"
以下附件为开源代码。( a- k z( _! L4 v* N
: L' R2 F& k( j" i$ N, Q
0 \* Q2 t# f& F5 j6 M( k+ u
学习7 N: i( x0 ]) _1 c! t