你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
Stm32F103.h.txt
2009-12-20 10:53 上传
点击文件名下载附件
30.16 KB, 下载次数: 8
意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器。关注该话题即可发布文章!
RE:【心得】用传统方法开发STM32,放弃固件库的使用!
俺这里扩充了一个::直接的寄存器文件::
搞单片机的人更喜欢直接的寄存器控制。
/************************************************************* 3 R1 i/ Z' L4 ]+ n, I1 V& H
文件名: STM32F10X_My_lib.H
创建日期:2008-12-03 ' v J. C+ L `5 m! j* M" c
创建者: 王官辅 % |$ s- \" ?) U) h0 u. Z. N: r
版本: REV1.0 ( M, U( B: H% s. }! X& u% l
***************************************************************/ 9 c7 x4 B3 ]3 h( D8 x) g! ^
//0x4002 2000 - 0x4002 23FF 闪存存储器接口///////////////////// -- ??
#define FLASH_ACR (*(volatile unsigned long *)0x40022000)3 A5 H- \; C% [( P" Y# D
//0x4002 1000 - 0x4002 13FF 复位和时钟控制/////////////////////
#define RCC_CR (*(volatile unsigned long *)0x40021000) //时钟控制寄存器 - r u% {6 w0 B+ u5 i% r
#define RCC_CFGR (*(volatile unsigned long *)0x40021004) //时钟配置寄存器 ! v2 i- o" o$ H8 L; X0 m
#define RCC_CIR (*(volatile unsigned long *)0x40021008) //时钟中断寄存器
#define RCC_APB2RSTR (*(volatile unsigned long *)0x4002100C) //APB2 外设复位寄存器
#define RCC_APB1RSTR (*(volatile unsigned long *)0x40021010) //APB1 外设复位寄存器 # d$ J) A7 X4 D1 P: `- a3 [
#define RCC_AHBENR (*(volatile unsigned long *)0x40021014) //AHB外设时钟使能寄存器
#define RCC_APB2ENR (*(volatile unsigned long *)0x40021018) //APB2 外设时钟使能寄存器 % x0 J9 I. ?1 E$ @$ a$ C, ^' R3 n R* k
#define RCC_APB1ENR (*(volatile unsigned long *)0x4002101C) //APB1 外设时钟使能寄存器 & N0 u5 I6 ?2 R' m; y3 `. x. s. Z
#define RCC_BDCR (*(volatile unsigned long *)0x40021020) //备份域控制寄存器 0 i+ @$ ?6 u' J, F( P/ ]7 v$ h0 p
#define RCC_CSR (*(volatile unsigned long *)0x40021024) //控制/状态寄存器. a k6 ^4 i* e: X. n' c
//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更慢。
由于还没有完全研究过固件库的全部代码,不能完全下这个结论,但是从部分情况看,基本上脱不开这个顽疾。% f3 Z7 @8 g; l/ v; i2 P1 l
很想指责这个固件库的开发和设计者,完全丧失了M3内核的优势,浪费太多了。1 v$ ^$ t+ \& G" W$ C+ {8 w% G
我要尝试进行无固件库的开发,这个才是正真的传统开发手段,也许复杂一点,但我相信会很好。3 t( }3 ~1 l b0 l
在此留个贴,慢慢记录无固件库的尝试过程。
# G8 R: R2 Z! e5 F, b, v) Q
IAR编译器传统的INC目录中包含有两个STM32的头文件! Y5 T2 V4 ^ l0 p
分别是
iostm32f10xxB.h
iostm32f10xxE.h3 C% r' W; x! V# t
经过对比,E比B的头文件:APB 和 AHB 部分不同,增加了TIM5、6、7、8,UART4、5,ADC3,DMA2,SRAM、NOR,GPIOF,GPIOG,BKP,SPI3,FSMC,SDIO,DAC。5 a, t6 V; j: b+ {5 J. K
! }- u1 c" v4 X& C T. B. R
也就是说 iostm32f10xxB.h 文件,适用于STM32F10xx6、STM32F10xx8、STM32F10xxB。, P9 {% F& c8 g; V. L2 ]* I
而 iostm32f10xxE.h 文件,适用于STM32F10xxC、STM32F10xxD、STM32F10xxE。
* t* P; T( A) X4 W: t/ T
仔细研究了启动代码部分' o H8 t3 ~# E
cortexm3_macro.s 文件可以不经修改,包含进项目中。(请有项目管理的ADD加入,不要用include包含)
为了方便进行中断处理,将 L# ]' K% |/ V
stm32f10x_vector.c* Z& j; t$ D8 S6 k
stm32f10x_it.c
stm32f10x_it.h
三个文件进行脱离固件库的修改。然后Include进main文件。' u% i* a, W- G* v8 S; ^
* k4 H8 A: C7 Y! V! H
好了,进行main文件的编写吧,已经不需要固件库了,对着 《STM32F10x参考手册》逐个来修改寄存器吧。5 P0 `7 Y; f! Y
main.c头部- E% y7 N* S! E' z# t+ t
#include "iostm32f10xxB.h"6 w5 t$ ~0 a" Q( h$ n8 J% \, G, s
#include "stm32f10x_it.c"& B3 b( i# D' Y0 M1 \: a* T
#include "stm32f10x_vector.c"
以下附件为开源代码。" O! h, w0 r" |+ O3 o/ l
学习2 g1 M0 g# m# e0 i# X