91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

本代碼是為基于RTThread操作系統的STM32F407單片機開發的SD卡驅動,能夠進行文件讀寫功能。

資源截圖

代碼片段和文件信息

/*
?*?@File:???drv_sdcard.c?
?*?@Author:?tianqf?
?*?@Date:???2018-1-23?17:35:46
?*?
?*?@LICENSE:?
?*?The?code?owner?is?tianqf.?Other?personnel?may?
?*?not?be?used?or?modified.
?*?
?*?Change?Logs:?
?*?Date???????????Author???????Notes?
?*?2018-1-23??????tianqf?????The?first?version.?
?*/?
?
#include?“drv_sdcard.h“
#include?“stm32f4xx.h“
#include?“sdio_sd.h“

#ifndef?SDCARD_SECTOR_SIZE
#define?SDCARD_SECTOR_SIZE?512
#endif

rt_err_t?sdcard_init(void)
{
????rt_uint8_t?ret?=?SD_OK;
???
????ret?=?SD_Init();

????if?(ret?==?SD_OK)
{
return?SD_OK;
}
else
{
return?SD_ERROR;
}

}

rt_uint8_t?sdcard_read_blocks(rt_uint32_t?*buf?uint64_t?sector?rt_uint32_t?cnt)
{
????rt_uint8_t?ret?=?SD_OK;

#if?defined?(SD_DMA_MODE)
????ret?=?SD_ReadBlock((uint8_t?*)buf?sector?cnt);
????if(ret?!=?SD_OK)
????{
????????return?RT_ERROR;
????}

????ret?=?SD_WaitReadOperation();
????if(ret?!=?SD_OK)
????{
????????return?RT_ERROR;
????}
#else
????ret?=?SD_ReadBlock((uint8_t?*)buf?sector?cnt);
????if(ret?!=?SD_OK)
????{
????????return?RT_ERROR;
????}
#endif

????return?RT_EOK;
}

rt_uint8_t?sdcard_write_blocks(rt_uint32_t?*buf?uint64_t?sector?rt_uint32_t?cnt)
{
????rt_uint8_t?ret?=?SD_OK;
????
#if?defined?(SD_DMA_MODE)
????ret?=?SD_WriteBlock((uint8_t?*)buf?sector?cnt);
????if(ret?!=?SD_OK)
????{
????????return?RT_ERROR;
????}

????ret?=?SD_WaitWriteOperation();
????if(ret?!=?SD_OK)
????{
????????return?RT_ERROR;
????}
????
#else
????ret?=?SD_WriteBlock((uint8_t?*)buf?sector?cnt);
????if(ret?!=?SD_OK)
????{
????????return?RT_ERROR;
????}
#endif

????return?RT_EOK;
}


static?struct?rt_device?sdcard_device;
static?struct?rt_semaphore?sd_lock;

/*?RT-Thread?Device?Driver?Interface?*/
static?rt_err_t?rt_sdcard_init(rt_device_t?dev)
{
????
????if?(rt_sem_init(&sd_lock?“sdlock“?1?RT_IPC_FLAG_FIFO)?!=?RT_EOK)
????{
????????return?RT_ERROR;
????}

????return?RT_EOK;
}

static?rt_err_t?rt_sdcard_open(rt_device_t?dev?rt_uint16_t?oflag)
{
????return?RT_EOK;
}

static?rt_err_t?rt_sdcard_close(rt_device_t?dev)
{
????return?RT_EOK;
}

static?rt_uint32_t?sdio_buffer[512/sizeof(uint32_t)];
static?rt_size_t?rt_sdcard_read(rt_device_t?dev?rt_off_t?pos?void*?buffer?rt_size_t?size)
{
????rt_uint8_t?status?=?SD_OK;

????rt_sem_take(&sd_lock?RT_WAITING_FOREVER);

????if(((rt_uint32_t)buffer?&?0x03)?!=?0)
????{
????????/*?non-aligned.?*/
????????uint32_t?i;
????????uint64_t?sector_adr;
????????uint8_t*?copy_buffer;

????????sector_adr??=?(uint64_t)pos*SDCARD_SECTOR_SIZE;
????????copy_buffer?=?(uint8_t*)buffer;

????????for(i=0;?i????????{
????????????status?=?sdcard_read_blocks(sdio_buffer?sector_adr?1);?
????????????rt_memcpy(copy_buffer?sdio_buffer?SDCARD_SECTOR_SIZE);?

????????????sector_adr??+=?SDCARD_SECTOR_SIZE;
????????????copy_buffer?+=?SDCARD_SECTOR_SIZE;
????????}
????}
????else
????{
????????status?=

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????6072??2018-05-25?13:42??drv_sdcard.c
?????文件?????????478??2018-05-25?13:42??drv_sdcard.h
?????文件???????90898??2018-05-25?13:42??sdio_sd.c
?????文件???????18540??2018-05-25?13:42??sdio_sd.h

評論

共有 條評論