色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

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

3天內不再提示

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

lhl545545 ? 來源:ST MCU 信息交流 ? 作者:ST MCU 信息交流 ? 2020-06-10 08:38 ? 次閱讀

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

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

STM32的DMA硬件雙緩沖模式,只支持從外設到內存或從內存到外設兩種應用場景,且工作在循環模式。內存到內存是不支持雙緩沖模式的,當然它也不支持DMA循環模式。【下圖截取于STM32F4的參考手冊】

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

關于STM32 DMA雙緩沖模式實現原理不復雜,這里就不贅述了。下面進入到示例的實現過程。【注:手機模式下圖片可以點擊放大查看】

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

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

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

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

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

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

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

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

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

一、這里準備了兩個數組用來存儲ADC的轉換結果。

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

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

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

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

代碼A,使能ADC外設并稍作延時,令其穩定下來。

代碼B,準備了幾個跟DMA傳輸完成及出錯有關的回調函數。三個回調函數我共用一個,這里圖省事了。實際應用時請具體調整。

代碼C,調用DMA雙緩沖模式的關鍵函數。

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

三、編譯、除錯后,運行看結果。下面截圖是我在調試過程中隨意截取的。ADC的輸入通道中有2個通道分別固定接GND和VDD,其它3個通道的輸入管腳懸空,數據波動大屬正常現象。

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

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

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

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

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 芯片
    +關注

    關注

    456

    文章

    50965

    瀏覽量

    424855
  • 代碼
    +關注

    關注

    30

    文章

    4803

    瀏覽量

    68754
收藏 人收藏

    評論

    相關推薦

    STM32CubeMX生成的代碼,是怎樣的HAL架構?

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

    HALSTM32開發中的重要性

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

    STM32項目實戰:基于STM32F4的智能燈光控制系統(LVGL),附項目教程/源碼

    《智能燈光控制系統_STM32F4》項目完整文檔、項目源碼,私信小雯老師免費領取。STM32項目實戰之“智能燈光控制系統”(基于STM32F4)今天小編來分享一個《智能燈光控制系統》的項目案例,硬件
    的頭像 發表于 10-17 16:16 ?885次閱讀
    <b class='flag-5'>STM32</b>項目實戰:基于<b class='flag-5'>STM32F4</b>的智能燈光控制系統(LVGL),附項目教程/源碼

    STM32F4 HAL下CAN發送導致FLASH報錯怎么解決?

    [td]芯片型號為:STM32F407VET6。使用CubeMX配置并生成HAL。 在工程中,配置了CAN1和CAN2。并且調用了函數HAL
    發表于 09-09 08:27

    【GD32 MCU 移植教程】8、從 STM32F4xx 系列移植到 GD32F4xx 系

    GD32F4xx 系列 MCU 是基于 Arm? Cortex?-M4 處理器的 32 位通用微控制器,與 STM32F4xx系列 MCU
    的頭像 發表于 09-06 09:40 ?1405次閱讀
    【GD32 MCU 移植教程】8、從 <b class='flag-5'>STM32F4</b>xx <b class='flag-5'>系列</b>移植到 GD32<b class='flag-5'>F4</b>xx 系

    課程上線 | STM32單片機入門教程(1)基于HAL的多核心開發(F1/F4/G0/U5)

    ?好消息!華清遠見STM32入門視頻課程《基于HALSTM32多核心開發》正式上線,已更新90講,持續更新中,8月份將全部上線。課程優勢真人出鏡,手把手教學一板玩轉
    的頭像 發表于 08-08 16:42 ?402次閱讀
    課程上線 | <b class='flag-5'>STM32</b>單片機入門教程(1)基于<b class='flag-5'>HAL</b><b class='flag-5'>庫</b>的多核心開發(<b class='flag-5'>F</b>1/<b class='flag-5'>F4</b>/G0/U5)

    STM32F40xxx、STM32F41xxx、STM32F42xxx、STM32F43xxx中文手冊

    STM32F4系列單片機中文手冊
    發表于 08-08 14:32 ?2次下載

    自制一款兼容STM32F1/F4芯片的飛控板

    自己制作的一款兼容STM32F1/F4芯片的飛控板。
    發表于 07-04 14:07 ?0次下載

    STM32F4系列有對PI/SI仿真要求的文件嗎?

    STM32F4系列有對PI/SI仿真要求的文件嗎?比如PDN Targets and Decoupling Example SI信號要求
    發表于 07-02 06:26

    請問STM32F4系列有對PI/SI仿真要求的文件嗎?

    STM32F4系列有對PI/SI仿真要求的文件嗎?
    發表于 06-03 06:25

    STM32F4或者STM32L4自帶的DSP做FFT運算是不是只能做基2的點數?

    請教,用STM32F4或者STM32L4自帶的DSP做FFT運算是不是只能做基2的點數,如果采樣200點,還能用dsp來進行FFT嘛,或者自己找個任意點數的FFT算法計算。
    發表于 05-11 08:32

    STM32CubeF4 1.24.0的DFU_Standalone工程不能識別設備是什么原因導致的?

    STM32F413H Discovery 板子上運行 STM32CubeF4 1.24.0 里面的 DFU_Standalone 工程, 發現用 Keil MDK 編譯燒到板子上運行連到PC后設
    發表于 04-18 06:27

    stm32f4 FLASH_ProgramDoubleWord函數數據不能寫入flash的原因?

    STM32F401芯片,調用flash寫函數時,如果寫一個字,也就是調用stm32f4 FLASH_ProgramWord函數,能正確寫入;如果換成stm32f4 FLASH_Pro
    發表于 04-12 06:50

    STM32F1改用STM32F2或STM32F4芯片后,發現芯片根本不能正常工作怎么解決?

    曾有工程師反映,之前用STM32F1系列芯片好好的,后來因為產品需要,改用STM32F2或STM32F4
    發表于 04-08 06:45

    請問引腳數相同的STM32F2的程序可以直接運行在STM32F4的上嗎?

    引腳數相同的STM32F2的程序可以直接運行在STM32F4芯片上嗎?手冊上說F4全兼容F2的軟件
    發表于 03-27 07:43
    主站蜘蛛池模板: 国产又黄又硬又粗| 青青青手机视频| 午夜小视频免费观看| 国产AV精品久久久毛片| 午夜伦理在线观看| 久久久中日AB精品综合| 99久久精品免费看国产一区二区| 欧美激情性AAAAA片欧美| 大香伊人久久精品一区二区| 亚洲 成人网| 伦理片飘花手机在线| 床伴在线观看免费高清完整泰剧第四集| 丝瓜视频樱桃视频在线观看免费 | 99热久久这里只有精品视频| 色精品极品国产在线视频 | 久久性色AV亚洲电影无码| WWW国产亚洲精品久久久日本| 午夜理论片日本中文在线| 久久影院毛片一区二区| 嘟嘟嘟影院免费观看视频| 亚洲综合久久一本伊伊区| 日本xxxxx按摩19| 久久精品亚洲牛牛影视| 第一次处破女18分钟免费| 影音先锋男人av橹橹色| 三级黄色小视频| 老鸭窝毛片| 国产在线播放91| 成人国产亚洲欧美成人综合网| 亚洲欧美日本国产在线观18| 泡妞高手在都市完整版视频免费| 果冻传媒在线观看视频| 草莓视频在线看免费高清观看 | 成品片a免人看免费| 在线免费观看日本| 思思99热久久精品在线6| 免费在线观看的毛片| 黄网13区| 国产精品 日韩精品 欧美| 99精品免费久久久久久久久日本| 亚洲国产精品久久又爽黄A片|