HAL驱动库学习--如何使用HAL库
一 概述
下图是表述了用户层和HAL_Driver的交互过程,基本上从用户APP调用HAL_Driver APIs并且视情况当使用DMA或者专用中断时通过中断处理程序调用HAL_Driver APIs
使用DMA或中断时,中断模式通过回调函数来完成用户定义流程(实时处理),DMA中断模式使用相同的调用流程
二 具体使用过程
1 HAL(硬件抽象层) 初始化
2 HAL IO 操作流程 -- HAL functions 与内部数据处理类似发送/接收,读/写. 提供三种处理模型a Polling mode 查询模式,HAL函数在数据处理完成(阻塞)后返回处理状态(ok or err),可以通过HAL_PPP_GetState()获取具体错误信息<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">b Interrupt mode 中断模式,启动数据处理并开启了相应中断后返回处理状态;该模式下,驱动程序声明了4个函数• HAL_PPP_Process_IT(): 启动中断处理,一般在用户文件中• HAL_PPP_IRQHandler(): 全局外设中断,一般在stm32f0xx_it.c中• __weak HAL_PPP_ProcessCpltCallback (): 有关处理结束回调函数• __weak HAL_PPP_ProcessErrorCallback(): 有关错误回调处理__weak 弱声明,用户可以在应用中重新实现

c DMA mode 使能相应的DMA中断并启动DMA处理数据后返回处理状态;操作结束后调用回调函数通知用户处理完成;该模式下,驱动程序声明了4个函数:• HAL_PPP_Process_DMA():启动DMA过程,一般在用户文件中• HAL_PPP_DMA_IRQHandler():外设使用的DMA中断,一般在stm32f0xx_it.c中• __weak HAL_PPP_ProcessCpltCallback():有关过程结束回调函数• __weak HAL_PPP_ErrorCpltCallback():过程错误回调函数如果使用DMA模式,通常在HAL_PPP_MspInit()回调函数中执行DMA初始化

HAL驱动库学习--如何使用HAL库的更多相关文章
- HAL驱动的串口编程陷阱
http://bbs.elecfans.com/jishu_464356_1_1.html 手上有块NUCLEO STM32L053x板子,用来做串口实验,看了下ST的最新库HAL驱动,于是想用HAL ...
- Google之Chromium浏览器源码学习——base公共通用库(二)
上次提到Chromium浏览器中base公共通用库中的内存分配器allocator,其中用到了三方库tcmalloc.jemalloc:对于这两个内存分配器,个人建议,对于内存,最好是自己维护内存池: ...
- Windows动态库学习心得
最近在工作中需要给项目组其他成员提供调用函数,决心抛弃以前“拷贝头文件/源文件”的简陋方法,采用动态库的方式对自己开发的接口进行模块化管理.因之前一直没有机会从事Windows动态库的开发,现借助这个 ...
- backbone库学习-model
backbone库的结构: http://www.cnblogs.com/nuysoft/archive/2012/03/19/2404274.html 本文所有例子来自于http://blog.cs ...
- python 操作exls学习之路1-openpyxl库学习
这篇要讲到的就是如何利用Python与openpyxl结合来处理xlsx表格数据.Python处理表格的库有很多,这里的openpyxl就是其中之一,但是它是处理excel2007/2010的格式,也 ...
- boost库学习之regex
一.背景 项目中许多地方需要对字符串进行匹配,比如根据指定的过滤字符串来过滤文件名.刚开始是排斥使用boost库的,第一,我不熟悉boost库:第二,如果引入第三方库,就会增加库的依赖,这样的后果是, ...
- boost库学习之开篇
本系列文章使用boost_1.58.0版本. 一.欢迎使用boost C++库 boost致力于提供一个免费的.便携的源代码级的库. 我们重视那些与C++标准一起工作良好的库.boost库将要成为一个 ...
- 从Theano到Lasagne:基于Python的深度学习的框架和库
从Theano到Lasagne:基于Python的深度学习的框架和库 摘要:最近,深度神经网络以“Deep Dreams”形式在网站中如雨后春笋般出现,或是像谷歌研究原创论文中描述的那样:Incept ...
- IOS学习:常用第三方库(GDataXMLNode:xml解析库)
IOS学习:常用第三方库(GDataXMLNode:xml解析库) 解析 XML 通常有两种方式,DOM 和 SAX: DOM解析XML时,读入整个XML文档并构建一个驻留内存的树结构(节点树),通过 ...
随机推荐
- 纪念逝去的岁月——C/C++快速排序
快速排序 代码 #include <stdio.h> void printList(int iList[], int iLen) { ; ; i < iLen; i++) { pri ...
- 怎么控制表单placeholder属性的样式兼容各大浏览器?
当我们使用placeholder的时候会遇到样式的控制和版本的兼容问题(但是还是只有css3支持),以至于达不到我们想要的效果,下面来看一种: 下面是css: .invalid:-moz-placeh ...
- LaTeX算法排版
需要包含的 \usepackage[noend]{algpseudocode} \usepackage{algorithmicx,algorithm} 源码 \begin{algorithm}[t]\ ...
- 使用explain查看mysql查询执行计划
explain语句: 字段解释: type: all(全表扫描) ref() possible_keys: 预测使用什么列做为索引 key: 实际使用的key ...
- crontab的坑
1. 命令 全路径 (eg:which mysql) 2.执行脚本 (脚本中加上#!/bin/bash) eg: /bin/bash script.sh 3. 输出信息(>>) 使用全 ...
- iframe自适应高度js
<iframe src="http://www.fufuok.com/" id="iframepage" name="iframepage&qu ...
- 树莓派3b+ 用samba与windows共享文件
1. 树莓派安装samba sudo apt-get install samba 2. 设置一个公共目录 cd /;sudo mkdir share;sudo chmod 777 sharesudo ...
- asp.net 获取当前项目的根目录路径
获取网站根目录的方法有几种如: Server.MapPath(Request.ServerVariables["PATH_INFO"]) Server.MapPath(" ...
- ajax异步验证用户名密码,提示路径错误
使用thinkphp框架异步验证用户名和密码的时候,ajax路径错误可能有多重情况.我遇到的是,我自感路径没问题,且先前使用无错.由于多人合作使用svn,所以在更新代码后,使用firebug显示一直是 ...
- Asp.net点击按钮弹出文件夹选择框的实现(网页)
本文地址:http://www.cnblogs.com/PiaoMiaoGongZi/p/4092112.html 在Asp.net网站实际的开发中,比如:需要实现点击一个类似于FileUpload的 ...