找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1133|回复: 5
打印 上一主题 下一主题
收起左侧

单片机寄存器的问题求助

[复制链接]
跳转到指定楼层
楼主
ID:480137 发表于 2020-2-16 13:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

一个寄存器有32位 , 相当于有4个字节 , 而一个地址能够存放八位 ,相当于一个寄存器占用了四个地址

但是我发现 程序都是对寄存器首地址进行操作的的  , 那另外的三个地址存放的数据能改变吗 ?

这是不是因为stm32 的 CPU的总线一次可以操作32位吗 ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:235200 发表于 2020-2-16 19:46 | 只看该作者
而一个地址能够存放八位 ,这个前提就不对,32位单片机一个地址能存放32位二进制,内存使用可以定义存放8位为一个地址,即使用char定义存放数据的类型
回复

使用道具 举报

板凳
ID:480137 发表于 2020-2-17 11:14 | 只看该作者
csmyldl 发表于 2020-2-16 19:46
而一个地址能够存放八位 ,这个前提就不对,32位单片机一个地址能存放32位二进制,内存使用可以定义存放8位 ...

但是拿单片机两个相邻的寄存器来看的话 :
GPIOx_CRL 偏移地址位 0x00
而GPIOx_CRLH 的偏移量位 0x04;
这不能说明 GPIOx_CRL 占了 4 个 地址吗    然后这个寄存器有 32位的    ,那么一个地址存放 8位数据
回复

使用道具 举报

地板
ID:168996 发表于 2020-2-17 12:34 | 只看该作者
254zhang 发表于 2020-2-17 11:14
但是拿单片机两个相邻的寄存器来看的话 :
GPIOx_CRL 偏移地址位 0x00
而GPIOx_CRLH 的偏移量位 0x04 ...

字节的定义就是8位,起始地址用字节表示,所以只能说GPIOx_CRL、GPIOx_CRH的起始地址相差4个字节,物理上,32位机本身总线宽度是32位,以字节算,一个寄存器确实占用4个字节。对32位寄存器操作时,只要编译器支持32位操作,操作对象当然是起始地址(你认为的首字节)
回复

使用道具 举报

5#
ID:480137 发表于 2020-2-18 10:07 | 只看该作者
banalsheep 发表于 2020-2-17 12:34
字节的定义就是8位,起始地址用字节表示,所以只能说GPIOx_CRL、GPIOx_CRH的起始地址相差4个字节,物理上 ...

那么32位单片机一个地址存放八位对不对呢 ?
操作寄存器的起始地址就相当于操作整个寄存器是因为编译器是32位操作
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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