日韩一区二区三区精品,欧美疯狂xxxxbbbb牲交,热99re久久免费视精品频,人妻互换 综合,欧美激情肉欲高潮视频

歷史上的今天

今天是:2025年07月19日(星期六)

2018年07月19日 | STM32F767 TF卡與FAT文件系統(tǒng)研究

發(fā)布者:baiyuguoji 來源: eefocus關(guān)鍵字:STM32F767  TF卡  FAT文件系統(tǒng) 手機(jī)看文章 掃描二維碼
隨時隨地手機(jī)看文章

其實(shí)SD卡的初始化以及FAT文件系統(tǒng)也移植到了我的板子上面。但是我要存一張BMP的照片,不知道為啥,每次存儲150kb進(jìn)入TF卡的時候,時間不確定。有時幾百毫秒。有時要好幾秒。導(dǎo)致我完全不能夠?qū)崟r保存一些圖片。導(dǎo)致系統(tǒng)卡機(jī)。而且在FAT文件系統(tǒng)下,還不能夠使用DMA釋放CPU。

下面貼出 TF卡初始化例程,參考來自于正點(diǎn)原子源碼:

u8 SD_Init(void)
{
    u8 SD_Error;
    
    //初始化時的時鐘不能大于400KHZ 
    SDCARD_Handler.Instance=SDMMC1;
    SDCARD_Handler.Init.ClockEdge=SDMMC_CLOCK_EDGE_RISING;              //上升沿     
    SDCARD_Handler.Init.ClockBypass=SDMMC_CLOCK_BYPASS_DISABLE;         //不使用bypass模式,直接用HCLK進(jìn)行分頻得到SDIO_CK
    SDCARD_Handler.Init.ClockPowerSave=SDMMC_CLOCK_POWER_SAVE_DISABLE;  //空閑時不關(guān)閉時鐘電源
    SDCARD_Handler.Init.BusWide=SDMMC_BUS_WIDE_1B;                      //1位數(shù)據(jù)線
    SDCARD_Handler.Init.HardwareFlowControl=SDMMC_HARDWARE_FLOW_CONTROL_DISABLE;//關(guān)閉硬件流控
    SDCARD_Handler.Init.ClockDiv=SDMMC_TRANSFER_CLK_DIV;                //SD傳輸時鐘頻率最大25MHZ
    
    SD_Error=HAL_SD_Init(&SDCARD_Handler,&SDCardInfo);
    if(SD_Error!=SD_OK) return 1;
    
    SD_Error=HAL_SD_WideBusOperation_Config(&SDCARD_Handler,SDMMC_BUS_WIDE_4B);//使能寬總線模式
    if(SD_Error!=SD_OK) return 2;
    return 0;
}


//SDMMC底層驅(qū)動,時鐘使能,引腳配置,DMA配置
//此函數(shù)會被HAL_SD_Init()調(diào)用
//hsd:SD卡句柄
void HAL_SD_MspInit(SD_HandleTypeDef *hsd)
{
    GPIO_InitTypeDef GPIO_Initure;


    __HAL_RCC_SDMMC1_CLK_ENABLE();  //使能SDMMC1時鐘
    __HAL_RCC_DMA2_CLK_ENABLE();    //使能DMA2時鐘 
    __HAL_RCC_GPIOC_CLK_ENABLE();   //使能GPIOC時鐘
    __HAL_RCC_GPIOD_CLK_ENABLE();   //使能GPIOD時鐘
    
    //PC8,9,10,11,12
    GPIO_Initure.Pin=GPIO_PIN_8|GPIO_PIN_9|GPIO_PIN_10|GPIO_PIN_11|GPIO_PIN_12;
    GPIO_Initure.Mode=GPIO_MODE_AF_PP;      //推挽復(fù)用
    GPIO_Initure.Pull=GPIO_PULLUP;          //上拉
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;     //高速
    GPIO_Initure.Alternate=GPIO_AF12_SDIO;  //復(fù)用為SDIO
    HAL_GPIO_Init(GPIOC,&GPIO_Initure);     //初始化
    
    //PD2
    GPIO_Initure.Pin=GPIO_PIN_2;            
    HAL_GPIO_Init(GPIOD,&GPIO_Initure);     //初始化


#if (SD_DMA_MODE==1)                        //使用DMA模式
    HAL_NVIC_SetPriority(SDMMC1_IRQn,2,0);  //配置SDMMC1中斷,搶占優(yōu)先級2,子優(yōu)先級0
    HAL_NVIC_EnableIRQ(SDMMC1_IRQn);        //使能SDMMC1中斷
    
    //配置發(fā)送DMA
    SDRxDMAHandler.Instance=DMA2_Stream3;
    SDRxDMAHandler.Init.Channel=DMA_CHANNEL_4;
    SDRxDMAHandler.Init.Direction=DMA_PERIPH_TO_MEMORY;
    SDRxDMAHandler.Init.PeriphInc=DMA_PINC_DISABLE;
    SDRxDMAHandler.Init.MemInc=DMA_MINC_ENABLE;
    SDRxDMAHandler.Init.PeriphDataAlignment=DMA_PDATAALIGN_WORD;
    SDRxDMAHandler.Init.MemDataAlignment=DMA_MDATAALIGN_WORD;
    SDRxDMAHandler.Init.Mode=DMA_PFCTRL;
    SDRxDMAHandler.Init.Priority=DMA_PRIORITY_VERY_HIGH;
    SDRxDMAHandler.Init.FIFOMode=DMA_FIFOMODE_ENABLE;
    SDRxDMAHandler.Init.FIFOThreshold=DMA_FIFO_THRESHOLD_FULL;
    SDRxDMAHandler.Init.MemBurst=DMA_MBURST_INC4;
    SDRxDMAHandler.Init.PeriphBurst=DMA_PBURST_INC4;


    __HAL_LINKDMA(hsd, hdmarx, SDRxDMAHandler); //將接收DMA和SD卡的發(fā)送DMA連接起來
    HAL_DMA_DeInit(&SDRxDMAHandler);
    HAL_DMA_Init(&SDRxDMAHandler);              //初始化接收DMA
    
    //配置接收DMA 
    SDTxDMAHandler.Instance=DMA2_Stream6;
    SDTxDMAHandler.Init.Channel=DMA_CHANNEL_4;
    SDTxDMAHandler.Init.Direction=DMA_MEMORY_TO_PERIPH;
    SDTxDMAHandler.Init.PeriphInc=DMA_PINC_DISABLE;
    SDTxDMAHandler.Init.MemInc=DMA_MINC_ENABLE;
    SDTxDMAHandler.Init.PeriphDataAlignment=DMA_PDATAALIGN_WORD;
    SDTxDMAHandler.Init.MemDataAlignment=DMA_MDATAALIGN_WORD;
    SDTxDMAHandler.Init.Mode=DMA_PFCTRL;
    SDTxDMAHandler.Init.Priority=DMA_PRIORITY_VERY_HIGH;
    SDTxDMAHandler.Init.FIFOMode=DMA_FIFOMODE_ENABLE;
    SDTxDMAHandler.Init.FIFOThreshold=DMA_FIFO_THRESHOLD_FULL;
    SDTxDMAHandler.Init.MemBurst=DMA_MBURST_INC4;
    SDTxDMAHandler.Init.PeriphBurst=DMA_PBURST_INC4;
    
    __HAL_LINKDMA(hsd, hdmatx, SDTxDMAHandler);//將發(fā)送DMA和SD卡的發(fā)送DMA連接起來
    HAL_DMA_DeInit(&SDTxDMAHandler);
    HAL_DMA_Init(&SDTxDMAHandler);              //初始化發(fā)送DMA 
  


    HAL_NVIC_SetPriority(DMA2_Stream3_IRQn, 3, 0);  //接收DMA中斷優(yōu)先級
    HAL_NVIC_EnableIRQ(DMA2_Stream3_IRQn);
    HAL_NVIC_SetPriority(DMA2_Stream6_IRQn, 3, 0);  //發(fā)送DMA中斷優(yōu)先級
    HAL_NVIC_EnableIRQ(DMA2_Stream6_IRQn);
#endif
}


接下來我繼續(xù)更新。希望能夠達(dá)到實(shí)時存儲。


找到問題原因了,在FAT文件系統(tǒng)當(dāng)中,如果不是一次性寫完一個文件,而是分開來寫一個文件,也就是連續(xù)調(diào)用f_write函數(shù),后面這個函數(shù)的運(yùn)行時間是不確定的。所以我把整個文件打包,直接一次寫入,速度很快。、

但是又遇到了新的問題,每次創(chuàng)建一個新的文件,它需要的時間要好幾百毫秒。這個太慢了,很大的影響我的操作。準(zhǔn)備找到新的解決辦法,并且如果要實(shí)時存視頻的話,也需要新的辦法。


關(guān)鍵字:STM32F767  TF卡  FAT文件系統(tǒng) 引用地址:STM32F767 TF卡與FAT文件系統(tǒng)研究

上一篇:STM32CubeMx + SD Card + FatFs 讀寫SD卡死等問題
下一篇:STM32f429-SDRAM+LTDC總結(jié)

推薦閱讀

Strategy Analytics新興設(shè)備技術(shù)(EDT)研究服務(wù)最新發(fā)布的報(bào)告《智能手機(jī):全球人工智能技術(shù)預(yù)測:2010年至2023年》總結(jié)道,2019年全球超過一半的智能手機(jī)將擁有虛擬助手,其份額將在2023年增長至90% 。該報(bào)告跟蹤并預(yù)測全球和六個地區(qū)的智能手機(jī)人工智能技術(shù)的銷售情況。 Strategy Analytics報(bào)告發(fā)現(xiàn)谷歌助手以50%的份額成為全球第一大虛擬助手,其...
摘要 毫無疑問,汽車工業(yè)正在經(jīng)歷一場電子革命。隨著這種增長,投資方會有機(jī)會在增加其收益同時,為最終用戶增加功能和經(jīng)濟(jì)價值。無論是自動駕駛、信息娛樂系統(tǒng)還是汽車電氣化應(yīng)用,性能、可靠性和成本都決定了每個玩家的差異化戰(zhàn)略。因此,集成設(shè)備制造商(IDM)和外包組裝和測試(OSAT)供應(yīng)商都有巨大的創(chuàng)新。本文將提供一個簡短概述,在電氣化部分的價值創(chuàng)...
STM8停機(jī)模式下的快速內(nèi)存喚醒默認(rèn)情況下,微控制器進(jìn)入停機(jī)模式后FLASH是處于掉電狀態(tài)的。此時,漏電流可忽略不計(jì),功耗是非常低的。但FLASH的喚醒時間較長(幾微秒)。如果用戶需要從停機(jī)模式快速喚醒,可將FLASH_CR1的HALT位置1。當(dāng)微控制器進(jìn)入停機(jī)模式時,這將確保FLASH處于等待狀態(tài),喚醒時間降至幾納秒。但功耗將增至幾微安。詳情請參見STM8數(shù)據(jù)手冊...
  近些年來,在科技進(jìn)步推動下,智能機(jī)器人發(fā)展成績斐然,芯片、視覺系統(tǒng)、傳感器等相關(guān)技術(shù)不斷完善,其功能和應(yīng)用領(lǐng)域也在逐漸擴(kuò)展?,F(xiàn)如今,智能機(jī)器人從以往的工業(yè)生產(chǎn)領(lǐng)域擴(kuò)展到人們的日常生活當(dāng)中,逐漸滿足了人們對生活品質(zhì)的追求。   在智能機(jī)器人的廣泛應(yīng)用領(lǐng)域當(dāng)中,有些機(jī)器人的出現(xiàn),不僅便利了我們的生活,更改變了我們傳統(tǒng)思維模式,如...

史海拾趣

問答坊 | AI 解惑

小議中性線和零線

如果把三個電壓源的負(fù)極性X、Y、Z連接在一起形成一個接點(diǎn),(記為N,稱為電源的中點(diǎn))。從三個電壓源的正極性A、B、C向外引出的三條輸電線,(稱為端線,俗稱火線),電源中點(diǎn)引出的線稱為中線(俗稱零線)。如圖5-4所示,就是三相電源的星形連結(jié)方 ...…

查看全部問答∨

NIOS 問題

nios2-terminal: connected to hardware target using JTAG UART on cable nios2-terminal: \"USB-Blaster [USB-0]\", device 1, instance 0 nios2-terminal: (Use the IDE stop button or Ctrl-C to terminate)…

查看全部問答∨

請問,pxa270 燒寫wince 5時不能燒寫至nand flash

請問,pxa270 燒寫wince 5時不能燒寫至nand flash: 出現(xiàn)以下錯誤: INFO: FlashErase: erasing flash A6600000 to A7C3FFFF.  Please wait... ................................................................................ .... ...…

查看全部問答∨

編程規(guī)范與范例

編程規(guī)范與范例…

查看全部問答∨

NXP下載問題

前幾天還是可以下載程序的,就是一兩天沒下載程序就變成這樣了,有圖,希望大家?guī)臀医鉀Q下,大榭?。。。。。。。。?!…

查看全部問答∨

STM32F0 M0的IAP功能,執(zhí)行APP后中斷不正常

請教,我采用的是STM32F051的片子,想加入IAP的功能,但是發(fā)現(xiàn)程序可以從IAP跳轉(zhuǎn)到APP,可是跳轉(zhuǎn)之后APP的外部中斷無法進(jìn)入,但是APP的定時器中斷是OK的,主函數(shù)的運(yùn)行也是正常的,就是無法響應(yīng)外部中斷。不使用IAP跳轉(zhuǎn)的時候APP是完全正才的。 參 ...…

查看全部問答∨

AD9834原理圖(99se)

AD9834原理圖(99se) 延續(xù)ADI DIY活動及瑞薩DIY活動…

查看全部問答∨

Win CE6.0下如何新建和修改GPIO驅(qū)動

以我的OK210開發(fā)板為例,介紹如何新建和修改ce6下的gpio驅(qū)動 只要按照步驟執(zhí)行下去,即可建立一個新的GPIO驅(qū)動。并做如何修改GPIO驅(qū)動介紹。完成驅(qū)動開發(fā)的準(zhǔn)備工作。 硬件平臺:飛凌OK210 操作系統(tǒng):飛凌光盤中的BSP,Win CE6.0 編譯工具:VS2 ...…

查看全部問答∨

汽車安全系統(tǒng)現(xiàn)在還安全嗎

汽車安全系統(tǒng)現(xiàn)在還安全嗎,,,,,,,,,,,,,,,,,,光有g(shù)ps,wifi,車聯(lián)網(wǎng)效果,對汽車安全系統(tǒng)來說反而不安全,,,,,,,,,,,,,,,,,,,,,現(xiàn)在國內(nèi)小偷太無敵,,,,,,,,,大家該怎么防范小偷呢…

查看全部問答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號

 
EEWorld服務(wù)號

 
汽車開發(fā)圈

 
機(jī)器人開發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號 京ICP備10001474號-1 電信業(yè)務(wù)審批[2006]字第258號函 京公網(wǎng)安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved