一. 环境搭建

1.1 软硬件选择

硬件选择:选择正点原子的阿波罗STM32H743开发板。(WCH-Link)

软件选择:STM32CubeMX + Keil + VSCode

1.2 STM32CubeMX配置

这里有个别人写好的可以参考

https://blog.csdn.net/qq_45396672/article/details/120877303

新建一个 CubeMX 工程,选择STM32H743IIT6

在这里插入图片描述

RCC设置

在这里插入图片描述

时钟系统(时钟树)配置

在这里插入图片描述

LED引脚配置,在①处可以进行搜索引脚,设置模式,②③出进行具体的配置
在这里插入图片描述
在这里插入图片描述

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

如果使用STM32CubeIDE的话记得把USE_NEWLIB_REENTRANT设置成Enabled,我是用的Keil就不需要打开了。

在这里插入图片描述

把这个修改一下,我修改的是TIM7,貌似其他的也行,具体原因忘记了
在这里插入图片描述

接下来就可以生成代码了,Ctrl+S保存一下
在这里插入图片描述

更改一下生成Keil代码
在这里插入图片描述

然后点击GENERATE CODE生成代码
在这里插入图片描述

1.3keil配置

在这里插入图片描述

二、代码编写

这里就创建两个任务,Led0 500ms闪烁一次,Led1 1000ms闪烁一次。

在cubemx里面创建
在这里插入图片描述
在这里插入图片描述
配置完成之后生成代码,然后在Keil里面编写代码
在这里插入图片描述

void StartTaskLed0(void *argument)
{
  /* USER CODE BEGIN 5 */
  /* Infinite loop */
  for (;;)
  {
    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_1);
    osDelay(500);
  }
  /* USER CODE END 5 */
}
void StartTaskLed1(void *argument)
{
  /* USER CODE BEGIN StartTaskLed1 */
  /* Infinite loop */
  for (;;)
  {
    HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_0);
    osDelay(1000);
  }
  /* USER CODE END StartTaskLed1 */
}

编译运行,LED0每500ms状态变化,LED1每1000ms状态变化。实验成功。

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐