stm32出现hardfault错误

2019-10-16 00:56发布

我现在需要将串口接收缓存中接收到的数据以float格式取出,但是程序老是跑飞,串口接收一个8位的数据,
以下是程序代码:
temp1=*((float*)&USART_RX_BUF[0]);
temp2=*((float*)&USART_RX_BUF[4]);
temp1,temp2是局部变量,通过watch窗口查看串口缓存数组的0-7位确实接收到了数据,但是单步调试的时候跳到hardfault异常处理函数里边。。。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
邵少少
1楼-- · 2019-10-16 02:26
USART_RX_BUF[0]后已经是数据了,为什么还要&取地址,直接强转类型不可以么
小杰
2楼-- · 2019-10-16 08:25
邵少少 发表于 2016-12-14 09:27
USART_RX_BUF[0]后已经是数据了,为什么还要&取地址,直接强转类型不可以么

直接强转?请问如何操作?
邵少少
3楼-- · 2019-10-16 09:19
小杰 发表于 2016-12-14 12:16
直接强转?请问如何操作?

(float)USART_RX_BUF[0],123就变成了123.000000,不明白你为什么要转成指针再取值
邵少少
4楼-- · 2019-10-16 09:23
 精彩回答 2  元偷偷看……
小杰
5楼-- · 2019-10-16 09:23
邵少少 发表于 2016-12-14 13:01
你是不是接收的数据也是浮点型,如果那样的话,你就要单独写一个子程序,将整数小数部分单独取出,放入te ...

是的,0-3位是一个,4-7位又是一个
小杰
6楼-- · 2019-10-16 13:18
邵少少 发表于 2016-12-14 09:27
USART_RX_BUF[0]后已经是数据了,为什么还要&取地址,直接强转类型不可以么

关键为什么我这么写会出现hardfault???以前都没有出现过这种情况

一周热门 更多>