如何使用SPI库
1 声明SPI hanlde, 例如: SPI_HandleTypeDef hspi
2 通过实现HAL_SPI_MspInit()函数初始化底层资源
以下两个必须进行初始化
a 使能spi时钟
b 配置spi pins
以下根据需要初始化
c NVIC 中断配置
d DMA配置
3 配置hspi,包括模式,datasize,baudrate,msb/lsb,crc等
4 调用HAL_SPI_Init()函数,初始化spi配置以及底层资源(通过调用HAL_SPI_MspInit())

初始化与配置函数

  1. • HAL_SPI_Init()
  2. • HAL_SPI_DeInit()
  3. • HAL_SPI_MspInit()
  4. • HAL_SPI_MspDeInit()
  5. • HAL_SPI_InitExtended()

备注:
SPI中 datasize可以指定4-16bit数据,在SPI_DR寄存器中无论是字节还是字,数据总是右对齐,通讯时,只有数据字长范围内的位会随时钟输出
如下图,左侧只有0-->5位会输出,右侧只有0-->13位会输出

  1. 使用单线模式时,主机的MISO,从机的MOSI都可以作为普通IO使用。

HAL驱动库学习-SPI的更多相关文章

  1. HAL驱动库学习-ADC

    如何使用ADC驱动库 1  实现如下两个函数     a: HAL_ADC_MspInit()使能ADC时钟,设置时钟源, 使能ADC Pin,设置为输入模式,可选 DMA,中断     b:HAL_ ...

  2. HAL驱动库学习--如何使用HAL库

    一 概述 下图是表述了用户层和HAL_Driver的交互过程,基本上从用户APP调用HAL_Driver APIs并且视情况当使用DMA或者专用中断时通过中断处理程序调用HAL_Driver APIs ...

  3. STM32 HAL固件库编程的文件构架

    对于我这种以前只接触过51和AVR单片机编程的小菜来说,现在开始学习STM32的编程,对于函数的功能以及C语言的语法都还好理解,难的是它提供的那一套硬件抽象层(HAL)驱动是怎么和其他的东东搭配在一起 ...

  4. 第9章 初识HAL固件库

    本章参考资料:<STM32F76xxx参考手册>.<STM32F7xx规格书>.<Cortex-M3权威指南>, STM32 HAL库帮助文档:<STM32F ...

  5. uTenux——重新整理底层驱动库

    重新整理底层驱动库 1. 整理chip.h 在chip.h文件中的07----13的宏定义设置位如下,这样我们就不用在工程配中定义sam3s4c这个宏了,为我们以后通用少了一件麻烦事. //#if d ...

  6. Ardupilot设备驱动 IIC、SPI、USART

    设备代码层次结构 ​ Ardupilot设备驱动代码的层次结构采用 前端实现 和 后端实现 分割,前端库主要供机器代码层调用,后端库主要供前端调用.这里前端可以理解为应用层,后端理解为驱动层,前端调用 ...

  7. 基于STM32F4移植W5500官方驱动库ioLibrary_Driver(转)

    源: 基于STM32F4移植W5500官方驱动库ioLibrary_Driver 参考: 基于STM32+W5500 的Ethernet和Internet移植 Upgrade W5500 Throug ...

  8. HAL驱动的串口编程陷阱

    http://bbs.elecfans.com/jishu_464356_1_1.html 手上有块NUCLEO STM32L053x板子,用来做串口实验,看了下ST的最新库HAL驱动,于是想用HAL ...

  9. 驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址

    驱动开发学习笔记. 0.07 Uboot链接地址 加载地址 和 链接脚本地址 最近重新看了乾龙_Heron的<ARM 上电启动及 Uboot 代码分析>(下简称<代码分析>) ...

随机推荐

  1. jQuery常用方法验证

    验证邮箱: $('input[data-name="email"]').keyup(function () { var em; em = $(this).val(); if (!e ...

  2. 1055. The World's Richest (25)

    Forbes magazine publishes every year its list of billionaires based on the annual ranking of the wor ...

  3. 多种方式实现在Android 手机上抓包

    一.素材来源 https://www.zhihu.com/question/20467503 二.方法整理 2.1 方式1:Packet Capture + HTTP Injector 使用于在手机端 ...

  4. 好看的css3按钮和文本框

    .button{ width: 80px; line-height: 25px; text-align: center; ; color: #fff; text-shadow:1px 1px 1px ...

  5. HTML静态网页 Window.document对象

    一.找到元素: docunment.getElementById("id"):根据id找,最多找一个:    var a =docunment.getElementById(&qu ...

  6. Centos7 创建个文件 thread 怪现象

    我在~下创建个目录thread, 然后写了个程序, 再执行, 提示需要权限, 之后我重命名下文件的名字, 重新编译下, 就可以正常执行了.

  7. 在HTML文件的表单中添加{%csrf_token%}便可以解决问题

    原因是django为了在用户提交表单时防止跨站攻击所做的保护 只需在HTML文件的表单中添加{%csrf_token%}便可以解决问题 ------------------------if判断{% i ...

  8. Python字符串,元组、列表、字典

    1.字符串 <string>.strip() 去掉两边空格及去指定字符 <string>.split() 按指定字符分隔字符串为数组 <string>.isdigi ...

  9. String的hashcode(java)

    hashCode就是我们所说的散列码,使用hashCode算法可以帮助我们进行高效率的查找,例如HashMap,说hashCode之前,先来看看Object类. Java程序中所有类的直接或间接父类, ...

  10. CentOS 6.6 安装 PHP Memcached 扩展

    PHP 的 Memcached扩展使用了 libmemcached 库提供的 api 与 memcached 服务端进行交互.它同样提供了一个 session 处理器(memcached). PHP ...