你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32L053 指针问题

[复制链接]
waiman-156411 提问时间:2018-3-27 09:41 /
芯片 STM32L053C8T6
CubeMx 4.23
IAR 7.80.4

在执行到绿色那段代码时候,就会跳到 HardFault_Handler
54ac42eb5857fee6703b044badd10a58.png

取直针,把uint_8*转uint16_t*都没问题,但读取指向的变量就出错!
而且奇怪的在F1芯片执行是没错误。

收藏 评论7 发布时间:2018-3-27 09:41

举报

7个回答
回答时间:2018-3-27 09:46:27
我是不是可以理解为,直接判读huart->prxbuffptr[huart->rxxfercount-2] == 0x0A就可以了。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

toofree 回答时间:2018-3-27 09:54:34
看一下你的huart结构体长什么样?放到观察窗口中

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

MrJiu 回答时间:2018-3-27 09:55:26
有可能出错的是其他问题哦。。。。。
Mandelbrot_Set 回答时间:2018-3-27 09:58:04
本帖最后由 Mandelbrot_Set 于 2018-3-27 10:09 编辑

应该是涉及到内存的非对其访问
M0与M3的CPU架构不一样,指令差异(ARMv6-M与ARMv7-M)

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

waiman-156411 回答时间:2018-3-27 10:08:38
Mandelbrot_Set 发表于 2018-3-27 09:58
应该是涉及到内存的非对其访问
M0与M3的CPU架构不一样,指令差异

真的和你说的一样。谢谢提醒。

uint16_t* 可以指向任意地址,
但用该指针读写内存的话,就只能读写与指针长度对齐的地址,也就是说0x200006A1 就出错,但读0x200005A0,0x200005A2就可以。
waiman-156411 回答时间:2018-3-27 10:12:10
toofree 发表于 2018-3-27 09:54
看一下你的huart结构体长什么样?放到观察窗口中

huart结构体是官方UART接口的结构体,没有改动

huart->prxbuffptr 是uint8_t* 的指针,已经赋了内存空间。
す疯Ⅱ恒す 回答时间:2018-3-27 10:16:13
指针没对齐啊。指向8bit数据的话地址可以是任意数,指向16bit数据的指针地址要双字节对齐的。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版