来源:公众号【鱼鹰谈单片机】
作者:鱼鹰Osprey
ID :emOsprey
最近在调试 can 通信,因为 c8t6 flash 很小,而鱼鹰培训工程完成的驱动越来越多,导致 flash 不足,因此把 bsp 的优化级别设置成 -O2,谁知道在串口输入数据时直接 hardfault 了:
进一步跟踪发现问题出在这条代码中:
uint32_t cnt = *(( uint32_t*)pinfo->pdma_cnt_rx); // 出错代码
.....
pinfo->last_dma_cnt = cnt;
这条代码最开始是这样
uint16_t cnt = *(( uint16_t*)pinfo->pdma_cnt_rx);
因为我的last_dma_cnt 变量是 16 bit,我想节省一下