HAL驅動庫學習--如何使用HAL庫


一 概述
下圖是表述了用戶層和HAL_Driver的交互過程,基本上從用戶APP調用HAL_Driver APIs並且視情況當使用DMA或者專用中斷時通過中斷處理程序調用HAL_Driver APIs
使用DMA或中斷時,中斷模式通過回調函數來完成用戶定義流程(實時處理),DMA中斷模式使用相同的調用流程

二 具體使用過程
1 HAL(硬件抽象層) 初始化

 
 
 
         
  1. 2 HAL IO 操作流程 -- HAL functions 與內部數據處理類似發送/接收,讀/寫. 提供三種處理模型
  2. a Polling mode 查詢模式,HAL函數在數據處理完成(阻塞)后返回處理狀態(ok or err),可以通過HAL_PPP_GetState()獲取具體錯誤信息
  3. <img src="d99d3f80-e264-472f-a9db-a088dc0c5c20_files/6ae88b28-8824-40a4-a8ea-71c3b1b5a415.png" border="0" alt="" style="font-size: 10.5pt; line-height: 1.5;" name="" width="416" height="205">
  4. b Interrupt mode 中斷模式,啟動數據處理並開啟了相應中斷后返回處理狀態;該模式下,驅動程序聲明了4個函數
  5. HAL_PPP_Process_IT(): 啟動中斷處理,一般在用戶文件中
  6. HAL_PPP_IRQHandler(): 全局外設中斷,一般在stm32f0xx_it.c
  7. __weak HAL_PPP_ProcessCpltCallback (): 有關處理結束回調函數
  8. __weak HAL_PPP_ProcessErrorCallback(): 有關錯誤回調處理
  9. __weak 弱聲明,用戶可以在應用中重新實現

 
 
 
         
  1. c DMA mode 使能相應的DMA中斷並啟動DMA處理數據后返回處理狀態;操作結束后調用回調函數通知用戶處理完成;該模式下,驅動程序聲明了4個函數:
  2. HAL_PPP_Process_DMA():啟動DMA過程,一般在用戶文件中
  3. HAL_PPP_DMA_IRQHandler():外設使用的DMA中斷,一般在stm32f0xx_it.c
  4. __weak HAL_PPP_ProcessCpltCallback():有關過程結束回調函數
  5. __weak HAL_PPP_ErrorCpltCallback():過程錯誤回調函數
  6. 如果使用DMA模式,通常在HAL_PPP_MspInit()回調函數中執行DMA初始化






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM