完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
STM32F0系列单片机,指针取整型值错误,用F0的进来看下,代码如下,附件里也有个工程可以下来单步运行下,这是什么问题如何解决.
uint8_t a[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; //定义a 数组 int main(void){ uint32_t*b=0; //指针b uint32_t cc; //临时变量 b=(uint32_t*)(a+1); //给a的指针地址+1他 cc =*b; //取值这步运行就出错 //如果程序没出错cc的值应该为0x04030201, 但取值就出错 if(cc == 1)cc=0; while(1){ } } |
|
相关推荐
1个回答
|
|
在您提供的代码片段中,我注意到您正在尝试使用一个指向uint32_t类型的指针b来访问一个uint8_t类型的数组a。这可能会导致一些问题,因为指针类型不匹配。让我们逐步分析这个问题并找到解决方案。
1. 首先,您定义了一个uint8_t类型的数组a,它包含20个元素。 ```c uint8_t a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}; ``` 2. 接下来,您声明了一个指向uint32_t类型的指针b,并将其初始化为0。 ```c uint32_t* b = 0; ``` 3. 这里的问题在于,指针b的类型是uint32_t*,而数组a的类型是uint8_t。当您尝试通过指针b访问数组a的元素时,可能会出现类型不匹配的问题。 为了解决这个问题,您需要将指针b的类型更改为与数组a相同的类型,即uint8_t*。以下是修改后的代码: ```c uint8_t a[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}; uint8_t* b = 0; // 修改指针类型为uint8_t* uint32_t cc; int main(void) { // 您的代码逻辑 } ``` 现在,指针b的类型与数组a的类型相匹配,您应该能够正确地访问数组元素。如果您需要将指针b指向数组a,您可以使用以下代码: ```c b = a; // 将指针b指向数组a的起始地址 ``` 这样,您就可以通过指针b正确地访问数组a中的元素了。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1804 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1629 浏览 1 评论
1097 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
736 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1686 浏览 2 评论
1944浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
747浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
580浏览 3评论
602浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
565浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-28 10:26 , Processed in 0.798918 second(s), Total 47, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号