chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于STM32F4系列芯片和STM32CubeF4 HAL庫組織和添加用戶代碼

lhl545545 ? 來源:ST MCU 信息交流 ? 作者:ST MCU 信息交流 ? 2020-06-10 08:38 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

我們在MCU嵌入式應(yīng)用開發(fā)過程中,有時需要做些較大量的數(shù)據(jù)傳輸和適時處理,此時使用DMA的雙緩沖模式可能是個不錯的選擇。這樣既可以保障數(shù)據(jù)的連續(xù)、流暢傳輸,又能保障數(shù)據(jù)的及時處理【包括數(shù)據(jù)更新】,同時又能減輕CPU的負荷。

常有人想使用STM32 DMA的雙緩沖模式,但又覺得實現(xiàn)起來似乎有點困難,也不太容易找到現(xiàn)存的例程。我這里就基于STM32F4芯片及Cube庫簡單地演示下實現(xiàn)過程。

STM32的DMA硬件雙緩沖模式,只支持從外設(shè)到內(nèi)存或從內(nèi)存到外設(shè)兩種應(yīng)用場景,且工作在循環(huán)模式。內(nèi)存到內(nèi)存是不支持雙緩沖模式的,當然它也不支持DMA循環(huán)模式?!鞠聢D截取于STM32F4的參考手冊】

基于STM32F4系列芯片和STM32CubeF4 HAL庫組織和添加用戶代碼

關(guān)于STM32 DMA雙緩沖模式實現(xiàn)原理不復(fù)雜,這里就不贅述了。下面進入到示例的實現(xiàn)過程?!咀ⅲ?a href="http://www.brongaenegriffin.com/v/tag/107/" target="_blank">手機模式下圖片可以點擊放大查看】

我這里大致要做的事情就是,ADC模塊對5個模擬通道進行循環(huán)掃描采樣轉(zhuǎn)換,ADC結(jié)果由DMA搬到相應(yīng)存儲緩沖區(qū)。每一輪傳輸完成后,自動切換傳輸線路并使用另一個存儲區(qū),繼續(xù)新一輪傳輸。兩條傳輸線路就這樣輪流執(zhí)行,不過使用的DMA傳輸流或通道還是同一個。本例中的DMA傳輸流程如下圖示意。至于數(shù)據(jù)搬到各存儲區(qū)后怎么辦,視應(yīng)用而定,在此不表。

基于STM32F4系列芯片和STM32CubeF4 HAL庫組織和添加用戶代碼

現(xiàn)在開始借助于STM32CubeMx圖形化配置工具做基本的配置并生成初始化文件。

**對ADC做些基本配置。開啟了ADC1的5個通道,做連續(xù)、掃描轉(zhuǎn)換。ADC轉(zhuǎn)換的啟動選擇軟件啟動模式。

基于STM32F4系列芯片和STM32CubeF4 HAL庫組織和添加用戶代碼

**對ADC的DMA請求及DMA傳輸做相關(guān)配置。具體配置見下圖。

基于STM32F4系列芯片和STM32CubeF4 HAL庫組織和添加用戶代碼

**將其它必需的時鐘、調(diào)試口等配置完成后即可生成初始化代碼并建立工程。

**在CubeMx生成的初始化代碼基礎(chǔ)上,添加用戶代碼。

一、這里準備了兩個數(shù)組用來存儲ADC的轉(zhuǎn)換結(jié)果。

基于STM32F4系列芯片和STM32CubeF4 HAL庫組織和添加用戶代碼

二、我基于STM32F4系列芯片和STM32CubeF4 HAL庫組織和添加用戶代碼。代碼內(nèi)容詳見下圖。

基于STM32F4系列芯片和STM32CubeF4 HAL庫組織和添加用戶代碼

上圖中A、B、C、D四部分是我基于當前應(yīng)用而添加的用戶代碼,在此稍作解釋。

代碼A,使能ADC外設(shè)并稍作延時,令其穩(wěn)定下來。

代碼B,準備了幾個跟DMA傳輸完成及出錯有關(guān)的回調(diào)函數(shù)。三個回調(diào)函數(shù)我共用一個,這里圖省事了。實際應(yīng)用時請具體調(diào)整。

代碼C,調(diào)用DMA雙緩沖模式的關(guān)鍵函數(shù)。

代碼D,使能ADC事件的DMA請求功能并軟件啟動AD轉(zhuǎn)換。

三、編譯、除錯后,運行看結(jié)果。下面截圖是我在調(diào)試過程中隨意截取的。ADC的輸入通道中有2個通道分別固定接GND和VDD,其它3個通道的輸入管腳懸空,數(shù)據(jù)波動大屬正?,F(xiàn)象。

基于STM32F4系列芯片和STM32CubeF4 HAL庫組織和添加用戶代碼

到此,基于STM32DMA雙緩沖的功能演示就結(jié)束了。是不是感覺很方便而簡單呢?

個人認為,要實現(xiàn)上面功能盡量看懂相關(guān)庫函數(shù)的基本功能,并對相應(yīng)外設(shè)的工作有基本的了解,畢竟還是需要自行組織部分代碼的。如果說只知生硬地調(diào)用現(xiàn)有庫函數(shù),那實現(xiàn)起來還是有困難。

另外,即使調(diào)用庫函數(shù),在給函數(shù)的參變量賦值時注意別給錯了。大部分類似問題編譯器能發(fā)現(xiàn),有些是發(fā)現(xiàn)不了的。比方源地址和目標地址編譯器是辨別不了的。

還有,基于庫函數(shù)編程時,如果庫函數(shù)里已經(jīng)就某些變量或參數(shù)給出了定義或規(guī)劃,就盡量用它準備的,除非你發(fā)現(xiàn)相關(guān)定義或規(guī)劃不合理或有錯。前不久一個STM32用戶,在初始化RTC日歷時給星期賦予了一個不正確的值導(dǎo)致RTC的時間運行異常。本來庫代碼已經(jīng)對從星期日到星期六明確地做了宏定義供我們使用【這樣做本身就可以一定程度防止出錯】,結(jié)果他在調(diào)試時直接賦數(shù)據(jù),不小心給了不合理的數(shù)據(jù)沒及時發(fā)現(xiàn),導(dǎo)致程序異常。然后反饋說庫代碼有bug。算bug嗎?可以算是也可以不是。如果初始化時按照人家預(yù)備好的宏參數(shù)來賦值就不會在這個地方折騰一把。
責(zé)任編輯:pj

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 芯片
    +關(guān)注

    關(guān)注

    462

    文章

    53249

    瀏覽量

    455250
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4925

    瀏覽量

    72445
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    立即在GitHub上搶先體驗面向STM32U5的最新STM32Cube HAL更新

    其滿足您的需求。 如何獲取預(yù)覽版本 面向STM32U5系列STM32Cube HAL2預(yù)覽版已在GitHub代碼
    的頭像 發(fā)表于 10-20 17:12 ?349次閱讀

    stm32f4新手求教

    芯片stm32f4xx_DFP3.0.0只有1.98m大小,芯片stm32f4xx_DFP2.16.0卻有152m大小,為何差距這么大,我該裝哪個
    發(fā)表于 07-09 12:04

    使用studio構(gòu)建STM32F4工程報錯的原因?

    使用studio 構(gòu)建STM32F4 工程,什么都沒有動報了以上錯誤.這是為什么 ?
    發(fā)表于 06-26 07:26

    零知開源——STM32F4實現(xiàn)ILI9486顯示屏UI界面系列教程(二):日歷功能實現(xiàn)

    本教程詳細介紹了基于STM32F4和ILI9486觸摸屏的日歷應(yīng)用開發(fā),涵蓋硬件連接、軟件實現(xiàn)與零知IDE配置。核心功能包括月份視圖展示、滑動切換和日期標記,通過LVGL實現(xiàn)UI組件及觸摸事件處理
    的頭像 發(fā)表于 06-25 17:34 ?416次閱讀
    零知開源——<b class='flag-5'>STM32F4</b>實現(xiàn)ILI9486顯示屏UI界面<b class='flag-5'>系列</b>教程(二):日歷功能實現(xiàn)

    STM32F4標準外設(shè)資料

    stm32f4xx.h,標準外設(shè)
    發(fā)表于 06-08 09:49 ?2次下載

    STM32F3系列、STM32F4系列STM32L4系列STM32L4+系列Cortex-M4編程手冊

    電子發(fā)燒友網(wǎng)站提供《STM32F3系列、STM32F4系列、STM32L4系列
    發(fā)表于 06-06 17:06 ?8次下載

    基于STM32 HAL與標準的esp8266接入機智云方案(二)

    在《基于STM32HAL與標準的esp8266接入機智云方案(一)》中,我們詳細介紹了硬件連接和機智云客戶端的創(chuàng)建。本篇將重點講解如何下載代碼、分析下載的
    的頭像 發(fā)表于 05-28 18:02 ?946次閱讀
    基于<b class='flag-5'>STM32</b> <b class='flag-5'>HAL</b><b class='flag-5'>庫</b>與標準<b class='flag-5'>庫</b>的esp8266接入機智云方案(二)

    STM32開發(fā)入門進階必備!《STM32嵌入式系統(tǒng)開發(fā)—基于STM32CubeMX和HAL》新書發(fā)布!

    近日,由華清遠見教育科技集團精心編撰的教育部高等學(xué)校電子信息類專業(yè)教學(xué)指導(dǎo)委員會規(guī)劃教材、普通高等教育電子信息類專業(yè)系列教材——《STM32嵌入式系統(tǒng)開發(fā)—基于STM32CubeMX和HAL
    的頭像 發(fā)表于 04-03 14:54 ?1155次閱讀
    <b class='flag-5'>STM32</b>開發(fā)入門進階必備!《<b class='flag-5'>STM32</b>嵌入式系統(tǒng)開發(fā)—基于<b class='flag-5'>STM32</b>CubeMX和<b class='flag-5'>HAL</b><b class='flag-5'>庫</b>》新書發(fā)布!

    Arduino中可以使用STM32F1或者STM32F4系列芯片的內(nèi)置看門狗嗎?

    Arduino中可以使用STM32F1或者STM32F4系列芯片的內(nèi)置看門狗嗎
    發(fā)表于 03-13 07:32

    使用STM32F4的ADC的時候,發(fā)現(xiàn)測量結(jié)果不準確,是什么原因?qū)е碌模?/a>

    請教各位大佬一個問題,我在使用STM32F4的ADC的時候,發(fā)現(xiàn)測量結(jié)果不準確。上網(wǎng)查看教程,發(fā)現(xiàn)F1系列有自動校準的函數(shù),但是F4沒有校準相關(guān)的設(shè)置,想請教一下是
    發(fā)表于 03-11 06:29

    stm32f4 sdio時鐘如何獲取通過什么函數(shù)?

    stm32f4系列sdio 時鐘如何獲取,stm32h7可以通過sdmmc_clk=HAL_RCCEx_GetPeriphCLKFreq(STM32
    發(fā)表于 03-07 08:26

    STM32F1開發(fā)指南

    這本書詳細講述了STM32HAL開發(fā)的配置流程,非常詳細
    發(fā)表于 01-21 15:33 ?3次下載

    STM32CubeMX生成的代碼,是怎樣的HAL架構(gòu)?

    需要注意,CubeMX只是一個初始化工具,它只是幫你完成了HAL外設(shè)和時鐘的初始化,具體程序的編寫還需要查閱HAL的說明,使用相關(guān)函數(shù)實現(xiàn)你想實現(xiàn)的功能。CubeMX生成的
    的頭像 發(fā)表于 01-01 21:01 ?1103次閱讀
    <b class='flag-5'>STM32</b>CubeMX生成的<b class='flag-5'>代碼</b>,是怎樣的<b class='flag-5'>HAL</b>架構(gòu)?

    HALSTM32開發(fā)中的重要性

    HAL(Hardware Abstraction Layer Library,硬件抽象層)在STM32開發(fā)中扮演著至關(guān)重要的角色。以下是HAL
    的頭像 發(fā)表于 12-02 13:35 ?1707次閱讀

    STM32項目實戰(zhàn):基于STM32F4的智能大棚溫控系統(tǒng)(LVGL),附項目教程/源碼

    今天小編來分享一個《智能大棚溫控系統(tǒng)》的項目案例,硬件平臺是STM32F4開發(fā)板+資源擴展板+顯示觸摸屏+仿真器,項目的演示界面如下圖所示。智能大棚溫控系統(tǒng)項目,需要一個風(fēng)扇執(zhí)行器件;一個溫濕度
    的頭像 發(fā)表于 10-25 13:54 ?1927次閱讀
    <b class='flag-5'>STM32</b>項目實戰(zhàn):基于<b class='flag-5'>STM32F4</b>的智能大棚溫控系統(tǒng)(LVGL),附項目教程/源碼