*(uint16_t *)(&cmd.D_len+1+cmd.D_len)=activeParams.ES_Num.Val++;
cmd是一個(gè)結(jié)構(gòu)體,定義時(shí)用到過?__attribute__ ((packed)),比較復(fù)雜,我就不貼出來了。上邊那行代碼在stm32? cubeIDE中編譯后下載到stm32單片機(jī)中沒有問題。CH32V307中編譯無問題,下載到單片機(jī)后,運(yùn)行就進(jìn)?HardFault_Handler。
把代碼改成:? ?
? ? uint8_t *p=&cmd.D_len+1+cmd.D_len;
? ? p[0]=activeParams.ES_Num.byte.LB;
? ? p[1]=activeParams.ES_Num.byte.HB;
運(yùn)行就沒有問題了??礃幼邮侵羔槍ぶ返膶R問題。后來又做測試,發(fā)現(xiàn)?1?如果是1,3,5,都不行,如果是2,4,6,程序可以正常運(yùn)行。
請問:這是兩種內(nèi)核的區(qū)別么?如果我還是想用最開始那種代碼寫,有啥辦法能解決嗎?謝謝!