STM32L4新版HAL库SDIO(DMA)、FatFs使用教程(四)

添加FreeRtos支持。

FreeRtos中使用FATFS是强制要求使用DMA模式的SDIO驱动。步骤如下:

1、打开工程配置文件,添加FreeRtos支持

2、配置参数

发现configuration选项卡SDMMC1报错,信息如下,意思是中断优先级问题。

打开NVIC配置界面,修改中断优先级,注意,DMA优先级要比SD中断优先级低。

打开FREERTOS选项,如图所示适当配置任务堆栈大小,这里为了测试方便,放到Start Task中测试,正式使用时,不要放在这里,要新建任务。文件操作所在的任务需要适当加大堆栈。

3、生成代码,打开工程,将main函数中的Fatfs_RW_test();语句剪切,粘贴到StartDefaultTask函数(635行附近),/* USER CODE BEGIN 5 */标记后面,如图所示。

4、由于重新生成了代码,bsp_driver_sd.c文件中的BSP_SD_ReadBlocks_DMA和BSP_SD_WriteBlocks_DMA被覆盖掉,需要按照上一节的步骤,加入DMA通道配置函数。

 

以下段落复制于上一节内容:

 

然后,打开bsp_driver_sd.c文件,到BSP_SD_ReadBlocks_DMA函数中(186行附近),在

 if (HAL_SD_ReadBlocks_DMA(&hsd1, (uint8_t *)pData, ReadAddr, NumOfBlocks) != HAL_OK)

  {

    sd_state = MSD_ERROR;

  }

上方添加以下代码:

if(SD_DMAConfigRx(&hsd1) != HAL_OK)
{
		return MSD_ERROR;
}

在BSP_SD_WriteBlocks_DMA(214行附近),在

if (HAL_SD_WriteBlocks_DMA(&hsd1, (uint8_t *)pData, WriteAddr, NumOfBlocks) != HAL_OK)

  {

    sd_state = MSD_ERROR;

  }

上方添加以下代码:

if(SD_DMAConfigTx(&hsd1) != HAL_OK)
{
		return MSD_ERROR;
}

 

5、编译测试源码,到此全部教程结束。
 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值