【STM32】6. 存储器与寄存器介绍
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
假如我们要让STM32的GPIOC的第0管脚输出低电平,我 们怎么使用C语言来处理?
首先我们要知道GPIOC挂接在哪个总线上,需要知道其地 址,STM32总线地址如下:
普中STM32开发板带您进入ARM世界
所以使用C语言宏可以定义外设基地址: #define PERIPH_BASE ((unsigned int)0x40000000) 然后分别定义APB2总线基地址: #define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000) 然后还需要知道端口外设地址, 同样使用C语言宏定义其端口地址: #define GPIOC_BASE (APB2PERIPH_BASE + 0x1000)
用户分配,给存储器分配地址的过程称为存储器映射,如果 再分配一个地址就叫重映射(具体地址分配参考芯片数据手 册及中文参考手册)
普中STM32开发板带您进入ARM世界
普中STM32开发板带您进入ARM世界
普中STM32开发板带您进入ARM世界
2.什么是寄存器及寄存器映射 通过给有特定功能的内存单元起一个别名,这个别名就是
普中STM32开发板带您进入ARM世界
存储器与寄存器介绍
普中STM32开发板带您进入ARM世界
本讲主要内容
1.什么是存储器映射 2.什么是寄存器及寄存器映射 3.如何访问STM32寄存器内容
普中STM32开发板带您进入ARM世界
1.什么是存储器映射 存储器本身不具有地址信息,它的地址是由芯片厂商或
读取GPIOC端口所有引脚的电平(读 IDR 寄存器) unsigned int temp; temp = GPIOC_IDR;
我们所说的寄存器。给已经分配好地址的有特定功能的内存 单元起别名的过程就叫寄存器映射
普中STM32开发板带您进入ARM世界
3.如何访问STM32寄存器内容 我们知道寄存器就是一些有特定功能的内存单元,所以要
访问STM32寄存器也就是操作STM32的内存单元,根据C语言 指针的特点,可以使用指针来操作STM32的内存单元。
*(unsigned
#define GPIOC_BRR int*)(GPIOC_BASE+0x14)
*(unsigned
#define GPIOC_LCKR int*)(GPIOC_BASE+0x18)
*(unsigned
普中STM32开发板带您进入ARM世界
这些寄存器具体的功能可以参考STM32F1中文参考手册。
*(unsigned
#define GPIOC_IDR int*)(GPIOC_BASE+0x08)
*(unsigned
#define GPIOC_ODR int*)(GPIOC_BASE+0x0C)
*(unsigned
#define GPIOC_BSRR int*)(GPIOC_BASE+0x10)
普中STM32开发板带您进入ARM世界
控制 GPIOC 引脚 0 输出低电平(即通过BSRR 寄存器的 BR0 置 1) GPIOC_BSRR = (0x01<<(16+0));
控制 GPIOC 引脚 0 输出高电平(即通过BSRR 寄存器的 BS0 置 1) GPIOC_BSRR = 0x01<<0;
普中STM32开发板带您进入ARM世界
有了外设端口地址后,还需要知道GPIOC端口的寄存器地址, 如下表格:
普中STM32开发板带您进入ARM世界
同样使用C语言宏定义其端口寄存器地址:
#define GPIOC_CRL int*)(GPIOC_BASE+0x00)
*(unsign源自文库d
#define GPIOC_CRH int*)(GPIOC_BASE+0x04)
首先我们要知道GPIOC挂接在哪个总线上,需要知道其地 址,STM32总线地址如下:
普中STM32开发板带您进入ARM世界
所以使用C语言宏可以定义外设基地址: #define PERIPH_BASE ((unsigned int)0x40000000) 然后分别定义APB2总线基地址: #define APB2PERIPH_BASE (PERIPH_BASE + 0x00010000) 然后还需要知道端口外设地址, 同样使用C语言宏定义其端口地址: #define GPIOC_BASE (APB2PERIPH_BASE + 0x1000)
用户分配,给存储器分配地址的过程称为存储器映射,如果 再分配一个地址就叫重映射(具体地址分配参考芯片数据手 册及中文参考手册)
普中STM32开发板带您进入ARM世界
普中STM32开发板带您进入ARM世界
普中STM32开发板带您进入ARM世界
2.什么是寄存器及寄存器映射 通过给有特定功能的内存单元起一个别名,这个别名就是
普中STM32开发板带您进入ARM世界
存储器与寄存器介绍
普中STM32开发板带您进入ARM世界
本讲主要内容
1.什么是存储器映射 2.什么是寄存器及寄存器映射 3.如何访问STM32寄存器内容
普中STM32开发板带您进入ARM世界
1.什么是存储器映射 存储器本身不具有地址信息,它的地址是由芯片厂商或
读取GPIOC端口所有引脚的电平(读 IDR 寄存器) unsigned int temp; temp = GPIOC_IDR;
我们所说的寄存器。给已经分配好地址的有特定功能的内存 单元起别名的过程就叫寄存器映射
普中STM32开发板带您进入ARM世界
3.如何访问STM32寄存器内容 我们知道寄存器就是一些有特定功能的内存单元,所以要
访问STM32寄存器也就是操作STM32的内存单元,根据C语言 指针的特点,可以使用指针来操作STM32的内存单元。
*(unsigned
#define GPIOC_BRR int*)(GPIOC_BASE+0x14)
*(unsigned
#define GPIOC_LCKR int*)(GPIOC_BASE+0x18)
*(unsigned
普中STM32开发板带您进入ARM世界
这些寄存器具体的功能可以参考STM32F1中文参考手册。
*(unsigned
#define GPIOC_IDR int*)(GPIOC_BASE+0x08)
*(unsigned
#define GPIOC_ODR int*)(GPIOC_BASE+0x0C)
*(unsigned
#define GPIOC_BSRR int*)(GPIOC_BASE+0x10)
普中STM32开发板带您进入ARM世界
控制 GPIOC 引脚 0 输出低电平(即通过BSRR 寄存器的 BR0 置 1) GPIOC_BSRR = (0x01<<(16+0));
控制 GPIOC 引脚 0 输出高电平(即通过BSRR 寄存器的 BS0 置 1) GPIOC_BSRR = 0x01<<0;
普中STM32开发板带您进入ARM世界
有了外设端口地址后,还需要知道GPIOC端口的寄存器地址, 如下表格:
普中STM32开发板带您进入ARM世界
同样使用C语言宏定义其端口寄存器地址:
#define GPIOC_CRL int*)(GPIOC_BASE+0x00)
*(unsign源自文库d
#define GPIOC_CRH int*)(GPIOC_BASE+0x04)