使用STM32CubeMX 配置Freertos 生成一个任务点亮LED
stm32cubemx
STM32CubeMX 是 ST 意法半导体近几年来大力推荐的STM32 芯片图形化配置工具, 允许用户使用图形化向导生成C 初始化代码,可以大大减轻开发工作,时间和费用。STM32CubeMX几乎覆盖了STM32 全系列芯片。

1.新建项目文件

2.本例子需要使用到的外设只有GPIO点亮LED

LED端口为PC13 ,点击PC13选择GPIO_OUTPUT
配置GPIO端口为输出。

3.配置Freertos

选择middleware ,点击freertos interface 选择CMSISV1 或者V2

选择task and Queue,点击add

在出现的对话框中对任务进行设置,若无其他需求可以点击确定使用默认配置。


点击project manager
设置项目名称,目录
tool-Chain选择MDK-ARM(如果你用keil5开发的话)

勾选code Generator 如图所示的条目

点击生成代码。
使用MDK 打开所创建的项目(刚才设了项目目录)

打开main.c

int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();/* USER CODE BEGIN 2 *//* USER CODE END 2 *//* Call init function for freertos objects (in freertos.c) */MX_FREERTOS_Init();/* Start scheduler */osKernelStart();/* We should never get here as control is now taken by the scheduler *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}
void MX_GPIO_Init(void)
{GPIO_InitTypeDef GPIO_InitStruct = {0};/* GPIO Ports Clock Enable */__HAL_RCC_GPIOC_CLK_ENABLE();/*Configure GPIO pin Output Level */HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, GPIO_PIN_RESET);/*Configure GPIO pin : PC13 */GPIO_InitStruct.Pin = GPIO_PIN_13;GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;GPIO_InitStruct.Pull = GPIO_NOPULL;GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);}

以上是自动生成的main函数
在函数 MX_FREERTOS_Init(); 中是对用户函数的初始化,也就是创建任务阶段。
这里会比较晕,和freertos 内核代码的样式会有很大区别,都是CMSIS定义的又包一层。

void MX_FREERTOS_Init(void) {/* USER CODE BEGIN Init *//* USER CODE END Init *//* USER CODE BEGIN RTOS_MUTEX *//* add mutexes, ... *//* USER CODE END RTOS_MUTEX *//* USER CODE BEGIN RTOS_SEMAPHORES *//* add semaphores, ... *//* USER CODE END RTOS_SEMAPHORES *//* USER CODE BEGIN RTOS_TIMERS *//* start timers, add new ones, ... *//* USER CODE END RTOS_TIMERS *//* USER CODE BEGIN RTOS_QUEUES *//* add queues, ... *//* USER CODE END RTOS_QUEUES *//* Create the thread(s) *//* definition and creation of defaultTask */osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);/* definition and creation of myTask02 */osThreadDef(myTask02, StartTask02, osPriorityIdle, 0, 128);myTask02Handle = osThreadCreate(osThread(myTask02), NULL);/* USER CODE BEGIN RTOS_THREADS *//* add threads, ... *//* USER CODE END RTOS_THREADS */}

osThreadDef(defaultTask, StartDefaultTask, osPriorityNormal, 0, 128);
使用宏定义创建了一个任务结构体,对结构体进行初始化。

#define osThreadDef(name, thread, priority, instances, stacksz)  \
const osThreadDef_t os_thread_def_##name = \
{ #name, (thread), (priority), (instances), (stacksz)}

os_pthread pthread; ///< start address of thread function
这个就是函数的入口
defaultTaskHandle = osThreadCreate(osThread(defaultTask), NULL);
这行目的是把刚才创建的任务结构体带入到任务的创建函数中
osThreadCreate 调用Freertos 的任务创建函数。
StartDefaultTask
StartTask02
一个是系统默认创建的任务,一个是我们STM32CubeMX中创建的任务。
在我们创建的函数中加入LED翻转

void StartTask02(void const * argument)
{/* USER CODE BEGIN StartTask02 *//* Infinite loop */for(;;){osDelay(300);HAL_GPIO_TogglePin(GPIOC, GPIO_PIN_13);}/* USER CODE END StartTask02 */
}

STM32CubeMX配置freertos配置任务(一)相关推荐

  1. stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)

    一节入门了stm32cubeMX SPI 0.96 OLED的配置,这节我们来学习下如何配置freertos,并驱动大彩串口屏. 本程序编写基于秉火霸道STM32F103ZET6运行环境. 一.配置时 ...

  2. java是否支持freertos_使用GCC配置FreeRTOS(ARM)

    我是RTOS和ARM Cortex MCU的新手 . 我需要使用带有STM32L053核板的FreeRTOS GCC mbed.org库 . 我已经使用GCC mbed qt-creator成功创建了 ...

  3. HAL库配置FreeRTOS

    HAL库配置 配置时钟源 1:修改HAL库定时器时钟源. 由于HAL库内部会使用systick定时器用于系统延时功能,而FreeRTOS也需要一个定时器用于操作系统内核调度的使用,顾需修改HAL库的时 ...

  4. STM32CubeMX+FATFS+FREERTOS实现W25Q256虚拟U盘

    一.软件硬件说明 软件:STM32CubeMX V6.6.1 /KEIL5 V5.29 硬件:正点原子阿波罗开发板,核心板STM32F429IGT6(176脚) 使用USB_SLAVE接口连接电脑US ...

  5. VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目

    文章目录 1. 新建项目 2. 配置 CubeMX 项目 3. 配置 EIDE 项目 4. 编写代码 5. 编译下载 6. 效果展示 本例介绍如何使用 vscode 插件 EIDE 和 STM32Cu ...

  6. STM32CubeMX+FATFS+FREERTOS读写U盘

    一.硬件软件说明 软件:STM32CubeMX V6.6.1 . KEIL5 V5.29 硬件:STM32F429ZET6 USB_OTG_FS:PA11/PA12引脚 USART1:PA9/PA10 ...

  7. NFS介绍、NFS服务端配置安装配置、 NFS配置选项、 客户端的配置

    NFS介绍 NFS是Network File System的缩写 ,是在网络层面,NFS(Network File System)网络文件系统会经常用到,用于在网络上共享存储.这样讲,你对NFS可能不 ...

  8. 使用克隆配置任务配置边缘传输服务器角色

    环境拓扑: 策略:  实验内容: 1. 订阅第1台边缘服务器到组织中 2. 使用克隆配置任务配置第2台边缘服务器 3. 订阅第2台边缘服务器到组织中 4. 配置DNS服务器进行MX记录轮询 5. 结果 ...

  9. 【Android Gradle 插件】ProductFlavor 配置 ( multiDexEnabled 配置 | multiDexKeepFile | multiDexKeepProguard )

    文章目录 一.ProductFlavor#multiDexEnabled 配置 二.ProductFlavor#multiDexKeepFile 配置 三.ProductFlavor#multiDex ...

最新文章

  1. 使用饼图_常见图表规范:直方图、圆环图和饼图
  2. 个人博客代码_这四个博客模板美观大气,做个漂亮的个人博客必须得收藏
  3. ASP.NET MVC5+EF6+EasyUI 后台管理系统--任务调度系统解析
  4. datename mysql_SQL日期时间函数总结(MSSQL)
  5. 007.androidUI开发进阶(基础--案例) .
  6. 洛谷P6302:回家路线(斜率优化)
  7. 与Spring和Maven签订合约优先SOAP服务
  8. Java RESTful API集成测试
  9. Gridview中实现求和统计功能
  10. ASP.NET 抓取网页内容
  11. 会计行业被计算机取代马云,会计人:为什么我神烦“人工智能取代说”?
  12. [常用命令]Git命令
  13. sap后台配置原因代码_SAP FI后台配置清单
  14. Axure 8 注册码
  15. 分享一套比较全的Java技术栈,值得参考!
  16. 宏碁台式计算机u盘启动,宏基台式机U盘重装怎么设置U盘启动项
  17. 手机话费充值页面HTMLcss3+html5模板
  18. JS格式化数字保留小数点
  19. c语言stone题目,The bridge is made stone.A.byB.fromC.ofD.up 题目和参考答案——青夏教育精英家教网——...
  20. TensorFlow实现mnist书写数字分类,出现please use urllib or similar directly错误。

热门文章

  1. 机械专业应具备什么计算机能力
  2. 订阅号留言功能开通之留言小程序
  3. 误删除的照片从哪里可以找回来,误删除的照片如何恢复。
  4. 深度揭秘亚马逊无货源运营思路,掌握运营技巧
  5. 深入浅出 JavaScript 中的For循环之详解
  6. VK1621/VK1622/VK1623/VK1625有什么稳定的LCD液晶显示驱动芯片支持多种封装,提供专业工程服务
  7. 言必信,行必果,硁硁然小人哉!
  8. 孙溟㠭讲篆刻(二):金石之上的四两拨千斤
  9. iOS富文本组件的实现—DTCoreText源码解析 数据篇
  10. MicroStrategy 微策略 2022 招聘