当前位置:   article > 正文

基于stm32_h5的freertos编程示例

基于stm32_h5的freertos编程示例

基于stm32_h5的freertos编程示例

本文目标:基于stm32_h5的freertos编程示例

按照本文的描述,应该可以在对应的硬件上通实验并举一反三。

先决条件:拥有C语言基础,装有编译和集成的开发环境,比如:Keil uVision5

使用外设:USART1、GPIO、SysTick

HAL库版本:STM32H5xx HAL Driver version number 1.1.0

实验目的

记录项目学习,学习在项目中进行freertos编程,体验freertos。

添加FreeRTOS

打开我以前的现有工程,找到FreeRTOS的相关配置,如下:

在这里插入图片描述

下载一下对应的资源包,以方便有对应的源码,进行install一下。

在这里插入图片描述

需要耐心的等待资料下载完成,

在这里插入图片描述

同意安装:

在这里插入图片描述

安装完成之后进行配置:

在这里插入图片描述

配置FreeRTOS

在这里插入图片描述

使用 FreeRTOS 时,它的时钟基准来之 SysTick 定时器;HAL 库的时钟基准建议更好为其他定时器,如下修改(TIMER6、TIMER7 是功能最弱的基础定时器,可以选择它们):

在这里插入图片描述

测试工程

按照上述的配置进行底层配置之后,添加一些代码进行测试,在生成的工程中有一个默认任务,我用来点灯测试一下,

void StartDefaultTask(void *argument)
{
  /* USER CODE BEGIN defaultTask */
  /* Infinite loop */
  for(;;)
  {
    HAL_GPIO_TogglePin(LED_GPIO_Port, LED_Pin);
    vTaskDelay(100);
  }
  /* USER CODE END defaultTask */
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

然后再创建第 2 个任务,它在 LCD 上不断显示变化的字符。任务的入口函数如下:

static void SPILCDTaskFunction( void *pvParameters ) 
{
    char buf[100];
    int cnt = 0;
    
    while (1)
    {
        sprintf(buf, "LCD Task Test : %d", cnt++);
        Draw_String(0, 0, buf, 0x0000ff00, 0);
        vTaskDelay(1000); 
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在“MX_FREERTOS_Init”函数中,创建第 2 个任务:

  xTaskCreate(
      SPILCDTaskFunction, // 函数指针, 任务函数
      "spi_lcd_task",     // 任务的名字
      200,                // 栈大小,单位为word,10表示40字节
      NULL,               // 调用任务函数时传入的参数
      osPriorityNormal,   // 优先级
      NULL);              // 任务句柄, 以后使用它来操作这个任务
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

编译、烧写、运行,可以看到开发板的 LED 不断闪烁,LCD 上不断显示变化的数值。

在这里插入图片描述

工程实验成功,后续将会继续记录项目中的实验,感谢关注。

本文中使用的测试工程

https://download.csdn.net/download/weixin_44317448/89150153?spm=1001.2014.3001.5503

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/451195
推荐阅读
相关标签
  

闽ICP备14008679号