STM32CubeMX配置freertos配置任务(一)
使用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配置任务(一)相关推荐
- stm32cubeMX学习六、Freertos配置综合实践(移植大彩串口屏程序框架)
一节入门了stm32cubeMX SPI 0.96 OLED的配置,这节我们来学习下如何配置freertos,并驱动大彩串口屏. 本程序编写基于秉火霸道STM32F103ZET6运行环境. 一.配置时 ...
- java是否支持freertos_使用GCC配置FreeRTOS(ARM)
我是RTOS和ARM Cortex MCU的新手 . 我需要使用带有STM32L053核板的FreeRTOS GCC mbed.org库 . 我已经使用GCC mbed qt-creator成功创建了 ...
- HAL库配置FreeRTOS
HAL库配置 配置时钟源 1:修改HAL库定时器时钟源. 由于HAL库内部会使用systick定时器用于系统延时功能,而FreeRTOS也需要一个定时器用于操作系统内核调度的使用,顾需修改HAL库的时 ...
- STM32CubeMX+FATFS+FREERTOS实现W25Q256虚拟U盘
一.软件硬件说明 软件:STM32CubeMX V6.6.1 /KEIL5 V5.29 硬件:正点原子阿波罗开发板,核心板STM32F429IGT6(176脚) 使用USB_SLAVE接口连接电脑US ...
- VS code+STM32CubeMX 使用 FreeRTOS+FatFS+USB_DEVICE 搭建 SD卡 读卡器 和 读写 SD卡 示例项目
文章目录 1. 新建项目 2. 配置 CubeMX 项目 3. 配置 EIDE 项目 4. 编写代码 5. 编译下载 6. 效果展示 本例介绍如何使用 vscode 插件 EIDE 和 STM32Cu ...
- STM32CubeMX+FATFS+FREERTOS读写U盘
一.硬件软件说明 软件:STM32CubeMX V6.6.1 . KEIL5 V5.29 硬件:STM32F429ZET6 USB_OTG_FS:PA11/PA12引脚 USART1:PA9/PA10 ...
- NFS介绍、NFS服务端配置安装配置、 NFS配置选项、 客户端的配置
NFS介绍 NFS是Network File System的缩写 ,是在网络层面,NFS(Network File System)网络文件系统会经常用到,用于在网络上共享存储.这样讲,你对NFS可能不 ...
- 使用克隆配置任务配置边缘传输服务器角色
环境拓扑: 策略: 实验内容: 1. 订阅第1台边缘服务器到组织中 2. 使用克隆配置任务配置第2台边缘服务器 3. 订阅第2台边缘服务器到组织中 4. 配置DNS服务器进行MX记录轮询 5. 结果 ...
- 【Android Gradle 插件】ProductFlavor 配置 ( multiDexEnabled 配置 | multiDexKeepFile | multiDexKeepProguard )
文章目录 一.ProductFlavor#multiDexEnabled 配置 二.ProductFlavor#multiDexKeepFile 配置 三.ProductFlavor#multiDex ...
最新文章
- 使用饼图_常见图表规范:直方图、圆环图和饼图
- 个人博客代码_这四个博客模板美观大气,做个漂亮的个人博客必须得收藏
- ASP.NET MVC5+EF6+EasyUI 后台管理系统--任务调度系统解析
- datename mysql_SQL日期时间函数总结(MSSQL)
- 007.androidUI开发进阶(基础--案例) .
- 洛谷P6302:回家路线(斜率优化)
- 与Spring和Maven签订合约优先SOAP服务
- Java RESTful API集成测试
- Gridview中实现求和统计功能
- ASP.NET 抓取网页内容
- 会计行业被计算机取代马云,会计人:为什么我神烦“人工智能取代说”?
- [常用命令]Git命令
- sap后台配置原因代码_SAP FI后台配置清单
- Axure 8 注册码
- 分享一套比较全的Java技术栈,值得参考!
- 宏碁台式计算机u盘启动,宏基台式机U盘重装怎么设置U盘启动项
- 手机话费充值页面HTMLcss3+html5模板
- JS格式化数字保留小数点
- c语言stone题目,The bridge is made stone.A.byB.fromC.ofD.up 题目和参考答案——青夏教育精英家教网——...
- TensorFlow实现mnist书写数字分类,出现please use urllib or similar directly错误。