野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8680|回复: 3

位带操作作业题

[复制链接]
发表于 2016-3-30 23:56:54 | 显示全部楼层 |阅读模式
书上第十三章,每课一问,第二题。
               2.如果使用的不是GPIO这个外设,而是其他的外设,那么公式该怎么改,比如要使用的外设是ADC .
                      我的答案是: #define  ADC_寄存器_Addr    (  ADC_BASE + 相应寄存器的偏移地址 )   
                              请问这对吗?      
回复

使用道具 举报

发表于 2016-3-31 08:33:51 | 显示全部楼层
不对
回复

使用道具 举报

发表于 2016-3-31 08:34:50 | 显示全部楼层
再看看教程上的这段话:

对于片上外设位带区的某个比特,记它所在字节的地址为 A,位序号为 n(0<=n<=7),则
该比特在别名区的地址为:
1 AliasAddr= =0x42000000+ (A-0x40000000)*8*4 +n*4
0X42000000 是外设位带别名区的起始地址, 0x40000000 是外设位带区的起始地址,
( A-0x40000000)表示该比特前面有多少个字节,一个字节有 8 位,所以*8,一个位膨胀
后是 4 个字节,所以*4, n 表示该比特在 A 地址的序号,因为一个位经过膨胀后是四个字
节,所以也*4。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-3-31 22:24:16 | 显示全部楼层
亲,老师您好!
         根据您的指示,我将答案修改后如下:
                    AliaAddr = 0x42000000  + (  A  -   0x40000000 )  * 8* 4+ n*4
         理由:   A 是某个字节地址,如果外设是ADC的话,A所在的字节地址范围就不等于GPIO外设地址范围,  所以这个公式是通用的。
               
          对不对呢?呵呵。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-9-23 03:26 , Processed in 0.045648 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表