对位操作,由别名转换到位的方法以及一些stm32硬件知识
- UID
- 1029342
- 性别
- 男
|
对位操作,由别名转换到位的方法以及一些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,硬件自动清零。
|
|
|
|
|
|