(六)ubuntu下用cmake新建freertos的跑马灯工程

STM32 专栏收录该内容
9 篇文章 0 订阅

本文实现在ubuntu下用cmake新建freertos的demo工程,并交叉编译烧录到正点原子STM32F103RCTb精英开发板上。
由于对freertos不熟,所以先用stm32cubemx新建个用makefile编译的包含freertos的demo工程先在板子上跑起来。然后再把工程改写为cmake工程编译。
平台:ubuntu16.04LTS
芯片:STM32F103RCTb

1.在stm32cubemx上新建freertos的demo工程

首先demo工程实现的功能是在一个freertos线程中循环点亮熄灭led灯(一个跑马灯)。
stm32cubemx新建freertos的demo工程这篇博客写得非常好,我就是安装这篇博客配置的,只不过为了简单去掉了串口的任务。
STM32CubeMX创建F429 FreeRTOS工程(文末附源码)
注意过程中要选RTOS v1还是RTOS v2。由以下解释做为选择标准:
RTOS v1使得软件能够在不同的实时操作系统下运行(屏蔽不同RTOS提供的API的差别),而RTOS v2则是拓展了RTOS v1,兼容更多的CPU架构和实时操作系统。
因此我们在使用时可以根据实际情况选择,如果学习过程中使用STM32F1、F4等单片机时没必要选择RTOS v2,更高的兼容性背后时更加冗余的代码,理解起来比较困难;如果选择Disable则使用RTOS厂商提供的API,CubeIDE将不会提供图形化配置服务。
由于STM32F103RCTb是低端芯片,选RTOS v1。

如以上博客生成代码后只需要在Func1_LED增加循环点亮熄灭led的代码就行

void Func1_LED(void const * argument)
{
  /* USER CODE BEGIN Func1_LED */
  /* Infinite loop */
  for(;;)
  {
    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_RESET); 	//LED0对应引脚PA8拉低,亮,等同于LED0(0)
    HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_SET);   	//LED1对应引脚PD2拉高,灭,等同于LED1(1)
    osDelay(500);											//延时500ms
    HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_SET);   	//LED0对应引脚PA8拉高,灭,等同于LED0(1)
    HAL_GPIO_WritePin(GPIOD,GPIO_PIN_2,GPIO_PIN_RESET); 	//LED1对应引脚PD2拉低,亮,等同于LED1(0)
    osDelay(500);
  }
  /* USER CODE END Func1_LED */
}

编译烧录后发现红灯绿灯交叉点亮熄灭。

2.将工程改写为使用cmake编译

主要是写了freertos的cmakelist.txt
参考的是github 上的cmake工程模板。
下载命令为git clone https://github.com/rxdu/stm32_cmake.git
改写后用cmake编译freertos。
工程下载地址为

CMakeLists 中file GLOB的陷阱:undefined symbol错误
https://blog.csdn.net/coolwaterld/article/details/81217233

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 创作都市 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值