STM32 通过HAL库实现双机SPI程序烧录之一SPI双机通信

 一、实现SPI双机通信

主要功能:STM32F407VET6作为主机,STM32F103ZET6作为从机实现F4通过SPI接口发送数据给F1进行串口打印功能

主要是使用STM32cubemx进行相关配置(使用这个软件不能只用于生成代码,要学会读懂生成的每一句代码这样才方便后期调试,不然出现问题根本找不到)

二、主机F4相关配置

1、配置SYS

选择Serial Waire进行调试(通常都选这个)

2、配置RCC

3、配置串口

配置波特率(并未开启串口中断,不需要使用) 

串口重定向(方便使用printf进行打印,这里我添加在usart.c文件夹下)

#include "usart.h"

/* USER CODE BEGIN 0 */
#include "stdio.h"
struct __FILE 
{ 
	int handle; 
}; 

FILE __stdout;       
//定义_sys_exit()以避免使用半主机模式    
void _sys_exit(int x) 
{ 
	x = x; 
} 
//重定义fputc函数 
int fputc(int ch, FILE *f)
{ 	
	while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   
	USART1->DR=(uint8_t)ch;      
	return ch;
}
/* USER CODE END 0 */

UART_HandleTypeDef huart1;

/* USART1 init function */

4、配置SPI接口

配置模式未主机模式,开启NSS位进行片选(可以增加稳定性)

IO端口:

注:注意SPI的极性和相位要和从机保持一致

5、配置时钟树

直接选择最大即可

6、代码部分

在while循环直接添加

	uint8_t data[5] = {0x00,0x11,0x22,0x33,0x44};
	
	for(int i=0; i<fnum;i++)
	{
		HAL_SPI_Transmit_DMA(&hspi1,&ReadBuffer[i],1);
		HAL_Delay(1);
	}

至此,F4部分基本配置完成,接下来才是重点!!

三、从机F1相关配置

1、配置SYS

同上

2、配置RCC

同上

3、配置串口

同上

4、SPI配置

选择从机模式,输入片选,以及极性和相位

5、开启SPI中断相关

开启SPI中断,从机主要是采取中断的方式进行接收

6、时钟树配置

 同意配置最大即可

 生成代码,进入代码内部进行编写

7、修改中断函数

在stm32f1xx_it.c文件下找到SPI2_IRQHandler添加一下内容及开启中断重复接收

/**
  * @brief This function handles SPI2 global interrupt.
  */
void SPI2_IRQHandler(void)
{
  /* USER CODE BEGIN SPI2_IRQn 0 */

  /* USER CODE END SPI2_IRQn 0 */
  HAL_SPI_IRQHandler(&hspi2);
  /* USER CODE BEGIN SPI2_IRQn 1 */
	while(HAL_SPI_Receive_IT(&hspi2,(uint8_t *)spi_buffer, RXBUFFERSIZE) != HAL_OK)
	{

	}
  /* USER CODE END SPI2_IRQn 1 */
}

编写中断回调函数

 添加在stm32f1xx_it.c最后即可

void HAL_SPI_RxCpltCallback(SPI_HandleTypeDef* spiHandle)
{
	if(spiHandle->Instance == SPI2)
	{
		if(spi_rx_cnt < SPI_REC_LEN)
		{
			ReadBuffer[spi_rx_cnt] = spi_buffer[0];
			spi_rx_cnt++;
			printf("buffer: 0x%x\r\n",spi_buffer[0]);
		}
	}
}

8、主函数添加

HAL_SPI_Receive_IT(&hspi2,(uint8_t *)spi_buffer, RXBUFFERSIZE);

至此从机相关也编写完毕,在SPI回调函数中,会打印接收到的内容如下:

 出现已下现象即可表明通信成功!!!完成了SPI双机烧录的第一步,下一章讲讲解STM32从SD卡读取bin文件并通过SPI接口发送给从机

需要源代码的请留言,创造不易欢迎点赞收藏,感谢支持

  • 2
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: 要使用STM32F4HAL库1.27.0,您需要经过以下步骤: 1. 下载库文件:您可以从ST官方网站上下载STM32F4HAL库1.27.0的压缩包,解压缩后会得到库文件的文件夹。 2. 添加库文件到工程:将库文件中的文件夹(通常是如"STM32F4xx_HAL_Driver")复制到您的工程文件夹中。然后,在工程文件夹的源文件目录中创建一个名为"Drivers"的文件夹,并将库文件夹移动到此目录中。 3. 配置工程文件:打开您的工程,找到相应的工程文件(通常是".cproject")。在该文件中,找到与编译器相关的选项并添加库文件的路径。这样,编译器就能够找到和使用库文件。 4. 编写代码:在您的应用程序中,通过包含库的头文件和函数调用来使用STM32F4HAL库的功能。您可以根据您的需要使用不同的库功能,比如GPIO、USART、SPI等。 5. 编译和烧录:编译您的工程,并将生成的可执行文件烧录STM32F4系列的微控制器中。此步骤通常是通过使用ST-Link或其他JTAG/SWD调试器来完成的。 值得注意的是,以上步骤是一个基本的使用STM32F4HAL库的流程,具体步骤可能会因为不同的开发环境、IDE或者版本而有所变化。建议您在使用库之前,详细阅读官方提供的库文档和示例代码,以便更好地理解和使用STM32F4HAL库。 ### 回答2: 为了使用STM32F4HAL库1.27.0,需要按照以下步骤进行操作: 1. 确保已安装并正确配置开发工具。包括STM32CubeMX和相应的编译软件工具链(如Keil、IAR等)。 2. 下载并安装STM32Cube软件包,其中包含了HAL库的最新版本。 3. 打开STM32CubeMX,创建一个新的工程并选择合适的芯片型号。 4. 在Cube配置向导中,添加所需的外设和功能模块,并进行相应的配置。 5. 确认配置无误后,点击生成代码按钮,STM32CubeMX将自动生成初始化和配置代码。 6. 打开生成的工程文件,找到主要的代码文件(通常为main.c或者类似的文件),在其中添加自己的应用代码。 7. 使用HAL库的函数来完成所需的操作,如GPIO的初始化和控制、UART的配置和通信、定时器的设置等等。可以在相关的HAL库文档中查找API函数及其用法。 8. 编译并下载代码到目标板上进行测试。确保连接正确,调试工具(如JTAG/SWD转换器和调试器)已正确配置。 9. 运行代码,测试功能是否按照预期工作。根据需要进行调试和优化。 10. 如果需要,可以参考STM32F4HAL库的例程和官方文档,以获取更多关于HAL库使用的参考信息。 以上是使用STM32F4HAL库1.27.0的一般步骤,具体的使用细节可能会因项目和需求而有所不同。在整个过程中,仔细阅读相关的文档和参考资料,同时靠自己的实践和调试经验来完善和优化代码,将有助于更好地使用STM32F4HAL库的功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值