STM32 获取寄存器的地址

发布者:zhuanshi最新更新时间:2018-12-28 来源: eefocus关键字:STM32  寄存器  地址 手机看文章 扫描二维码
随时随地手机看文章

如果需要使用TX1的DMA传输,就会涉及到配置DMA的外设地址。在这里,外设地址应该是USART1的DR寄存器的地址。可是如何获取该寄存器的地址呢?


现在实测了3种方式,都可以实现。


方法1:


直接查询手册中寄存器映像(map),USART1的DR地址为0x40013804


方法2:


手册中查看,DR寄存器的偏移地址为0X04,那么USART1的DR地址可以写成(USART1_BASE + 0X04)。


其中USART1_BASE在stm32f10xb.h中有定义

#define USART1_BASE           (APB2PERIPH_BASE + 0x00003800U)


方法3:


如果我们要修改DR的值为0X03,我们会写成:USART1->DR = 0X03,那么DR的地址就是(uint32_t)(&USART1->DR)


其中最后一种方法最讨巧,也最直观


关键字:STM32  寄存器  地址 引用地址:STM32 获取寄存器的地址

上一篇:STM32用PWM +DMA驱动 WS2812
下一篇:stm32滴答时钟SYStick的优先级设定方法详解

推荐阅读最新更新时间:2024-03-16 16:21

基于stm32单片机的Grayhill编码器/开关软件设计
1、初识编码器,像示波器的旋转按钮,可左旋右旋,还可以按下,我们使用的是Grayhill编码器,如下图所示: 从图中可以看出,该编码器一共有6个IO,从1-6分别为GND,GND,C,B,A,VCC,。 其中VCC和GND接3.3V和GND,A、B对应旋转时电平的跳变IO,C对应按下时电平的跳变IO。 (1) 硬件电路设计上,为了方便代码编写与理解,最好把编码器的A、B接到单片机相邻的GPIO中,即使用同一个中断处理函数,比如本设计A、B分别接到PB12和PB11。C接任一个GPIO,当成中断使用。 (2) 顺时针和逆时针旋转编码器时,慢慢旋转一个单位(手指头会有明显旋转到位的感觉),用万用表测量A、B对应的IO
[单片机]
基于<font color='red'>stm32</font>单片机的Grayhill编码器/开关软件设计
STM32实战八 DAC/ADC
这一章编写DAC和ADC程序,即数模/模数转换。程序中封装了两个DAC,各1个独立通道,对应输出脚为PA4和PA5,提供两个方法,ADDA::daDMA(Timer & tim)成员方法以DMA方式按预定数据生成两个正弦波,通道1(PA4)是半幅波形,通道2(PA5)是全幅波形。 ADDA::da()成员方法把指定内存的数据转换成模拟信号,未使用DMA,因为已经是一一对应。 模数转换使用ADC1转换器,共有10个通道,采用硬件存储DMA,不占用CPU时间,包括8个端口通道,对应输入为PA0-7,其中PA4和PA5与DAC共用,可以从内部检测DA/AD的正确性。还有两个内部通道,CPU温度和基准电压。 值得一提的是,参考代码
[单片机]
<font color='red'>STM32</font>实战八 DAC/ADC
零基础入门STM32定时器配置及其中断设置
  我们大家都知道STM32定时器比较多,但调试都是一样的,寄存器都是一一对应的。就拿tiM2举例说明。在网上搜了好多关于定时器的设置,但大多数都是一个版本,而且都是针对库函数操作的,让人看起来一头雾水,对于初学者很是不利(我也是初学者)。下面我将自己的定时器设置过程一一记录下来,以供大家参考,我们共同学习……   首先定义定时器头文件,也就是定义寄存器以供操作:   #define TIM2_CR1 (*((volatile unsigned long *)0x40000000))   #define TIM2_CR2 (*((volatile unsigned long *)0x40000004))   #define
[单片机]
ARM基础知识连载之二
*************************************************************** 程序状态寄存器 *************************************************************** CPSR(当前程序状态寄存器)在任何处理器模式下被访问。它包含了条件标志位、中断禁止位、当前处理器模式标志以及其他的一些控制和状态位。每一种处理器 模式下都有一个专用的物理状态寄存器,称为SPSR(备份程序状态寄存器) 。当特定的异常中断发生时,这个寄存器用于存放当前程序状态寄存器的内容。在异常中断退出时,可以用SPSR来恢复CPSR。由于用户模式和系统模式不是
[单片机]
STM32 PWM实现精确输出脉冲数控制电机
精确输出脉冲数控制电机,使用stm32单片机的pwm功能实现,精确控制脉冲个数 单片机源程序如下: #include stm32f10x_lib.h #include sys.h #include usart.h #include delay.h #include led.h #include exti.h #include key.h #define MOTOR_DIR PBout(11)// PB11 #define MOTOR_EN PEout(15)// PE15 u16 i; u16 fre; u16 TIM5CH1_CAPTURE_VAL; //输入捕获值 u1
[单片机]
stm32 exti 5~9 中断源区分
void EXTI9_5_IRQHandler(void) { u32 Temp = 0x00; PEout(2) = ~PEout(2); Temp = EXTI- PR; //取读是那个引脚的中断 switch(Temp) { case Exti_From_Pin8: EXTI_ClearITPendingBit(EXTI_Line8); break; case Exti_From_Pin9: if(Sys_Status MAX_STATUS) { Sys_Status ++; } EXTI_ClearITPendingBit(EXTI_Line9)
[单片机]
<font color='red'>stm32</font> exti 5~9 中断源区分
STM32编码器的接口模式
1.编码器 图1 编码器示意图 图1为编码器的示意图,中间是一个带光栅的码盘,光通过光栅,接收管接收到高电平,没通过,接收到低电平。电机旋转一圈,码盘上有多少光栅,接受管就会接收多少个高电平。 2.stm32编码器接口模式(寄存器) STM32的编码器接口模式在STM32中文参考手册中有详细的说明。 图2 STM芯片编码器接口模式说明 下图是一个计数器操作的实例,显示了计数信号的产生和方向控制。它还显示了当选择了双边沿时,输入抖动是如何被抑制的;抖动可能会在传感器的位置靠近一个转换点时产生。在这个例子中,我们假定配置如下: 图3 编码器模式下的计数器操作实例 TI 1波形先于TI 2波形90°时,每当边沿变化,计数器
[单片机]
怎么使用C语言控制硬件
C语言的应用编程在单片机的领域占了很大一部分,使用的比较多的51单片机和STM32单片机都可以使用MDK软件编写固件。 单片机烧写了固件后可以点亮LED灯,可以驱动ADC检测电压,也可以驱动蜂鸣器发声,这就是简单地控制硬件。稍微复杂一点的,可以驱动NRF2401进行无线的连接,也可以使用ESP8266这类wifi芯片连接网络。 接下来,简单地讲讲如何使用C语言控制硬件。 1、电路连接 简单的模块可以直接使用高低电平来控制,比如红外线发射模块,当你在驱动引脚上的电压达到3.3v,就能发出红外线;然后将电平设置为0v,红外线发射就停止了。 一般而言,单片机的引脚输出电压能够达到3.3v,也是可以点亮红外线LED,但是可能会导致
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved