【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构(一)https://developer.aliyun.com/article/1472621
创建工程
配置高速时钟和低速时钟为外部晶振提供
配置调试模式为sw调试模式
配置时钟频率
配置led,这里我的板子是这三个io接入的是led
配置一个10ms的定时器(1000000hz / 1000ms == 1ms = 1khz 就得到10ms需要计数10000重载)记得打开中断
配置工程并生成,工程名设置,单独生成.c.h文件拷贝库文件
下面开始代码的移植工作;
移植代码
首先我们需要将该开源项目的代码添加到工程中
在定时器中断服务函数中添加timeslice轮询函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim) { if(htim->Instance == TIM3) { timeslice_tick(); } }
然后我们需要在main函数中启动定时器并在while1中调用exec函数调度时间片
HAL_TIM_Base_Start_IT(&htim3); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ timeslice_exec(); }
到这里我们的移植工作就做完了,该项目的解耦效果真的非常好,移植相当简单,然后我们创建几个任务实验一下效果;
【嵌入式开源库】timeslice的使用,完全解耦的时间片轮询框架构(三)https://developer.aliyun.com/article/1472623