本帖最后由 hpdell 于 2017-3-30 12:05 编辑
F7的单片机,开启 cache 后,uart-idl+dma接收不到数据,中断可以进入,
SCB_EnableICache(); //使能I-Cache
SCB_EnableDCache(); //使能D-Cache 后,
使用usart+dma 接收就不行
屏蔽后uart+dam可以,但sd卡又不行
该如何处理啊 ??
sd卡使用 查询模式,
感觉这个f7的 cache 使用起来很麻烦,
其他的 mpu 保护还没有进行任何设置
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
数量对不代表数据对,数据可能被cache掉了。我这个是Core_cm7.h中的函数啊。HAL库
/**
fn void SCB_InvalidateDCache_by_Addr(volatile uint32_t *addr, int32_t dsize)
rief D-Cache Invalidate by address
param[in] addr address (aligned to 32-byte boundary)
param[in] dsize size of memory block (in number of bytes)
*/
__STATIC_INLINE void SCB_InvalidateDCache_by_Addr (uint32_t *addr, int32_t dsize)
{
#if (__DCACHE_PRESENT == 1)
int32_t op_size = dsize;
uint32_t op_addr = (uint32_t)addr;
uint32_t linesize = 32UL; // in Cortex-M7 size of cache line is fixed to 8 words (32 bytes)
__DSB();
while (op_size > 0) {
SCB->DCIMVAC = op_addr;
op_addr += linesize;
op_size -= (int32_t)linesize;
}
__DSB();
__ISB();
#endif
}
一周热门 更多>