野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18997|回复: 4

stm32-数据结构

[复制链接]
发表于 2015-3-17 17:26:54 | 显示全部楼层 |阅读模式
小弟初入stm32,有些基础的问题还是有些疑问,恳请大神指正~不胜感激~~~问题1:在stm32中,1Byte=32Bit?
我记的我在玩51单片机的时候,1Byte=8Bit,因为那时的寄存器只有8位,那是不是stm32的1Byte就是32Bit呢?
问题2:如下为STM32也野火开发板的ADC例程程序,问题在注释部分-为什么要把它强制转换成u32,这里有什么意义吗?
  1. __IO uint16_t  ADC1_ConvertedValue;
复制代码
  1. DMA_InitStructure.DMA_PeripheralBaseAddr=ADC1_DR_Address;
  2.         DMA_InitStructure.DMA_MemoryBaseAddr=(u32)&ADC1_ConvertedValue;//这里为什么要把地址强制转换成32位???
复制代码




主题推荐

回复

使用道具 举报

发表于 2015-3-17 21:34:52 | 显示全部楼层
1Byte=8Bit 这是确定的,到那都不会变的

ADC1_ConvertedValue本身是uint16_t型的,而DMA_InitStructure.DMA_MemoryBaseAddr是u32(同uint32_t)的地址。强制转换保持等式两边数据类型相等。
ADC1_ConvertedValue强制转换成uint32_t,数值大小不会变。
回复 支持 反对

使用道具 举报

发表于 2015-3-17 21:58:49 | 显示全部楼层
1byte是8bit,对任何cpu都是这个意思。而stm32是32位机,一个字是32bit,半字是16bit ,1byte一样是8bit
回复 支持 反对

使用道具 举报

 楼主| 发表于 2015-3-18 08:57:35 | 显示全部楼层
亽亼 发表于 2015-3-17 21:34
1Byte=8Bit 这是确定的,到那都不会变的

ADC1_ConvertedValue本身是uint16_t型的,而DMA_InitStructure. ...

为什么说DMA_InitStructure.DMA_MemoryBaseAddr是32位的地址啊?请大神指教
回复 支持 反对

使用道具 举报

发表于 2015-3-18 09:51:32 | 显示全部楼层
liuchang 发表于 2015-3-18 08:57
为什么说DMA_InitStructure.DMA_MemoryBaseAddr是32位的地址啊?请大神指教

这是在库文件里边定义了,
stm32是32位寻址,地址都是32位
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-6 19:39 , Processed in 0.040723 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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