当前位置: 首页 > news >正文

【HAL库】STM32CubeMX开发----STM32F407----SPI实验


前言

本次实验以 STM32F407VET6 芯片为MCU,使用 25MHz 外部时钟源。
SPI 通信引脚MCU引脚 对应关系如下:

SPI接口GPIO端口
CS(片选)PA4
SCLK(时钟)PA5
MISO(数据输入)PA6
MOSI(数据输出)PA7

一、使用STM32CubeMX ---- 新建SPI实验工程

步骤1:打开 STM32CubeMX 软件

在这里插入图片描述

步骤2:选择 从MCU开始我的项目

在这里插入图片描述

步骤3:选择MCU芯片

我们本次实验选择 STM32F407VET6 芯片做 MCU

在这里插入图片描述

进入工程编辑,具体界面如下:

在这里插入图片描述

步骤4:设置烧写方式为 SWD模式

这一步必须选择一种烧写方式,否则烧写一次程序后,芯片中就没法再次烧写程序了。需要硬件重启才可以重新烧写程序。

STM32烧写程序连接方式详解

在这里插入图片描述

步骤5:设置时钟源

设置外部晶振为芯片系统时钟源。

在这里插入图片描述

步骤6:设置时钟

STM32F407 时钟最大频率为 168M

在这里插入图片描述

步骤7:SPI 通信配置

SPI 通信配置如下:
在这里插入图片描述

SPI 片选引脚配置:

在这里插入图片描述
在这里插入图片描述

步骤8:项目编辑

在这里插入图片描述

步骤9:代码生成编辑

在这里插入图片描述

步骤10:点击 GENERATE CODE 生成代码

在这里插入图片描述
新建的工程,已经生成,接下来就是对工程代码的编辑。

二、使用keil5----编辑程序

想要使用keil5打开工程,需要电脑先安装 keil5编译环境,具体操作流程。
可以点击下方文章链接:Keil5编译环境搭建流程

编辑片选信号

具体代码如下:

#define Flash_CS(a)		if (a)	\
						HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET);\
						else	\
					    HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET)

编辑读写程序

static void SPI_WriteData(uint8_t *data, uint16_t len)//写入数据
{
	HAL_SPI_Transmit(&hspi1, data, len, 1000);
}

void SPI_ReadData(uint8_t *data, uint16_t len)//读取数据
{
	HAL_SPI_Receive(&hspi1, data, len, 1000);
}

uint8_t SPI_ReadWriteByte(uint8_t TxData)//读写一字节数据
{
    uint8_t Rxdata;
    HAL_SPI_TransmitReceive(&hspi1,&TxData,&Rxdata,1, 1000);       
 	return Rxdata;  	
}

相关文章:

  • 抖音运营方案详细/南京seo排名收费
  • vue.js合作做网站么/怎么免费建公司网站
  • 郑州seo关键词推广/优化水平
  • 外贸网站和普通网站/长春网站建设技术支持
  • 网站接广告/湖南seo推广
  • 做网站开发要学多久/最近的重要新闻
  • Fabric.js 使用图片遮盖画布(前景图)
  • JavaEE入门知识
  • 养殖废水生化后氨氮400mg/L做到15mg/L,有什么降氨氮的工艺?
  • CS5518芯片规格书|CS5518设计参数|MIPI转LVDS转换方案芯片设计规格书
  • 一、线程相关概念
  • 少儿 C++ 编程 学习路线 推荐(2022.12.22)
  • java微信支付v3系列——5.微信支付成功回调
  • UE中的FString操作
  • 线性模型-优化方法及推导过程
  • 践行者访谈实录:你真的了解CMMI吗?
  • postgresql及wal2json插件安装
  • 计算机今年炸了?现在还适合入行吗?