标题:
对位操作,由别名转换到位的方法以及一些stm32硬件知识
[打印本页]
作者:
yuyang911220
时间:
2015-3-27 22:56
标题:
对位操作,由别名转换到位的方法以及一些stm32硬件知识
Stm32
相对于
51
复杂了太多,之前自己学习方法不对,所以导致花了时间也没什么效果,现在工作了自己也知道该怎么来更好学习了,准备花两周左右看一下
stm32
中文手册及固件库手册,然后再按照正点原子的不完全手册结合这开发板来学习,也记下学习笔记总结学习、加深记忆。
此次的学习是以
STM32F103RBT6
作为核心
MCU
的,其有
128kflash
、
20ksram
、
2
个
spi
、
3
个串口、
1
个
usb
、
1
个
can
、
2
个
12
位的
adc
、
rtc
以及
51
个可用的
IO
口。
笔记一
存储器及总线架构
1.Stm32
主系统由以下部分构成:
●
四个驱动单元:
─
Cortex??-M3
内核
DCode
总线
(D-bus)
,和系统总线
(S-bus)
─
通用
DMA1
和通用
DMA2
●
四个被动单元
─
内部
SRAM
─
内部闪存存储器
─
FSMC
─
AHB
到
APB
的桥
(AHB2APBx)
,它连接所有的
APB
设备。
2.
在每一次复位以后,所有除
SRAM
和
FLITF
以外的外设都被关闭,在使用一个外设之前,必须设置寄存器
RCC_AHBENR
来打开该外设的时钟。所以以后编程的时候要记住设置
RCC_AHBENR
来使能外设。
3.memory map
是很重要的,以前一直没有引起足够的重视,
程序存储器、数据存储器、寄存器和输入输出端口被组织在同一个
4GB
的线性地址空间内
。
4.
两个位段
(bit-band)
区,
下面的映射公式给出了别名区中的每个字是如何对应位带区的相应位的
(相当于51单片机中的P0口操作转换到P0^1的操作)
:
bit_word_addr = bit_band_base + (byte_offset
×
32)+ (bit_number
×
4)
其中:
bit_word_addr
是别名存储器区中字的地址,它映射到某个目标位。
bit_band_base
是别名区的起始地址。
byte_offset
是包含目标位的字节在位段里的序号
bit_number
是目标位所在位置
(0-31)
例子:
下面的例子说明如何映射别名区中
SRAM
地址为
0x20000300
的字节中的位
2
:
0x22006008= 0x22000000 + (0x300
×
32)+ (2
×
4).
对
0x22006008
地址的写操作与对
SRAM
中地址
0x20000300
字节的位
2
执行读
-
改
-
写操作有着相同的效果。
5.boot0
和
boot1
可以设置
stm32
启动模式
启动模式选择引脚
启动模式
说明
(
BOOT1BOOT0
)
X 0
主闪存存储器
主闪存存储器被选为启动区域
0 1
系统存储器
系统存储器被选为启动区域
1 1
内置
SRAM
内置
SRAM
被选为启动区域
当使用
ISP
下载的时候,选择第三种启动方式。
笔记二
CRC
计算单元
对于本章,不知道要用到什么地方,不过等以后遇到再说。
CRC
用两个数据寄存器和一个控制寄存器,一个数据寄存器用来做计算寄存器,对其写操作作为输入寄存器,输入计算数据;对其读操作作为输出寄存器,输出计算结果。另一个数据寄存器只有低
8
位有效,可以用来寄存数据;控制寄存器只有
0
位有效,作为
reset
位,只能写
1
,硬件自动清零。
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0