本帖最后由 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 保护还没有进行任何设置
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
- DRESULT SD_read(BYTE lun, BYTE *buff, DWORD sector, UINT count)
- {
- DRESULT res = RES_OK;
- #ifdef READ_SD_USE_DMA
- u32 addr = (u32)buff;
- u32 size = count * BLOCK_SIZE;
- if (addr & 0x1F) { // align 32 byte
- addr &= ~((u32)0x1F);
- size += 0x20;
- }
- SCB_InvalidateDCache_by_Addr((u32*)addr, size);
- if(BSP_SD_ReadBlocks_DMA((uint32_t*)buff,
- ((uint64_t)sector)*BLOCK_SIZE,
- BLOCK_SIZE,
- count) != MSD_OK)
- {
- res = RES_ERROR;
- }
- SCB_InvalidateDCache_by_Addr((u32*)addr, size);
- #else
- if(BSP_SD_ReadBlocks((uint32_t*)buff,
- ((uint64_t)sector)*BLOCK_SIZE,
- BLOCK_SIZE,
- count) != MSD_OK)
- {
- res = RES_ERROR;
- }
- #endif
- return res;
- }
复制代码一周热门 更多>