[导读]在单片机中我们经常需要访问某个指定的寄存器或者到指定的RAM地址,在本文为简单描述,下文所说的存储器可指:寄存器,RAM等。01宏定义:定义一个宏,将地址值转化为C指针,然后取这个指针指向的内容,这样就可以访问存储了,代码如下:#defineSDA_DIR_REG*(__IOui...
在单片机中我们经常需要访问某个指定的寄存器或者到指定的RAM地址,在本文为简单描述,下文所说的存储器可指:寄存器,RAM等。0
1宏定义:
定义一个宏,将地址值转化为C指针,然后取这个指针指向的内容,这样就可以访问存储了,代码如下:
#define SDA_DIR_REG *(__IO uint32_t *)SDA_MOD_OFFSET 分析:
(__IOuint32_t *)SDA_MOD_OFFSE 是强制类型转换强制转换为指针*(__IOuint32_t *)SDA_MOD_OFFSET 取这个指针里内容。这是一种很简单实用的方法,对于访问某个寄存器是很长好用的。举例:
*(__IOuint16_t *) (((uint32_t)0x60020000) ) (((uint32_t)0x60020000))是32位的IO地址(物理地址,硬件上设定的,不可修改) *(__IO uint16_t*)是读取该地址的参数值,其值为16位参数。
实际上是读取0x60020000寄存器的参数,或者可以说是这个IO口现在的状态。
0
2结构体:
将存储器定义为一种数据结构,然后定义一个指向结构体的指针。
符合CMSIS的设备驱动库就是这样做的
typedef struct{ __IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */ __IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */ __IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */ __IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */ __IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */ __IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */ __IO uint16_t BSRRL; /*!< GPIO port bit set/reset low register, Address offset: 0x18 */ __IO uint16_t BSRRH; /*!< GPIO port bit set/reset high register, Address offset: 0x1A */ __IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */ __IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */} GPIO_TypeDef;
#define PERIPH_BASE ((uint32_t)0x40000000)#define AHB1PERIPH_BASE (PERIPH_BASE 0x00020000)#define GPIOC_BASE (AHB1PERIPH_BASE 0x0800)#define GPIOC ((GPIO_TypeDef *)GPIOC_BASE) 大家看着上面的代码应该很熟悉,这就是我在ST给的标准外设库中复制的,这也是CMSIS标准的驱动发方式。
我在《STM32驱动LCD实战》文中就是使用这种方式驱动操作LCD。代码如下。
typedef struct{ uint8 LCD_CMD;//用于LCD命令操作 uint8 LCD_DATA;//用于LCD数据操作} LCD_TypeDef;#define LCD_BASE ((uint32_t)(0x60000000 | 0x0000FFFF))#define LCD ((LCD_TypeDef *) LCD_BASE) 详解如下:
LCD->LCD_CMD :是地址((uint32_t)(0x60000000| 0x0000FFFF))上的数据LCD->LCD_DATA:是地址((uint32_t)(0x60000000| 0x00010000))上的数据这种驱动方式更加简洁,代码结构化。个人也更喜欢这种方式。0
3对比
方法1:简单,但是生成代码效率低,因为寄存器的地址值都会被存储为常量,代码体积会变大。由于需要访问的更多寄存器来设置地址值,运行速度会更低。不过,若外设控制代码值操作1个寄存器,效率就和方法2相同了方法2:允许外设中的多个寄存器共用一个常量作为基地址。访问每个寄存器时可以用立即数偏移寻址模式。
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
无论您是在研究如何使用 10GigE 还是寻求所需考虑事项的建议,本文均提供有实践,帮助确保单相机 10GigE 视觉系统设置顺利并拥有良好性能。 我们列出了主机系统配置、布线和相机设置的实践。
关键字:
视觉系统
CPU
存储器
存储器是计算机系统中的关键组件,负责存储程序指令和数据,是实现计算和信息处理的基础。根据其工作原理、存储容量、访问速度、稳定性以及持久性等诸多特性,存储器可以被细分为多个类别。本篇文章将详细介绍存储器的主要分类,并探讨各...
关键字:
存储器
RAM
Apr. 03, 2024 ---- 4月3日7时58分在台湾花莲县海域(北纬23.81度,东经121.74度)发生7.3级地震,震源深度12千米。根据全球市场研究机构TrendForce集邦咨询于第一时间调查各厂受损及...
关键字:
存储器
晶圆代工
2024年3月26日,中国-- 服务多重电子应用领域、全球排名前列的半导体公司意法半导体(STMicroelectronics,简称ST;纽约证券交易所代码:STM)发布了一项基于 18 纳米全耗尽绝缘体上硅(FD-SO...
关键字:
处理器
微控制器
存储器
该产品线提供了并行SRAM的低成本替代方案,容量高达 4 Mb,具有143 MHz SPI/SQI™通信功能
关键字:
SRAM
存储器
MCU
【2024年1月15日,德国慕尼黑讯】卫星上的边缘计算和推理可实现近乎实时的数据分析和决策制定。随着联网设备的数量及其产生的数据量不断增长,这一点变得愈发重要。为满足太空应用中的这些高性能计算需求,英飞凌科技股份公司(F...
关键字:
存储器
嵌入式
边缘计算
可编程逻辑控制器(PLC,Programmable Logic Controller)是一种专为工业环境设计的数字电子系统。它使用可编程的存储器,内部存储程序,执行逻辑运算、顺序控制、定时、计数和算术操作等面向用户的指令...
关键字:
可编程逻辑控制器
数字电子系统
存储器
Jan. 11, 2024 ---- 根据TrendForce集邦咨询表示,全球受高通胀冲击,2023年笔电市场需求欲振乏力,全年出货量仅1.66亿台,年减10.8%,但衰退幅度较2022年收敛。
关键字:
AI
笔电
存储器
可编程逻辑控制器(PLC)是一种工业自动化控制装置,它采用可编程的存储器来存储指令,执行逻辑运算、顺序控制、计数、定时和算术操作等面向用户的指令,并通过模拟或数字输入/输出控制各种类型的机械或生产过程。PLC的基本原理可...
关键字:
可编程逻辑控制器
自动化
存储器
Jan. 8, 2024 ---- TrendForce集邦咨询表示,2024年第一季DRAM合约价季涨幅约13~18%,其中Mobile DRAM持续领涨。目前观察,由于2024全年需求展望仍不明朗,故原厂认为持续性减...
关键字:
DRAM
存储器
智能手机
2023年12月20日,中国上海 — 全球存储器解决方案领导者铠侠今天宣布已经开始大规模生产2TB microSDXC存储卡,这对于智能手机用户、内容创作者和移动游戏玩家来说是一项突破性的进展。EXCERIA PLUS...
关键字:
存储器
存储卡
Dec. 19, 2023 ---- 据TrendForce集邦咨询预估,2024年第一季Mobile DRAM及NAND Flash(eMMC/UFS)均价季涨幅将扩大至18~23%。同时,不排除在寡占市场格局或是品牌...
关键字:
DRAM
eMMC
存储器
一直以来,STM32都是大家的关注焦点之一。因此针对大家的兴趣点所在,小编将为大家带来STM32的相关介绍,详细内容请看下文。
关键字:
STM3
FSMC
存储器
2023年11月9日,安谋科技(中国)有限公司(以下简称“安谋科技”)正式发布“山海”S20F安全解决方案。作为一款面向智能汽车SoC的HSM(硬件安全模块)产品,“山海”S20F可提供包括CPU处理器、对外通信单元、存...
关键字:
智能汽车
CPU处理器
存储器
Nov. 3, 2023 ---- 全球市场研究机构TrendForce集邦咨询今(3)日举行「2024年集邦拓墣科技产业大预测」,本次论坛内容节录如下:
关键字:
AI
服务器
存储器
近日,第11届EEVIA年度中国硬科技媒体论坛暨产业链研创趋势展望研讨会在深圳隆重开启。兆易创新存储器事业部产品市场经理张静受邀出席,以“持续开拓,兆易新一代存储产品助力行业创新”为题,分享了兆易创新在嵌入式存储器领域的...
关键字:
存储
嵌入式
存储器
电源模块是可以直接贴装在印刷电路板上的电源供应器,其特点是可为专用集成电路(ASIC)、数字信号处理器 (DSP)、微处理器、存储器、现场可编程门阵列 (FPGA) 及其他数字或模拟负载提供供电。
关键字:
电源模块
微处理器
存储器
HT37F290提供16-pin NSOP以及28-pin SSOP两种封装类型,内建64K×16 Flash 程序存储器用来储存程序/音色/音效等数据,不需再外加存储器。Audio Workshop开发平台与开发板可协...
关键字:
MCU
存储器
MCU是许多嵌入式子系统设计中的关键元素,但实现必要的系统功能通常需要额外的功能。也许基于MCU的设计中最受限制的元素之一是片上存储器。越来越多的应用程序需要比MCU可用的系统内存更多的系统内存。特别是,先进的人机界面(...
关键字:
MCU器件
存储器
9月21日-22日,GMIF2023全球存储器行业创新论坛在深圳隆重召开。本次论坛以“探索·前行 共生·创赢”为主题,共设立存储器行业创新论坛和存储器行业生态论坛两大论坛,论坛汇聚存储产业链上下游代表企业及行业大咖,共同...
关键字:
存储器