多语言展示
当前在线:1106今日阅读:195今日分享:41

如何访问STM32开发学习板寄存器内容

今天小编来教大家来访问STM32开发学习板寄存器内容,这里主要讲的是如何找到该寄存器的地址,并如何使用C语言来表达。
工具/原料

STM32F407ZGT6开发学习板

方法/步骤
1

今天小编从一个例子入手来讲如何访问STM32开发学习板寄存器,所谓的访问寄存器也就是说要找到寄存器,在单片机中寄存器都是以地址所表示的,所有访问寄存器必须找到对应寄存器的地址,接下来从一个例子入手:STM32的GPIOF的第9管脚输入低电平,下图上寄存器的地址最高级分配,由于GPIOF属于片上外设,所有在Block2上,所以地址就是在Block2的地址范围中,先使用C语言定义一下Block2基地睡良址:#define  PERIPH_BASE  ((unsigned int)0x40000000)如下图:

2

然后再来看一下GPIOF在Block2的哪个总线上,打开STM32F4xx中文参考手册中查找到存储器组织结构查看STM32F4xx寄存器边界地址,下图中红色箭头指示位置可以看到GPIOF输入AHB1总线,如下图:

3

然后定义一下各个总线的地址:#define APB1PERIPH_BASE PERIPH_BASE#define APB2PERIPH_BASE (PERIPH_BASE + 0x)#define AHB1PERIPH_BASE (PERIPH_BASE + 0x)#define AHB2PERIPH_BASE (PERIPH_BASE + 0x10000000)如下图:

5

下图中是寄存器相对于外设地址偏移,我们设置TM32的GPIOF的第9管脚输入低电平,就是要复位,这里需要设置BSRR(置位、复位寄存器),如下图:

6

继续查看STM32F4xx中文参考手册查找到GPIO端口置位/复位寄存器,然后偏移地址为18,定义一下BSRR寄存器地址: #define GPIOF_BSRR (GPIOF_BASE+0x18)从下图中可以看出BSRR寄存器有32位,对应GPIOF的16个端口,然后16位用于置位、16位用于复位如下图:

7

下图中就是复位的C语言表示,GPIOF_BSRR是寄存器地址宏定义,C语言会认为这只是个立即趣段数,所以使用(unsigned int*)这样来强制将这个GPIOF_BSRR寄存器地址宏定义转换成地址,然后前面再次加入一个【*】号,这个表示将对应地址的内容进行设置,后面的(0x01<<(16+9))表示将1值赋予的第16+9位,这样写的好处是便于阅读,如下图:

8

下图中的是GPIOF的第9管脚的置位C语言表示沫之光,如下图:

注意事项
1

个人观点,仅供参考。

2

感谢阅读。

推荐信息