你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
Stm32F103.h.txt
2009-12-20 10:53 上传
点击文件名下载附件
30.16 KB, 下载次数: 8
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
俺这里扩充了一个::直接的寄存器文件::- m4 \1 B" X6 E7 @7 z2 ^# Y' j4 h
搞单片机的人更喜欢直接的寄存器控制。
/*************************************************************
文件名: STM32F10X_My_lib.H
创建日期:2008-12-03 , v$ U3 Z* \6 V: s- F
创建者: 王官辅 3 P2 H1 T2 D* o6 N- B) n7 d
版本: REV1.0
***************************************************************/
//0x4002 2000 - 0x4002 23FF 闪存存储器接口///////////////////// -- ??
#define FLASH_ACR (*(volatile unsigned long *)0x40022000)
//0x4002 1000 - 0x4002 13FF 复位和时钟控制/////////////////////
#define RCC_CR (*(volatile unsigned long *)0x40021000) //时钟控制寄存器 * `/ Z: t4 L* |# {0 A0 o
#define RCC_CFGR (*(volatile unsigned long *)0x40021004) //时钟配置寄存器
#define RCC_CIR (*(volatile unsigned long *)0x40021008) //时钟中断寄存器
#define RCC_APB2RSTR (*(volatile unsigned long *)0x4002100C) //APB2 外设复位寄存器 * a* e5 l) L! M+ C: S0 c" w
#define RCC_APB1RSTR (*(volatile unsigned long *)0x40021010) //APB1 外设复位寄存器 * h: b4 ^( s. k7 I' h( O7 `9 [
#define RCC_AHBENR (*(volatile unsigned long *)0x40021014) //AHB外设时钟使能寄存器 ; z2 t6 e' q9 S3 m! v
#define RCC_APB2ENR (*(volatile unsigned long *)0x40021018) //APB2 外设时钟使能寄存器 c; D, q+ T# h) d1 ^% O4 c9 h
#define RCC_APB1ENR (*(volatile unsigned long *)0x4002101C) //APB1 外设时钟使能寄存器
#define RCC_BDCR (*(volatile unsigned long *)0x40021020) //备份域控制寄存器
#define RCC_CSR (*(volatile unsigned long *)0x40021024) //控制/状态寄存器
//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,放弃固件库的使用!
仔细研究了固件库,发现使用的代价,性能损失还是相当的大。
激进点说,速度更快的Cortex-M3在使用了固件库后,将比7S更慢。 f4 Q, y. {2 d" P& V
由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。% |) { ? ^) b" c3 _& S2 y
我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。1 Q' R' @* I& v( w, d7 `
在此留个贴,慢慢记录无固件库的尝试过程。
IAR编译器传统的INC目录中包含有两个STM32的头文件
分别是
iostm32f10xxB.h3 {: P4 ~, |' `) C) o- T
iostm32f10xxE.h
经过对比,E比B的头文件:APB 和 AHB 部分不同,增加了TIM5、6、7、8,UART4、5,ADC3,DMA2,SRAM、NOR,GPIOF,GPIOG,BKP,SPI3,FSMC,SDIO,DAC。# X% K1 B: O$ ?) y, P
! S: D3 u# C& B6 C/ {
也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。% g) c+ p" d. F$ }& f1 s, I- ~
而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。
9 x# C. a S9 Y3 z
仔细研究了启动代码部分
cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含)& I; U1 {& [4 p6 H3 H4 j- I. @) P5 _$ ^
为了方便进行中断处理,将/ r8 R* R2 G" Y A/ V- W1 P
stm32f10x_vector.c
stm32f10x_it.c ! ^7 v( i6 L) e) M) B) _2 s5 o
stm32f10x_it.h
三个文件进行脱离固件库的修改。然后Include进main文件。
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。
* K, v: j8 \* t6 ^ ~ _3 K9 v
main.c头部+ i: \) p% d) @& K m
#include "iostm32f10xxB.h"
#include "stm32f10x_it.c"
#include "stm32f10x_vector.c"
以下附件为开源代码。
$ h& C {1 |/ w8 m4 b
3 {: ^# L, i8 q3 ?# y, @' O
学习