1、存储单元一般应具有存储数据囷读写数据的功能,一般以8位二进制作为一个存储单元,也就是一个字节.每个单元有一个地址,是一个整数编码,可以表示为二进制整数
2、stm32是32位單片机stm32,说明基本的寄存器是32位的4字节。内存地址需要4位
3、基址也就是基础地址最开始的地址,这个查看芯片手册是人家规定的。
4、偏移即偏移地址,一般是正整数也是增加的数字。比如基址是10偏移是4,地址就是10+4=14.
下面STM32F10xxx中内置外设的起始地址
每个外设的起始地址就是,每个外设的基址了当然这个基址也可以再分解为基址和偏移地址。
比如GPIOB的起始地址是0X,可以分解为
看看其中的CRL寄存器偏移昰0x00 。如果要找GPIOB的CRL寄存器则起始地址0X+偏移0x00
我就让我的开发板的一个LED闪烁。
现在要让GPIOB0输出低电平灯亮,高电平灯灭。
stm32使用一个外设得使能相应的时钟即RCC。
我现在要使用GPIOB0首先使能GPIOB的时钟,时钟也是寄存器控制的啊查上面的地址表,RCC的基址是
再设置GPIOB的IO模式CRL寄存器控制。(CRL控制低8位引脚IO的模式CRH控制高八位IO的模式,四位控制一个io的模式一个寄存器控制8个引脚,共32位一个寄存器)
设置GPIOB的电平高低,ODR寄存器控制(直接对相应的引脚写入1或者0就行,1高电平,0低电平)
工程文件结构:起始文件,头文件源文件
/* 片上外设基地址 */
/* GPIOB寄存器哋址,强制转换成指针 */
/* RCC的AHB1时钟使能寄存器地址强制转换成指针 */
SystemInit()是为了骗过启动文件,这里应该配置时钟树下次再讲。 对于那些逻辑运算不懂看前面的stm32编程要点。
//清空控制PB0的端口 //配置PB0为通用推挽输出速度为50M