发新帖我要提问
12
返回列表
打印
[STM32F0]

STM32F0 系列单片机,指针取整型值错误,用F0的进来看下

[复制链接]
楼主: mark0668
手机看帖
扫描二维码
随时随地手机跟帖
21
mark0668|  楼主 | 2015-4-20 12:31 | 只看该作者 |只看大图 回帖奖励 |倒序浏览
程序是没问题的,看调试信息那都可以显示 b  指针指向的地址和数据出来,M是M0 对齐问题了

3.jpg (718.15 KB )

3.jpg

使用特权

评论回复
22
mark0668|  楼主 | 2015-4-20 12:38 | 只看该作者
justtest111 发表于 2015-4-20 08:46
typedef __packed struct
{
        uint8_t num;

按你的方法改了,看调试窗口也正确的,但单步到取值那就出错,结果也是一样.

1.jpg (267.74 KB )

1.jpg

使用特权

评论回复
23
mark0668|  楼主 | 2015-4-20 12:45 | 只看该作者
zyj9490 发表于 2015-4-20 00:04
好多非法操作,对C指针非法使用,导致的,B[0]应表示成:*(b+0),才是因为B不是数组名。 ...

数组其实就是一个指针,指针也可以用数组来取值的,不信你可以去实验就知结果了,你可以把上面的代码用到别的单片机上运行,只是现在M0 运行上面的代码出错

使用特权

评论回复
24
zyj9490| | 2015-4-20 13:03 | 只看该作者
本帖最后由 zyj9490 于 2015-4-20 13:05 编辑
mark0668 发表于 2015-4-20 12:45
数组其实就是一个指针,指针也可以用数组来取值的,不信你可以去实验就知结果了,你可以把上面的代码用到别 ...

在我的项目中,测试了你的代码,完全没有问题,正常读出,我用的STM32F071RB,KEIL 4.73,可能是调试器的问题,没有及时把变量反映出来,后面多走几步试下。

使用特权

评论回复
25
bobde163| | 2015-4-20 13:19 | 只看该作者
没觉得程序有错,希望楼主能找到最终的问题所在

使用特权

评论回复
26
mark0668|  楼主 | 2015-4-20 14:04 | 只看该作者
本帖最后由 mark0668 于 2015-4-20 14:28 编辑

看了Cortex-M0 手册上的错误中断寄存器上的值对应的就是  (未对齐访问导致的 fault)          总结在对齐上的错误,代码是没有问题,M0上不支持不对齐的访问导至的错误.以后大家在M0上要注意这类问题了.

错误.jpg (184.17 KB )

M0 寄存器

M0 寄存器

CCR.jpg (139.69 KB )

M0 手册上对应的错误中断

M0 手册上对应的错误中断

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则