stm32立方Freertos点灯

 首次使用Freertos进行配置,操作步骤过于繁琐,浅浅记录一下

使用cubeMX生成工程,添加从github上下载移植文件及扩展资源,这里使用了定时器2作为hal延时函数产生的基准时间,系统自带的滴答计时器产生中断响应任务

FreeRTOS/FreeRTOS: 'Classic' FreeRTOS distribution. Started as Git clone of FreeRTOS SourceForge SVN repo. Submodules the kernel. (github.com)

FreeRTOS/FreeRTOS-Kernel: FreeRTOS kernel files only, submoduled into https://github.com/FreeRTOS/FreeRTOS and various other repos.

将原工程添加下列文件:

 添加下列四行代码:

 定义变量

 删除系统文件中已经定义的函数,避免与freertos文件中的函数发生重复引用

最后是编写两个任务函数,实现led的闪烁

void vTask1( void *pvParameters )
{
	for( ;; )
	{
	HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,0);
	HAL_Delay(1000);
	HAL_GPIO_WritePin(LED1_GPIO_Port,LED1_Pin,1);
	HAL_Delay(1000);
	}
}
//任务2
void vTask2( void *pvParameters )
{
	for( ;; )
	{
	HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,0);
	HAL_Delay(500);
	HAL_GPIO_WritePin(LED2_GPIO_Port,LED2_Pin,1);
	HAL_Delay(500);
	}
}



以及主函数中的初始化


	//创建任务1
	//         定义函数  函数命名 分配内存  传入参数  优先级  ? 
	xTaskCreate(vTask1,"LED1",    128,    NULL,     1,      NULL);
	//创建任务2
	xTaskCreate(vTask2,"LED2",128,NULL,1,NULL);
	//启动任务调度器
	vTaskStartScheduler();
	
	

补充:①串口住在头文件#include“retarget.h”

②各任务需处在同一优先级,可使用阻塞延时函数打破不同优先级不能执行的问题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值