Windows环境下STM32板子初始化freertos并与电脑端进行spi通信

安装环境

先下载STM32CubeIDE,STM32CubeIDE里包括了STM32CubeMX(用于初始化引脚和时钟等),支持ST-LINK 和 J-Link调试和烧录。https://www.st.com/zh/development-tools/stm32cubeide.html是下载网址
在这里插入图片描述

选择STM32的板子型号

以STM32H7B3I-DK为例,点击Start new STM32 project按钮,出现以下界面:
在这里插入图片描述
在这个界面搜索对应的板子型号并选中,点击next,跳转到新页面:
在这里插入图片描述
填好项目名字和存放地址,点击finish,之后跳出的弹框均选择确定,完成项目的初始化创建。

配置引脚

在这里插入图片描述
Pinout view中显示的就是引脚的使用情况,绿色是已使用,灰色是未使用,其余是默认使用无法更改。
在这里插入图片描述
点击Connectivity,选中SPI2(根据自己需要开启),左侧绿勾是正在使用,红禁是不能使用,黄叹号是只有部分配置能使用,其余是未使用。
Mode是选择spi通信方式,当前板子属于主/从设备,全双工/半双工/仅接或收;NSS是片选。
下方Configure中的Parameter Setting中设置基本参数,Data Size一次传输大小,Prescaler是分频倍率,用于控制传输速度,其余默认(自己去网上搜含义)。
DMA Setting设置SPI是否启用DMA传输,这里仅用DMA传出数据。
在这里插入图片描述
GPIO Setting是引脚配置,可以配置sck、miso、mosi、cs对应引脚。
在这里插入图片描述
NVIC Setting配置中断等级。
在这里插入图片描述

时钟配置

根据需求修改时钟配置,可以直接在蓝色方框中修改频率,修改后按enter键会自动生成时钟配置方案。找到SPI相关的时钟频率进行修改,使其与传输速度匹配(SPI2USB适配器)。
在这里插入图片描述

调试配置

Debug选择Serial Wire模式,该板子自带ST-Link调试器,插入电源线与电脑连接即可调试。在这里插入图片描述

FreeRTOS

Interface选择CMSIS_V1,V2具有AWS服务,根据情况自行选择。
在Configure的Tasks and Queues中可以生成FreeRTOS中的运行程序。在这里插入图片描述

生成项目

在Code Generator中勾选Generate peripheral initialization as a pair of ‘.c/.h’ files per peripheral,生成.c/.h文件。Ctrl+S保存.ioc文件并生成代码。

在这里插入图片描述
Core中是高级逻辑代码,用于编写软件逻辑;Drivers中是硬件抽象层代码,对硬件操控逻辑的封装,CMSIS是一种可移植标准库;Middlewares中是FreeRTOS代码。
在这里插入图片描述

SPI通信代码

在freertos.c文件里的StartDefaultTask函数中添加如下代码,StartDefaultTask是在.ioc文件中生成的freertos任务。根据需要选择是否用DMA传输。STM32H7B3I-DK中SPI的传输速度过快会传输失败。

/* USER CODE END Header_StartDefaultTask */
void StartDefaultTask(void const * argument)
{
  /* USER CODE BEGIN StartDefaultTask */
  /* Infinite loop */
  printf("Hello freertos!\r\n");
  uint8_t tx_data[] = "hello\n"; // 要发送的数据
  printf("transmit begin!\r\n");
  // 通过DMA传输数据
  HAL_StatusTypeDef status;

  for(;;)
  {
	  // 购买的转接板需要再写数据前,拉低CS0引脚电平
	  HAL_GPIO_WritePin(GPIOH, GPIO_PIN_8,GPIO_PIN_RESET);
//	  status = HAL_SPI_Transmit_DMA(&hspi2, tx_data, sizeof(tx_data)-1);
	  status = HAL_SPI_Transmit(&hspi2, tx_data, sizeof(tx_data), HAL_MAX_DELAY);
	    if (status == HAL_OK) {
	      // 发送成功,等待中断回调函数
	  	  printf("DMA transmit end!\r\n");
	    } else {
	      // 发送失败,处理错误
	  	  printf("DMA transmit fail!\r\n");
	    }
//	    while(HAL_DMA_GetState(&hdma_spi2_tx) != HAL_DMA_STATE_READY);
	    HAL_GPIO_WritePin(GPIOH, GPIO_PIN_8,GPIO_PIN_SET);
	    osDelay(500);
  }
  /* USER CODE END StartDefaultTask */
}

构建烧录

由于STM32H7B3I-DK自带ST-Link,所以在连接板子之后直接构建和烧录即可。在debug和run中都会先烧录。

调试

在电脑上插入板子,打开设备管理器,出现如下所示端口,即表示成功连接:
在这里插入图片描述
在这里插入图片描述
COM7用于debug时输出调试信息,可以用printf打印。安装PuTTY软件用于在电脑端接收调试数据。STM32H7B3I-DK默认使用UART1来输出调试信息,因此在PuTTY中按UART1参数来进行配置。

在这里插入图片描述
PuTTY先在Connetion中的Serial进行配置,Session中选择Serial模式,点击Open即可。
在这里插入图片描述
在这里插入图片描述
配置完后开始调试,可以看到COM7接收到调试信息:
在这里插入图片描述
数据也成功通过SPI接口传输出去。
在这里插入图片描述
之后就是将板子上SPI对应的引脚接到spi2usb转接板上,spi2usb转接板插入电脑,在电脑上编写接收程序,这里就不再展示。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值