请教一个问题,stm32除法报错

2019-03-23 15:22发布

本帖最后由 yl20084784 于 2015-12-25 15:46 编辑

最近用到一个二分法查找stm32L051内置flash里面的数据,在二分一个指针的时候出现了点问题,除法报错。把不相关的去掉,只留干货。

当P=0x0800319E的时候

QQ图片20151225152510.png


运行这句:

HA=(uint32_t)P/4;


报错如下:
QQ图片20151225152500.png
意思就是内核硬件错误.
这个时候P=0X0800319e=134230430 ,除以4是除不尽的,所以报错...
有没有什么办法忽略这个报错,让他继续执行下去啊?
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
Li_Lei
1楼-- · 2019-03-23 18:32
/ 怀疑你变量命名有冲突,换个名字试试,除法不至于内核错啊
zqjqq88
2楼-- · 2019-03-23 20:51
 精彩回答 2  元偷偷看……
yl20084784
3楼-- · 2019-03-23 22:05
zqjqq88 发表于 2015-12-25 16:43
这个处理器的读写的最小单位是word,也就是你的访问地址必须是0X08000000+ADDR,所以你的ADDR必须是4的整数 ...

懂了,之前有个程序就是用word为单位来计数,再用二分法查找,感觉用word写个1太浪费了,所以寻思着利用每一个bit,所以出现这种情况。
DSCX05
4楼-- · 2019-03-24 03:54
感谢楼主的分享和分析,不过我并没有感觉到这段代码有多精妙! 首先这个并不是一个键盘扫描程序,而是一个处理函数,当然非要这么叫也能说的过去,比较这个函数没有涉及键值的处理,也算扫描。其次说这个程序只有三行有点儿标题党的意思了,因为这个显然用的是独立按键,独立按键的读取本来就简单,一句话就完了,下面的处理用的也是C语言的技巧而已,但这个技巧并不代表高的执行效率,也就是这样的简短并没有实际意义,还不如分行写清楚的好。我mei看过华为的一个编程规范,明确建议少用C语言技巧。再一个这个函数本事并没有滤波功能,因此算不上一个完整的键盘扫描函数。通过主函数实现滤波是稍微大一些应用中就不可取了,这个函数的用法优点在于按下按键之后只执行一次规定 操作,同时可以及时(按楼主说的就是20ms)发现按键松开。

一周热门 更多>