娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2024年09月20日(星期五)

正在發(fā)生

2018年09月20日 | STM32F4xx 取得攝像頭數(shù)據(jù)并進(jìn)行處理

發(fā)布者:江上HZ 來源: eefocus關(guān)鍵字:STM32F4xx  攝像頭數(shù)據(jù)  處理 手機(jī)看文章 掃描二維碼
隨時(shí)隨地手機(jī)看文章

  最近做的一個(gè)項(xiàng)目需要對攝像頭采集到的數(shù)據(jù)進(jìn)行簡單的處理,我們用的MCU是Cortex-M4 F407系列的。關(guān)于STM32F4xx的視頻處理,ST的官方給的例程是在顯示屏上直接顯示攝像頭采集到的數(shù)據(jù)。經(jīng)過了一番探索……根據(jù)官方的英文手冊、網(wǎng)友們的無私分享和對各個(gè)例程的研究。今天終于搞定了將數(shù)據(jù)采集下來。


   官方給的例程中,是通過DMA將數(shù)據(jù)直接輸入到屏幕中的。DMA簡單地說就是各個(gè)設(shè)備間自動倒騰內(nèi)存的東西,轉(zhuǎn)移數(shù)據(jù)的時(shí)候并不需要CPU干涉,減少了CPU的負(fù)擔(dān)。由于所有的數(shù)據(jù)都不經(jīng)過CPU進(jìn)行干涉,如何獲取其中的數(shù)據(jù)也是倒騰了一陣子。下面講講主要代碼的配置:

  在攝像頭DCMI的配置中首先根據(jù)攝像頭將各個(gè)管腳設(shè)置成需要的,這個(gè)例程里都有,不貼了。

  要一幀一幀處理數(shù)據(jù)完了再獲取數(shù)據(jù),攝像頭配置中DCMI_CaptureMode要配置成快照模式:DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_SnapShot,這樣每完成一幀圖像的獲取,攝像頭就停止捕獲數(shù)據(jù)了,要想它再次捕獲數(shù)據(jù)只需要執(zhí)行DCMI_CaptureCmd(ENABLE)就可以了。

  然后是攝像頭的中斷配置(DCMI_ITConfig),在中斷配置中,官方的例程是配置的垂直同步DCMI_ITConfig(DCMI_IT_VSYNC, ENABLE),通過垂直同步進(jìn)行的中斷中,獲得的數(shù)據(jù)是整幀畫面的數(shù)據(jù),我們的板子的RAM就只有192k,呵呵,一幀圖像放不進(jìn)去,所以沒有使用垂直同步中斷,用的是列數(shù)據(jù)中斷DCMI_ITConfig(DCMI_IT_LINE, ENABLE)。列數(shù)據(jù)中斷,也就是說攝像頭每采集到一列數(shù)據(jù),就在它的列中斷位(DCMI_IT_LINE位)上置1。我們這個(gè)攝像頭采集的數(shù)據(jù)是240*320像素的16位色圖像。也就是說每次攝像頭產(chǎn)生列中斷的時(shí)候都會采集到320個(gè)16位的數(shù)據(jù)。在每次列中斷發(fā)生時(shí)都在列中斷的中斷服務(wù)中對數(shù)據(jù)進(jìn)行處理就ok啦。

  在官方給的例程文件中stm32f4xx_it.c是用來放各個(gè)中斷服務(wù)的文件。攝像頭的中斷服務(wù)在void DCMI_IRQHandler(void)函數(shù)里面,我們這用到的列中斷,所以對其中的if (DCMI_GetITStatus(DCMI_IT_LINE) != RESET) 進(jìn)行添加代碼即可,最后不要忘了清除攝像頭的列中斷標(biāo)志DCMI_ClearITPendingBit(DCMI_IT_LINE)。

  為了能夠更有效的利用CPU的資源,當(dāng)然不要丟了DMA這神器。下面進(jìn)行DMA的配置。官方例程中需要改的的地方是DMA_InitStructure.DMA_Memory0BaseAddr = FSMC_LCD_ADDRESS這個(gè)地方,F(xiàn)SMC_LCD_ADDRESS是LCD屏幕的地址,我們這里要把數(shù)據(jù)取下來,得弄個(gè)數(shù)組存放數(shù)據(jù)。這里我弄了個(gè)全局的數(shù)組變量uint16_t fps[320],每個(gè)像素16位數(shù)據(jù)RGB--5:6:5,每列320個(gè)數(shù)據(jù)。所以DMA_Memory0BaseAddr參數(shù)就是這么配置DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)fps。DMA_MemoryInc要設(shè)置成DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable。這是目的地址寫入后自增指針的配置。這樣數(shù)據(jù)才能往fps數(shù)組里排著寫入。

  設(shè)置的理論基本說完了。下面上代碼


DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_SnapShot;//快照模式

DCMI_InitStructure.DCMI_SynchroMode = DCMI_SynchroMode_Hardware;//硬件時(shí)鐘

DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Falling;//下降沿

DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_High;//垂直極性

DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_High;//水平極性

DCMI_InitStructure.DCMI_CaptureRate = DCMI_CaptureRate_All_Frame;//捕獲率

DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_8b;//8位數(shù)據(jù)模式

DCMI_Init(&DCMI_InitStructure);//初始化上面的攝像頭配置


DCMI_ITConfig(DCMI_IT_LINE, ENABLE);//列中斷

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//中斷搶占組1

NVIC_InitStructure.NVIC_IRQChannel = DCMI_IRQn;//攝像頭中斷

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//先占優(yōu)先級

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;//從優(yōu)先級

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//開啟中斷控制通道

NVIC_Init(&NVIC_InitStructure);//初始化上面的中斷配置


RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2, ENABLE);//使能DMA2時(shí)鐘

DMA_DeInit(DMA2_Stream1);//復(fù)位DMA2_Stream1數(shù)據(jù)流的配置

DMA_InitStructure.DMA_Channel = DMA_Channel_1;//DMA流通道

DMA_InitStructure.DMA_PeripheralBaseAddr = DCMI_DR_ADDRESS;//外設(shè)內(nèi)存地址

DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)fps;//內(nèi)存地址

DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;//數(shù)據(jù)方向從外設(shè)到內(nèi)存

DMA_InitStructure.DMA_BufferSize = 320;//每次轉(zhuǎn)移320數(shù)據(jù),每個(gè)數(shù)據(jù)的位數(shù)根據(jù)目的地設(shè)置定

DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//外設(shè)地址不改變

DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//內(nèi)存地址在每次寫入后自增

DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;//外設(shè)每單位長度_Word是32位

DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;//內(nèi)存每單位長度_HalfWord是16位

DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;//運(yùn)行模式,循環(huán)

DMA_InitStructure.DMA_Priority = DMA_Priority_High;//優(yōu)先模式,高

DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable;//開啟先入先出模式

DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;//FIFO水平閾值

DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;//內(nèi)存單通道

DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;//外設(shè)單通道

DMA_Init(DMA2_Stream1, &DMA_InitStructure);//初始化上面的DMA配置


void DCMI_IRQHandler(void)//攝像頭的中斷服務(wù)

{      

if (DCMI_GetITStatus(DCMI_IT_VSYNC) != RESET)//垂直中斷的配置 需要DCMI_ITConfig(DCMI_IT_VSYNC, ENABLE);

{  

DCMI_ClearITPendingBit(DCMI_IT_VSYNC);  

}

if (DCMI_GetITStatus(DCMI_IT_LINE) != RESET)//列中斷的配置 需要DCMI_ITConfig(DCMI_IT_LINE, ENABLE);

{

DCMI_ClearITPendingBit(DCMI_IT_LINE);

}

if (DCMI_GetITStatus(DCMI_IT_FRAME) != RESET)//幀中斷的配置 需要DCMI_ITConfig(DCMI_IT_FRAME, ENABLE);

{

DCMI_ClearITPendingBit(DCMI_IT_FRAME);

}

if (DCMI_GetITStatus(DCMI_IT_ERR) != RESET)//錯誤中斷的配置 需要DCMI_ITConfig(DCMI_IT_ERR, ENABLE);

{

DCMI_ClearITPendingBit(DCMI_IT_ERR);

}

}


關(guān)鍵字:STM32F4xx  攝像頭數(shù)據(jù)  處理 引用地址:STM32F4xx 取得攝像頭數(shù)據(jù)并進(jìn)行處理

上一篇:STM32啟動模式及IAP
下一篇:stm32f407之MyDebugger(操作寄存器)

0

推薦閱讀

========================== Reset/Clock Control ======================= 1、時(shí)鐘安全系統(tǒng)(CSS) 時(shí)鐘安全系統(tǒng)被激活后,時(shí)鐘監(jiān)控器將實(shí)時(shí)監(jiān)控外部高速振蕩器;如果HSE時(shí)鐘發(fā)生故障,外部振蕩器自動被關(guān)閉,產(chǎn)生時(shí)鐘安全中斷,該中斷被連接到Cortex-M3的NMI的中斷;同時(shí)CSS將內(nèi)部RC振蕩器切換為STM32的系統(tǒng)時(shí)鐘源(對于STM32F103,時(shí)鐘失效事件還將被送...
43.1 RTC簡介RTC—real time clock,實(shí)時(shí)時(shí)鐘,主要包含日歷、鬧鐘和自動喚醒這三部分的功能,其中的日歷功能我們使用的最多。日歷包含兩個(gè)32bit的時(shí)間寄存器,可直接輸出時(shí)分秒,星期、月、日、年。比起F103系列的RTC只能輸出秒中斷,剩下的其他時(shí)間需要軟件來實(shí)現(xiàn),429的RTC可謂是脫胎換骨,讓我們在軟件編程時(shí)大大降低了難度。RTC功能框圖分析43.2 ...
在iOS 14正式版本中,蘋果引入的最大一個(gè)改變就是允許第三方應(yīng)用替代Safari和Apple Mail成為系統(tǒng)默認(rèn)的瀏覽器和電子郵件處理應(yīng)用。伴隨著第三方軟件的更新,目前Safari的替代者包括Chrome、Edge、Firefox 和 DuckDuckGo。不過實(shí)際情況是,每當(dāng)用戶進(jìn)行上述第三方應(yīng)用更改時(shí),設(shè)備重新啟動后,就會出現(xiàn)一個(gè)詭異的Bug,即會將這些設(shè)置還原為蘋果的默認(rèn)應(yīng)...
美國白宮官網(wǎng)9月13日發(fā)表聲明稱,美國總統(tǒng)拜登將于9月24日在白宮主持首屆“四方安全對話”領(lǐng)導(dǎo)人峰會。據(jù)日本媒體9月18日消息,這次峰會上,美、日、印、澳四國將推動建立半導(dǎo)體安全供應(yīng)鏈。據(jù)報(bào)道,前述四國一份聯(lián)合聲明草案強(qiáng)調(diào):“非法轉(zhuǎn)讓和盜竊技術(shù)是動搖全球技術(shù)發(fā)展基礎(chǔ)的共同問題,必須加以解決。”

史海拾趣

問答坊 | AI 解惑

單片機(jī)音樂程序的設(shè)計(jì)與實(shí)驗(yàn)

利用單片機(jī)(或單板機(jī))奏樂大概是無線電愛好者感興趣的問題之一。本文從單片機(jī)的基本發(fā)間實(shí)驗(yàn)出發(fā),談?wù)勔魳烦绦虻脑O(shè)計(jì)原理,并給出具體實(shí)例,以供參考。 1.單片機(jī)的基本發(fā)音實(shí)驗(yàn) 我們知道,聲音的頻譜范圍約在幾十到幾千赫茲,若能利用程序來 ...…

查看全部問答∨

有沒有PCB的高手來指點(diǎn)一下啊?????

請教一下,PCB中的焊盤跟過孔在應(yīng)用上有什么區(qū)別???焊盤的中間必須有一個(gè)過孔嗎?畫PCB圖自制元件時(shí)要加貼片的焊盤用工具欄里的焊盤把中間的過孔去掉呢還是自己隨便畫個(gè)方形呢?請高手指點(diǎn)一下啊!謝謝了!…

查看全部問答∨

各位大哥,請幫我看看這個(gè) IC 卡(SLE4442卡)問題???謝謝

1: 向 IC 卡里寫數(shù)據(jù) 是不是必須通過效驗(yàn)了才能寫啊? 2: 效驗(yàn) 到底是效驗(yàn)什么東西? 是密碼,還是? 3: 假設(shè)有人自己做個(gè)寫卡器, 想卡里寫個(gè)很大的數(shù)據(jù), 然后做到您的讀卡器里讀 這樣,就不行了 怎么防止這樣的情況啊 是不是在卡里 ...…

查看全部問答∨

keil4使用

請問大家在c51編程軟件keil4中怎樣建一個(gè)好的工程???…

查看全部問答∨

基于MSP430 的觸摸按鍵2

繼續(xù)上一個(gè)帖子的內(nèi)容。主要講基于MSP430構(gòu)建觸摸按鍵的方式。大家有什么建議意見都可以說,純交流學(xué)習(xí)…

查看全部問答∨

430用什么軟件開發(fā)

ccs支持64位的系統(tǒng)嗎…

查看全部問答∨

BOOSTXL-SENSHUB這個(gè)比較適合diy

http://www.ti.com.cn/tool/cn/boostxl-senshub …

查看全部問答∨

加速度傳感器自身坐標(biāo)系原點(diǎn)的確定

加速度傳感器自身坐標(biāo)系的坐標(biāo)原點(diǎn)如何確定。…

查看全部問答∨

一本老菜鳥的寶貝

我有幸參加了10月14日在中關(guān)村皇冠假日酒店舉辦的#2013 TI MSP430 Day#研討會,在會上半價(jià)購買了一本《MCU工程師煉成記:我和MSP430單片機(jī)》,這本書對于我們這些中老年的菜鳥來說真是通俗易懂,由于我們英語水平較差,讀懂說明書原文難度較大,《M ...…

查看全部問答∨
小廣播
添点儿料...
无论热点新闻、行业分析、技术干货……
設(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
主站蜘蛛池模板: 桓台县| 荣昌县| 建昌县| 惠水县| 龙川县| 三台县| 霍州市| 万宁市| 庆城县| 永寿县| 集贤县| 揭阳市| 东丽区| 苍梧县| 遵化市| 沁阳市| 安西县| 宝清县| 锡林郭勒盟| 天津市| 武汉市| 玛多县| 宝坻区| 玉田县| 高邑县| 白沙| 正定县| 稷山县| 高碑店市| 奇台县| 德保县| 洪洞县| 时尚| 乌拉特后旗| 渭源县| 保山市| 通海县| 大埔县| 峨边| 永胜县| 阳曲县|