[STM32F1] 不会进入到硬件中断

[复制链接]
1266|17
 楼主| pangb 发表于 2022-1-3 20:52 | 显示全部楼层 |阅读模式
结构体指针初始化的问题:
我定义了一个结构体:
typedef struct  
{
        float Test[10];
        u32 addr;
        u16 Count;
        u16 Safe_Cnt;
        u16 Danger_Cnt;  
        u16 Year;
        u8 Month;
        u8 Day;
        u8 Hour;
        u8 Minute;
        u8 Seconds;
        u8 TestResualt;
        u8 TestState;
}RecordStruct; //共59个字节

RecordStruct *OutData;

初始化的时候给他分配内存:
OutData = (RecordStruct*)malloc(sizeof (RecordStruct));
这样调试程序的时候总是会在初始化分配内存的时候进入硬件中断,错误提示是“IMPRECISERR"不精确数据总线错误,但是如果我定义的时候将结构体中的最后一个字节“u8 TestState”去掉的话程序就能够正常执行,不会进入到硬件中断,这是为什么呢?
xxrs 发表于 2022-1-3 20:54 | 显示全部楼层
跟下malloc函数看下,是不是bss段内存空间不够啦
 楼主| pangb 发表于 2022-1-3 20:57 | 显示全部楼层
如果BSS段不够的话,编译应该会提示错误吧,我的编译没有问题
chenjunt 发表于 2022-1-3 20:57 | 显示全部楼层
模仿232提高电压
dengdc 发表于 2022-1-3 20:59 | 显示全部楼层
你的代码给bss分配的空间有多大,看你的现象像是只要malloc超过某个长度就出问题。
dengdc 发表于 2022-1-3 21:02 | 显示全部楼层
如果可以的话  你看下malloc函数的返回是不是失败了,成功之后再使用这段内存,没成功就是用肯定会有问题。
renyaq 发表于 2022-1-3 21:04 | 显示全部楼层
你让那个分配内存大小+1试试。
spark周 发表于 2022-1-3 21:07 | 显示全部楼层
是对齐的问题吧。
renyaq 发表于 2022-1-3 21:09 | 显示全部楼层
结构体空间够吗
pengf 发表于 2022-1-3 21:11 | 显示全部楼层
有可能是空间不够了
chenjunt 发表于 2022-1-3 21:14 | 显示全部楼层
总中断开启了吗
dengdc 发表于 2022-1-3 21:17 | 显示全部楼层
用示波器看看能有这个波形吗
jiajs 发表于 2022-1-3 21:19 | 显示全部楼层
没有遇到过这种错误
chenho 发表于 2022-1-3 21:21 | 显示全部楼层
看不好这个问题
 楼主| pangb 发表于 2022-1-3 21:26 | 显示全部楼层

好的,我明天去单位试一下,多谢各位大侠了哈        
caoenq 发表于 2022-1-4 09:26 | 显示全部楼层
就这几个字节还需要使用malloc函数?我看你是闲的。
diweo 发表于 2022-1-4 11:02 | 显示全部楼层
单片机编程中,如果没一定功力,就不要用动态内存
122541325 发表于 2022-1-4 15:31 | 显示全部楼层
我也感觉是对齐的问题,实在不行直接初始化结构体,别自己给他分配内存
您需要登录后才可以回帖 登录 | 注册

本版积分规则

701

主题

7643

帖子

6

粉丝
快速回复 在线客服 返回列表 返回顶部