最近在用STM MCU 的SPI3,把一些使用时的注意点给大家记录一下,该注意的几点都注意了:

1,开GPIO时种

2,开SPI3时钟

3,GPIO引脚功能设定

4,如果有引脚复用的或与JTAG口有共用的引脚要对GPIO进行remap等

代码如下:

void GPIO_Configuration(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO | RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB, ENABLE);

// NSS
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;         
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);

// SPI
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_4 |GPIO_Pin_5;         
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);

}

void SPI3_Configuration(void)
{
SPI_InitTypeDef SPI_InitStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI3, ENABLE);
RCC_PCLK1Config(RCC_HCLK_Div2);  // 36M

SPI_I2S_DeInit(SPI3);
  SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  SPI_InitStructure.SPI_DataSize = SPI_DataSize_16b;
  SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;
  SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;
  SPI_InitStructure.SPI_NSS = SPI_NSS_Hard;  // SPI_NSS_Soft
  SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_4;
  SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;
  SPI_InitStructure.SPI_CRCPolynomial = 7;
SPI_Init(SPI3,&SPI_InitStructure);

SPI_SSOutputCmd(SPI3, ENABLE);

SPI_Cmd(SPI3, ENABLE);

}

int main(void)
{
RCC_Configuration();
GPIO_Configuration();
SPI3_Configuration();
delay_init(72);

while(1)
{
GPIO_ResetBits(GPIOA,GPIO_Pin_15);
SPI_I2S_SendData(SPI3,0xAA55);
while( SPI_I2S_GetFlagStatus(SPI3, SPI_I2S_FLAG_BSY));
SPI_I2S_ReceiveData(SPI3);
        GPIO_SetBits(GPIOA,GPIO_Pin_15);
delay_ms(1);
}
}

//仿真观看SPI3寄存器状态 -- 正常

成功输出信号波形

STM32F103/302 SPI3 接口使用例程相关推荐

  1. PB proUSB门锁接口函数例程

    下载地址 因为程序在PB9中调用,但官方只提供了VB,DELPHI的代码实例,自己费了点心,写了个PB9调用的代码,本程序参照官方提供的Delphi和VB示例,如果你懒得自己动手,,请支持一下.

  2. Labelmx条码软件接口版调用例程

    <Label mx通用条码标签设计系统>是一款简单易用的专业条码标签设计系统.集画图设计.条码生成.标签制作.批量打印于一体. 恒佑科技为满足其它管理软件.进销存等软件调用label mx ...

  3. stm32f103利用HC06进行蓝牙通信,在7针的OLED屏幕上显示,带数据更新功能(带超详细讲解)

    stm32f103利用HC06进行蓝牙通信,在7针的OLED屏幕上显示,带数据更新功能(带超详细讲解) 首先看看效果吧 手机端发送一个数据在OLED屏幕上显示 其实蓝牙通信就是个蓝牙转串口的过程,手机 ...

  4. ESP32 SPI 接口的应用

    总体介绍 1. ESP32 共有 4 个 SPI 控制器 SPI0.SPI1.SPI2.SPI3,用于连接支持 SPI 协议的设备. SPI0 控制器作为 cache 访问外部存储单元接口使用; SP ...

  5. Aurora8B10B IP使用 -04- IP例程应用实例

    前言 本文主要介绍了关于Aurora8B10B IP官方提供的模板工程的使用,并进行了简要的仿真查看测试结果,确保仿真传输的正确性. 示例设计架构 示例设计 每个 Aurora 8B/10B 内核都包 ...

  6. Henry的VB.NET之旅(十)—何时用接口

    ?????? Henry的VB.NET之旅(十)-何时用接口 ??????????????????????????????????????? 韩睿? 大李没告诉我接口与抽象类的区别,什么时候用接口,什 ...

  7. 【Esp32】Esp32+sx1268 Spi接口驱动SX1268模块

    [Esp32]Spi接口驱动SX1268模块 0. 实验结果 1.原理解析 2.硬件接线 3. SX1268 模块的 SPI 时序分析 4. 基于 ESP32 实现函数封装 4.1 读寄存器 4.2 ...

  8. LED显示屏二次开发接口的设计方案

    引言 在LED 显示屏工程应用中,有单块显示屏项目,但更多的是多块显示屏项目.对于单块显示屏,直接使用厂商配置的控制软件就满足要求了:但对于多块显示屏,尤其是系统集成项目,厂商配置的控制软件就很难满足 ...

  9. 基于STM32和W5500的Modbus TCP通讯

     在最近的一个项目中需要实现Modbus TCP通讯,而选用的硬件平台则是STM32F103和W5500,软件平台则选用IAR EWAR6.4来实现. 1.移植前的准备工作 为了实现Modbus ...

最新文章

  1. 华为云AI开发部总经理罗华霖:华为人工智能的实践与创新
  2. 记录猫眼电影的自定义字体反爬
  3. 信息安全管理体系 ISMS
  4. 微服务基础架构的5个关键问题
  5. 互联网1分钟 | 0110 腾讯联手拳头游戏成立腾竞体育;百度智能云发布中国首款智能边缘计算产品BIE...
  6. 突破模糊定性分析,批归一化和权重衰减的球面优化机制
  7. 如何安装redmine插件
  8. teamview修改id
  9. POJ 1952 BUY LOW, BUY LOWER
  10. python百度人脸识别_python 与 百度人脸识别api
  11. 001-电脑操作规范-2019年03月.doc
  12. Win10 Build 18237发布:登录屏幕启用毛玻璃特效
  13. 易基因|干货:手把手教你做RNA m5C甲基化测序分析(RNA-BS)
  14. 电子学会-全国青少年编程等级考试真题Scratch一级(2019年3月)
  15. 找回win10自带的windows照片查看器
  16. Speedoffice(excel)如何利用SUMIF函数求和
  17. 51单片机点阵屏实现俄罗斯方块
  18. 沈阳服务器主板维修,沈阳铁西区附近电脑主板维修
  19. 2017二本各大学计算机分数线,2017年二本院校排名及分数线
  20. 1的阶乘到100的阶乘之和

热门文章

  1. 解决远程连接mysql错误1130
  2. 很炫的shell theme
  3. 【每日进步】May 2012
  4. MaxScript Slider/Timer
  5. [原创].NET 分布式架构开发实战之一 故事起源
  6. testInt转换成字符串
  7. UA MATH567 高维统计 专题1 Supervised PCA Regression概述
  8. Linux grep 命令初步学习
  9. Linux下调试器GDB的简单使用图解
  10. windows令牌学习