|
本帖最后由 chinashaoshu 于 2021-4-19 15:49 编辑
背景:芯片为stm32f407igt6,作为applicaiton程序,偏移了0x20000.
我定义了个数据结构,然后在全局数组里初始化,这里设置.HOOK=0,但是系统复位后,查看此全局数组中,的alarm_obj[3].Hook 不等于0,有图有真相。
- typedef void (*AlmProc_Hook)(uint8_t Action);
- struct alarm_node
- {
- uint16_t *a;
- uint16_t *b;
- uint8_t *c;
- uint16_t d;
- uint8_t e;
- uint8_t f;
- uint8_t g;
- uint8_t h;
- uint8_t i;
- uint8_t g;
- uint8_t h;
- AlmProc_Hook *Hook;
- rt_slist_t list;
- };
- #define node_xx(status,flag,bit,prio,act,alm_name) \
- { \
- .a = &(status), \
- .b = &(flag), \
- .c = 0, \
- .d = bit, \
- .f = TIME_THR_RELAY, \
- .g = prio, \
- .h = ALM_POSI_PFC, \
- .i = alm_name, \
- .h = act, \
- .Hook = NULL, \
- }
- #define node_1 node_xx(STA1,PFC_ALM_FLAG1,Index1, 2,0,1)
- #define node_2 node_xx(STA1,PFC_ALM_FLAG1,Index2, 3,0,2)
- alarm_node_t alarm_obj[] = {//要处理的告警项
- node_1,
- node_2,
- node_3,
- node_4,
- ....
- };
复制代码
可以看到此时Hook =0x00000001,此时优化等级为0。当我把优化等级改为2时,就正常了。如图。然后在修改为0,也没事了。
问问群里大神么,这是怎么回事,是不是需要有什么需要注意的,我还不知道,请大佬提示提示我
|
|