【STM32运行FreeRTOS】通过CubeMX创建、生成任务,并在F103小蓝板上同步运行串口与点灯操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

记录了学习FreeRTOS在STM32上的实验,并成功并行运行LED闪烁和串口打印文字的任务。


一、通过CubeMX新建工程

  1. 打开CubeMX,选择芯片,笔者这里用小蓝板,也就是F103C8T6做测试。
    选择你的芯片
  2. 设置时钟,调试接口。这里注意Timebase Source不要选RTOS用到的systick
    注意Timebase 不能选和RTOS一样的systick
    在这里插入图片描述
  3. 初始化板载LED和串口
    在这里插入图片描述
    在这里插入图片描述
    这里注意,LED要初始为高电平,不然复位的时候会闪一下。
  4. 在中间件里初始化freeRTOS,选项默认即可。
    在这里插入图片描述
  5. 用CubeMX创建LED闪烁和串口发送的任务。
    在这里插入图片描述

二、编写LED闪烁和串口打印的部分代码

生成代码后,在freertos.c文件里编写代码。

1.LED定时1s闪烁

/* USER CODE BEGIN Header_StartTask02 */
/**
* @brief Function implementing the Borad_LED thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_StartTask02 */
void StartTask02(void* argument)
{
  /* USER CODE BEGIN StartTask02 */
  /* Infinite loop */
  for(;;)
  {
    vTaskDelay(1000);
    HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);
  }
  /* USER CODE END StartTask02 */
}

2.串口定时1s打印

代码如下(示例):

/* USER CODE BEGIN Header_StartTask03 */
/**
* @brief Function implementing the UART_TX thread.
* @param argument: Not used
* @retval None
*/
/* USER CODE END Header_StartTask03 */
void StartTask03(void* argument)
{
  /* USER CODE BEGIN StartTask03 */
  /* Infinite loop */
  for(;;)
  {
    vTaskDelay(1000);
    char s[100];
    sprintf(s, "你好\r\n");
    HAL_UART_Transmit(&huart1, (uint8_t*)s, strlen(s), 0xff);
  }
  /* USER CODE END StartTask03 */
}

实验验证

编译收获两个蛋
在这里插入图片描述
下载运行

如果一切正常,应该可以看到板载的LED一秒亮灭一次。连上串口,由于XCOM不支持UTF-8显示中文,这里使用一款支持的软件MobaXterm
选择新建会话
在这里插入图片描述
选择串口,填对比特率。

在这里插入图片描述
就可以看到,串口的发送与点灯的操作同步进行了。
在这里插入图片描述


总结

这里记录了笔者第一次学习FreeRTOS的过程,并成功同时运行了点灯和串口的操作,等笔者考完期末,有空会继续跟新

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: STM32F103是一款基于ARM Cortex-M3内核的单片机,它具有丰富的外设和性能优势。FreeRTOS是一款流行的实时操作系统,可用于在STM32F103上实现多任务和调度。USART是STM32F103系列的串行通信接口,用于与外部设备进行通信。DMA(直接内存访问)是一种数据传输方式,可实现高效的数据传输,提高系统性能。CubeMX是一款图形化开发工具,可用于配置和生成STM32F103的初始化代码。 在STM32F103上使用FreeRTOS框架,可以实现多任务和调度功能。通过配置CubeMX,可以方便地设置USART和DMA外设。首先,使用CubeMX配置USART外设的工作模式、波特率等参数,并使用DMA传输数据。然后,通过编程将USART设置为DMA模式,使数据在接收和发送时通过DMA传输,提高效率和性能。在FreeRTOS任务中,可以编写代码实现与外设的通信,通过USART发送和接收数据。使用FreeRTOS任务和调度功能,可以同时处理多个任务,提高系统的并发性和响应能力。 总之,通过结合STM32F103FreeRTOS、USART和DMA,以及使用CubeMX配置工具,可以方便地实现多任务调度和串口通信。这样的架构可以提高系统性能,实现更复杂的应用。 ### 回答2: STM32F103是一款由意法半导体(STMicroelectronics)推出的32位单片机,它使用了Cortex-M3内核。在STM32F103中,我们可以使用FreeRTOS(Real-Time Operating System)来实现多任务处理和实时性。 USART是通用异步收发传输器,它可以用于串行通信。在STM32F103中,我们可以使用USART来进行与外部设备的通信。 DMA(Direct Memory Access)是一种数据传输方法,它可以在系统的CPU不直接参与的情况下进行数据传输。在STM32F103中,通过配置USART的DMA,可以实现高效的数据传输。DMA还可以在多个外设之间进行数据传输,提高系统的效率。 CubeMX是一个图形化的配置工具,它可以帮助我们快速地配置和初始化STM32的硬件资源,生成相应的代码框架。 通过结合使用FreeRTOS、USART、DMA和CubeMX,我们可以实现在STM32F103上进行多任务处理、串行通信和高效数据传输的需求。首先,使用CubeMX快速配置USART和DMA相关的硬件资源,并生成代码框架。然后,根据需要,使用FreeRTOS进行任务创建、调度和管理,实现多任务处理。在任务中,通过调用USART的相应接口来进行串行通信,并通过配置DMA来实现高效的数据传输。 总的来说,使用STM32F103FreeRTOS、USART、DMA和CubeMX的组合,可以帮助我们充分发挥STM32的功能,实现复杂的应用需求,并提升系统的性能和效率。 ### 回答3: stm32f103是STMicroelectronics(ST)公司推出的一款32位单片机,它的系列名称是STM32。该系列的芯片具有高性能和低功耗的特点,广泛应用于嵌入式系统中。 FreeRTOS是一款实时操作系统(RTOS),广泛应用于嵌入式系统开发中。它提供了丰富的功能,包括任务管理、时间管理、内存管理和通信等。使用FreeRTOS能够更好地组织和管理任务,提高系统的实时性和稳定性。 USART是通用同步/异步收发器(Universal Synchronous/Asynchronous Receiver Transmitter)的缩写,是一种常用的串口通信接口。它可以实现串行数据的发送和接收,常见的应用场景包括与外部设备进行数据通信和调试信息的输出。 DMA是直接内存访问(Direct Memory Access)的缩写,它是一种不需要CPU干预的数据传输方式。在数据量较大或者需要高速传输的场景下,使用DMA能够提高数据传输的效率,减轻CPU负担。 CubeMX是一个集成开发环境(IDE),用于简化STM32芯片的配置和代码生成。通过CubeMX可以轻松地配置芯片的外设、时钟和中断等,方便开发者快速搭建项目框架。它还可以生成基于CMSIS和HAL库的初始化代码,简化开发流程。 结合以上信息,stm32f103 freertos usart dma cubemx可以理解为在使用stm32f103芯片开发嵌入式系统时,使用FreeRTOS实现任务管理和时间管理,通过USART进行与外部设备的通信,利用DMA实现高效的数据传输,同时使用CubeMX进行芯片配置和代码生成的开发流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值