完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
回复本帖可获得 2 分积分奖励! 每人限 1 次(中奖概率 50%) |
我向操作单元为“字”的FIFO中写入一个“字”;查询时,发现FIFO中被写了32个“字”。(FIFO一共有32个字的存储空间)
以下是我针对此问题写的一段代码: #include "STM32f10x.h" #include "stm32f10x_conf.h" SDIO_DataInitTypeDef SDIO_DataInitStructure; SDIO_InitTypeDef SDIO_InitStructure; void SD_LowLevel_Init(void) ; void SDIO_DataInit(void); int main(void) { char *character= "abcdefghijklmnop" ; uint32_t *data= (uint32_t *)character ; SD_LowLevel_Init(); SDIO_DataInit(); SDIO->DCTRL = 0; SDIO_DataInitStructure.SDIO_DataLength = 16; SDIO_SetSDIOOperation(ENABLE); SDIO_DataInitStructure.SDIO_DataTimeOut = 0xffffffff; SDIO_DataInitStructure.SDIO_TransferDir = SDIO_TransferDir_ToCard; //SDIO_TransferDir_ToCard=0 SDIO_TransferDir_ToSDIO=2 SDIO_DataInitStructure.SDIO_TransferMode = SDIO_TransferMode_Stream; // SDIO_TransferMode_Stream SDIO_TransferMode_Block SDIO_DataInitStructure.SDIO_DPSM = SDIO_DPSM_Enable; SDIO_DataConfig(&SDIO_DataInitStructure); SDIO->FIFOCNT; SDIO->DCOUNT; SDIO_WriteData(0X12345678); SDIO->FIFOCNT; SDIO->DCOUNT; SDIO_WriteData(*data++); SDIO->FIFOCNT; SDIO->DCOUNT; SDIO_WriteData(*data++); SDIO->FIFOCNT; SDIO->DCOUNT; SDIO_WriteData(*data); SDIO->FIFOCNT; SDIO->DCOUNT; } void SD_LowLevel_Init(void) { GPIO_InitTypeDef GPIO_InitStructure; /*!< GPIOC and GPIOD Periph clock enable */ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD , ENABLE); /*!< Configure PC.08, PC.09, PC.10, PC.11, PC.12 pin: D0, D1, D2, D3, CLK pin */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOC, &GPIO_InitStructure); /*!< Configure PD.02 CMD line */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_Init(GPIOD, &GPIO_InitStructure); /*!< Enable the SDIO AHB Clock */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_SDIO, ENABLE); /*!< Enable the DMA2 Clock */ RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA2, ENABLE); } void SDIO_DataInit(void) { SDIO_DeInit(); /*!< Power ON Sequence -----------------------------------------------------*/ /*!< Configure the SDIO peripheral */ /*!< SDIO_CK = SDIOCLK / (SDIO_INIT_CLK_DIV + 2) */ /*!< on STM32F4xx devices, SDIOCLK is fixed to 48MHz */ /*!< SDIO_CK for initialization should not exceed 12 MHz */ SDIO_InitStructure.SDIO_ClockDiv = 0x04; SDIO_InitStructure.SDIO_ClockEdge = SDIO_ClockEdge_Rising; SDIO_InitStructure.SDIO_ClockBypass = SDIO_ClockBypass_Disable; SDIO_InitStructure.SDIO_ClockPowerSave = SDIO_ClockPowerSave_Disable; SDIO_InitStructure.SDIO_BusWide = SDIO_BusWide_4b; SDIO_InitStructure.SDIO_HardwareFlowControl = SDIO_HardwareFlowControl_Disable; SDIO_Init(&SDIO_InitStructure); /*!< Set Power State to ON */ SDIO_SetPowerState(SDIO_PowerState_ON); /*!< Enable SDIO Clock */ SDIO_ClockCmd(ENABLE); /*******************************************Gainspan Testing******************************/ SDIO_DataStructInit(&SDIO_DataInitStructure); } |
|
相关推荐
1个回答
|
|
我已经反复修改调试程序很多次了,都是这个问题,而且我还用过网上的野火的程序,跑到这边也是这个问题!!!!! |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
969 浏览 0 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
954 浏览 2 评论
2066 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
1162 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
1587 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 07:01 , Processed in 0.552547 second(s), Total 75, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号