TM4C123-HWREG()及外设寄存器地址说明

2023-05-16

参考文件:

  • ti\TivaWare_C_Series-2.1.4.178\inc\hw_types.h
  • ti\TivaWare_C_Series-2.1.4.178\inc\hw_memmap.h
  • tm4c123gh6pz datasheet

TIVA程序的编写中常看到这样的操作,比如HWREG((UART0_BASE+UART_O_CTL)或者HWREG(0x12345678)这样的形式

HWREG()的意思就是操作硬件寄存器的意思,里面的参数是tm4c芯片的硬件外设寄存器地址,可以在芯片手册memory地址分配找到。HWREG()是在hw_types.h中定义的,对应的还有其他几个函数,原型如下所示:

// Macros for hardware access, both direct and via the bit-band region.

//

//*****************************************************************************

#define HWREG(x) \

        (*((volatile uint32_t *)(x)))

#define HWREGH(x) \

        (*((volatile uint16_t *)(x)))

#define HWREGB(x) \

        (*((volatile uint8_t *)(x)))

#define HWREGBITW(x, b) \

        HWREG(((uint32_t)(x) & 0xF0000000) | 0x02000000 | \

              (((uint32_t)(x) & 0x000FFFFF) << 5) | ((b) << 2))

#define HWREGBITH(x, b) \

        HWREGH(((uint32_t)(x) & 0xF0000000) | 0x02000000 | \

               (((uint32_t)(x) & 0x000FFFFF) << 5) | ((b) << 2))

#define HWREGBITB(x, b) \

        HWREGB(((uint32_t)(x) & 0xF0000000) | 0x02000000 | \

               (((uint32_t)(x) & 0x000FFFFF) << 5) | ((b) << 2))

HWREG的参数是tm4c芯片的硬件外设寄存器地址.

附: tm4c123gh6pz 寄存器地址
手册2.4节 (92页)
在这里插入图片描述
本表格写明了每个外设的寄存器起始地址
对应于相应外设的每个寄存器,又有相应的地址偏移及寄存器描述(见下文)
在这里插入图片描述
The Code, SRAM, and external RAM regions can hold programs. However, it is recommended that
programs always use the Code region because the Cortex-M4F has separate buses that can perform
instruction fetches and data accesses simultaneously.

在手册中每一个外设章节,均有Register Map
例:
在这里插入图片描述
在这里插入图片描述
上图所示的寄存器描述中, 每个外设的寄存器都写明了外设基地址和偏移量
在这里插入图片描述

以ADCRIS寄存器操作为例,函数表示为:

HWREG(0x40038000+0x00000004)

在 hw_adc. h中,对相应的寄存器地址均进行了宏定义
#define ADC_O_ACTSS 0x00000000 // ADC Active Sample Sequencer
#define ADC_O_RIS 0x00000004 // ADC Raw Interrupt Status
……

在hw_memmap.h中,对外设寄存器的基地址进行了宏定义
#define ADC0_BASE 0x40038000 // ADC0
#define ADC1_BASE 0x40039000 // ADC1
……

所以
HWREG(ADC0_BASE+ADC_O_RIS) 即与上式表示相同的意义。

综上所述:HWREG 就是用来取外设寄存器地址

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TM4C123-HWREG()及外设寄存器地址说明 的相关文章

  • 在树莓派上将现有系统复制到新存储卡(转载 )

    在树莓派上将现有系统复制到新存储卡 xff08 转载 xff09 http www eeboard com bbs thread 39663 1 1 html 最初 xff0c 使用树莓派的时候 xff0c 也许也只是为了新鲜 xff0c
  • 【c/c++】单链表、头指针、头结点、首元节点

    链表中第一个结点的存储位置叫做头指针 xff0c 那么整个链表的存取就必须是从头指针开始进行了 之后的每一个结点 xff0c 其实就是上一个的后继指针指向的位置 这里有个地方要注意 xff0c 就是对头指针概念的理解 xff0c 这个很重要
  • VINS-mono学习总结

    Vins mono是一个后端基于非线性优化的 单目与IMU紧耦合的融合定位算法 整体 xff1a 1 预处理模块 视觉 xff1a 特征点提取与追踪 IMU xff1a 惯性解算与误差状态分析 计算预积分量 2 初始化模块 xff08 旋转
  • Fast-lio个人总结

    Lidar第一帧作为基坐标 1 lidar原始数据预处理默认不提取特征 xff0c 对原始数据间隔式 xff08 间隔3个点 xff09 降采样提取 2 imu初始化 惯性解算 误差分析 状态 协方差预测 3 Lidar与imu时间状态对齐
  • 在rviz中使用键盘控制burger

    启动语句 roslaunch turtlebot3 fake turtlebot3 fake launch 启动rviz 话题通信 roslaunch turtlebot3 teleop turtlebot3 teleop key laun
  • shell脚本中=左右的空格问题

    赋值语句等号两边不能有空格 xff1a i 61 1 或i 61 i 43 1 而字符串比较 xff0c 等号两边必须有空格 if a 61 b 比较时 xff0c if a xxx b 中括号前后一定要加空格否则会报错xxx 61 eq
  • freertos.axf: Error: L6218E: Undefined symbol xTaskGetSchedulerState (referred from delay.o).

    今天移植了一下FreeRTOS xff0c 出现了freertos axf Error L6218E Undefined symbol xTaskGetSchedulerState referred from delay o xff0c 这
  • vnc桌面配置及黑屏问题解决

    一 vnc桌面配置 登入需要远程帐号下修改 vnc xstartup 如配置root远程桌面 vi vnc xstartup 原内容如下 xff1a xff3b x etc vnc xstartup xff3d amp amp exec e
  • 华清嵌入式--入学篇

    当初在学习嵌入式的时候 xff0c 就知道嵌入式门槛高 xff0c 需要的知识比较多 工作了4年多时间 xff0c 确实感觉还是刚入门的感觉 xff0c 焊接 调试 原理图 PCB 模电 数电 c语言 数据结构 单片机 linux等知识比价
  • 20.华清嵌入式--数据结构入门

    从今天开始正式开始学习数据结构与算法 从今天开始正式开始学习数据结构与算法 从上面的框图也可以从整体上把握数据结构的关键知识点 xff0c 不管是简单的顺序表还是栈 xff0c 树等 xff0c 学习的方法都是一样的他们的操作也都是无非都是
  • 35.Linux应用层开发---线程

    一 线程的概念和使用 1 线程的概念 为了进一步减少处理器的空转时间 xff0c 支持多处理器以及减少上下文切换开销 xff0c 进程在演化中出现了另外一个概念线程 它是进程内独立的一条运行路线 xff0c 是内核调度的最小单元 xff0c
  • 36.Linux 应用层开发--进程间通讯

    最近因为项目原因耽误了一些时间 xff0c 导致进程间的通讯一直没有来的及学习及整理 在我们之前学过进程相关的概念和操作 xff0c 还学习了轻量级的进程的线程 xff0c 在我们之后的开发和面试中 xff0c 多线程 xff0c 多进程开
  • 树莓派4 ubuntu22.04LTS整合Intel Realsense深度相机

    树莓派4 ubuntu22 04LTS整合Intel Realsense深度相机 文章目录 树莓派4 ubuntu22 04LTS整合Intel Realsense深度相机前言一 为什么不使用Docker安装或使用官方教程安装 xff1f
  • 串口打印调试信息(干货)

    printf重定向到串口 上代码 xff0c 这里用到的是hal库 xff0c 标准库改以下函数就行 span class token macro property span class token directive keyword in
  • 相电流与线电流有什么区别

    相电流和线电流的区别 xff0c 主要看负载的连接方法 xff0c 如果是星型接法 xff0c 相电流和线电流相同 xff0c 线电压是相电压的开方3倍 如果负载是三角形接法 xff0c 那么 xff0c 线电流是相电流的开方3倍 xff0
  • STM32f103c8t6的定时器配置定时中断

    span class token comment 时间计算公式 span Tout span class token operator 61 span xff08 xff08 arr span class token operator 43
  • 集成学习方法

    概述 集成学习 xff0c 是将几个泛化能力差的模型相结合 xff0c 组成泛化能力强的模型 常见的做法就是分别训练几个模型 xff0c 然后再将多个模型的输出组合 xff0c 形成最终输出 xff0c 也称为模型平均的效果 类似的策略都称
  • (Java)常规技术面试题

    Java基础部分 1 Java 的 一次编写 处处运行 如何实现 xff1f JAVA之所以能实现 一次编译 xff0c 到处运行 xff0c 是因为JAVA在每个系统平台上都有 JAVA虚拟机 xff08 JVM xff09 xff0c
  • ESP8266烧写固件提示等待上电

    环境 供电电压 xff1a span class token number 5 span V 模块 xff1a 正点原子ATK span class token operator span ESP span class token oper
  • 嵌入式面试刷题

    1 表示一年有多少秒 define SECONDS PER YEAR 606024 365 UL 2 写一个标准宏 MIN define MIN A B A lt 61 B A B 3 指针数组 int a 10 优先级高所以是a 10 数

随机推荐

  • ubuntu18配置ftp

    安装ftp 修改文件 sudo gedit etc vsftpd conf span class token comment Example config file etc vsftpd conf span span class token
  • win11切换win10资源管理器

    HKEY LOCAL MACHINE SOFTWARE Microsoft Windows CurrentVersion Shell Extensions 右键 Blocked 选择 新建 字符串值 名称为 e2bf9676 5f8f 43
  • 联想小新pro13笔记本外接显示屏没信号

    step1 关机 step2 拔下电源 step3 安住 fn 43 s 43 v键 xff0c 开机 xff08 开不了机 xff0c 我重复了几次 xff09 step4 插电源开机 xff0c 扩展屏幕正常
  • C51内存类型

    bdata bdata内存类型只能用于声明变量 您不能声明bdata函数 该存储器使用8位地址直接访问 xff0c 是8051的片内位可寻址RAM 用bdata类型声明的变量是位可寻址的 xff0c 可以用位指令读写 code 代码存储器类
  • MQTT问题

    是否存在c gt ping outstanding 61 1 的后一秒就触发TimerIsExpired amp c gt last received span class token keyword int span span class
  • Failed to start apt-news.service Failed to start esm-cache.service

    luozw 64 luozw vpc etc apt apt conf d span class token function sudo span span class token function apt get span update
  • stm中断优先级理解+抢占优先级和相应优先级

    一 抢占优先级比子优先级的优先权更高 xff0c 这意味抢占优先级更高的中断会先执行 xff0c 而不管子优先级的优先权 xff0c 数值越低优先级越高 二 同理 xff0c 如果抢占优先级相同 xff0c 那么就会比较子优先级 xff0c
  • Realsense D435基于ROS跑通ORBSLAM2

    Realsense D435基于ROS跑通ORBSLAM2 系统ubuntu16 04 ROS Kinetic 相机RealsenseD435 SLAM系统 xff1a ORBSLAM2 一 安装Realsense的SDK 官方链接 htt
  • Qt学习:综合案例应用-上(翻金币小游戏)

    本案例是对Qt的基本控件 xff0c 事件处理 xff0c 资源文件的使用等知识的综合应用 以及一些开发思想和逻辑控制 首先了解下案例的文件构成 头文件 xff1a mainwindow h chooselevelscene h plays
  • 在TX2上运行realsenseD435摄像头

    在TX2上运行realsenseD435 先给出相关的链接在TX2上安装realsense SDK库在TX2上安装realsense SDK库 先给出相关的链接 github 上的一些链接 realsense SDK库 xff1a http
  • docker build 后面为什么要跟个 .

    我们在构建镜像文件时无非是使用 xff1a docker build t test ubuntu v1 或者 docker build f docker test Dockerfile 来进行构建镜像 xff0c 用第一个命令时任务 指代的
  • 微机原理中地址总线、数据总线与内存容量之间的关系

    今天在复习微机原理的时候 xff0c 看到一个概念 xff1a 存储总量 61 存储单元个数 存储字长 xff0c 然后存储单元个数 61 2 地址总线位数 xff0c 存储字长和数据总线位数有关 xff0c 如果是这样 xff0c 那么
  • HDLC——高级数据链路控制(HDLC,High-level Data Link Control)

    一 HDLC概述 1 1 HDLC的发展历史 高级数据链路控制 xff08 High Level Data Link Control或简称HDLC xff09 xff0c 是一个在同步网上传输数据 面向比特的数据链路层协议 xff0c 它是
  • 差分技术:LVDS(低压差分信号)、MLVDS(多点低压差分信号)的区别与应用场景

    差分传输是一种信号传输的技术 xff0c 区别于传统的一根信号线一根地线的做法 xff0c 差分传输在这两根线上都传输信号 xff0c 这两个信号的振幅相同 xff0c 相位相反 在这两根线上的传输的信号就是差分信号 信号接收端比较这两个电
  • 小白能理解的奈奎斯特采样及延伸出的理论

    一 取样定理 其实奈奎斯特采样有两种方式 xff0c 一种是矩形脉冲采样 xff0c 一种是冲激采样 xff0c 采样方式如下图 我们在不计算数学公式的情况下来讲解 xff0c 只是让大家明白是这么回事 xff0c 具体为什么是这样 xff
  • 单边谱和双边谱

    实际中 xff0c 只会有单边谱 xff0c 并不会有负频率的信号 在引入欧拉公式后 xff0c 出现了双边谱 单边谱转换为双边谱 xff0c 幅度会降低一半 xff0c 其他不变
  • 小白也能搞通UDP通信(88E1111 RGMII 接口)

    一 网络协议 下表描述了整个从上到下的网络协议层 xff1a 这些网络协议在FPGA实际开发的过程中用到的就是传输层 网络层 数据链路层和物理层 xff0c 在我们的举例中用到UDP IP ARP协议 xff0c 物理层就用88E1111
  • 485通讯和modbus通讯协议

    485通信 xff1a 采用差分信号 xff1a A比B电压高是1 xff0c A比B电压低是0 xff0c 电压高低值在0 2V 6V之间 硬件连接上 xff1a 所有A接到一起 xff0c 所有B接到一起AB之间要加匹配电阻100欧到1
  • MODBUS RTU

    Modbus xff1a 是一种单主 从通信协议 MODBUS网络上只有一个主站 xff0c 主站在MODBUS网络没有地址 xff0c 从站的地址范围为0 247 xff0c 其中0为广播地址 xff0c 从站的实际地址为1 247 MO
  • TM4C123-HWREG()及外设寄存器地址说明

    参考文件 xff1a ti TivaWare C Series 2 1 4 178 inc hw types hti TivaWare C Series 2 1 4 178 inc hw memmap htm4c123gh6pz datas