欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Nucleo-L476运行FreeRTOS学习1

程序员文章站 2022-06-09 16:33:35
...

 

假期在家由于肺炎疫情肆虐,在出租屋里面学习点专业内的东西,开始尝试写博客记录自己学习过程。

今天要做的是在ST官方出品的Nucleo-L476上初步运行Free RTOS

  •  使用硬件+软件工具

硬件平台使用Nucleo-L476

官方资料见:https://www.st.com/zh/evaluation-tools/nucleo-l476rg.html

板子LED,LD3为电源指示灯(LD2可以我们自己控制)

Nucleo-L476运行FreeRTOS学习1

工程和底层代码驱动使用CubeMX5.3.0生成(省去了建立工程和底层驱动编写),程序代码开发工具使用Keil5.25.2

  • 建立工程

New project,选择板子型号,Start Project

(同时Cube X界面上会有板子相配套的资源说明、用户手册,查阅很方便)

Nucleo-L476运行FreeRTOS学习1

 

选择Yes,使用默认板子外设配置

Nucleo-L476运行FreeRTOS学习1

可以看到,默认外设引脚已经有配置(包括时钟、外部IO、串口等配置)

Nucleo-L476运行FreeRTOS学习1

  • 工程配置

时钟已经默认选择LSE(外部低速),可以结合看板子的原理图 X2晶振焊接(X3外部高速未焊接)

Nucleo-L476运行FreeRTOS学习1

Nucleo-L476运行FreeRTOS学习1

下载调试方式为SW(板载STLink)

Nucleo-L476运行FreeRTOS学习1

选择使用Free RTOS

Nucleo-L476运行FreeRTOS学习1
选择使用FreeRTOS

这里是FreeRTOS的一些配置

Nucleo-L476运行FreeRTOS学习1

  • 任务建立

添加两个任务,一个用来LED闪烁 myTask_LED,一个用来串口打印数据 myTask_USART

Nucleo-L476运行FreeRTOS学习1

根据自己的情况生成代码配置

Nucleo-L476运行FreeRTOS学习1

点击生成代码后出现:

Nucleo-L476运行FreeRTOS学习1

这里是说推荐使用定时器生成系统时钟信号,我们重新配置一下,系统时钟的来源,选择为定时器1

Nucleo-L476运行FreeRTOS学习1

再次点击生成代码

Nucleo-L476运行FreeRTOS学习1

打开工程

Nucleo-L476运行FreeRTOS学习1

  • 代码修改

先编译一下看有无错误(编译过程比较慢)

Nucleo-L476运行FreeRTOS学习1

我们只需要填写刚刚建立的两个任务的代码

Nucleo-L476运行FreeRTOS学习1

LED任务写

/* USER CODE END Header_StartTaskLED */
void StartTaskLED(void *argument)
{
  /* USER CODE BEGIN StartTaskLED */
  /* Infinite loop */
  for(;;)
  {
	//翻转LED电平
	HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_5);
    osDelay(500);
  }
  /* USER CODE END StartTaskLED */
}

/* USER CODE BEGIN Header_StartTaskUSART */
/**
* @brief Function implementing the myTask_USART thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_StartTaskUSART */
void StartTaskUSART(void *argument)
{
  uint8_t UART_BUF[14] = "Hello FreeRTOS";
  /* USER CODE BEGIN StartTaskUSART */
  /* Infinite loop */
  for(;;)
  {
	HAL_UART_Transmit(&huart2,UART_BUF,14,0xffff);
    osDelay(1000);
  }
  /* USER CODE END StartTaskUSART */
}

下载到板子中看实验结果

后续将研究Free RTOS各配置和功能。