IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> FreeRTOS使用软件定时器 -> 正文阅读

[嵌入式]FreeRTOS使用软件定时器

通过创建软件定时器实现500ms中断,执行x次后停止并删除定时器。
宏:

//RTOS系统节拍中断的频率。即一秒中断的次数,每次中断RTOS都会进行任务调度
#define configTICK_RATE_HZ						  (( TickType_t )1000)
//支持动态内存申请
#define configSUPPORT_DYNAMIC_ALLOCATION        1 
 //启用软件定时器
#define configUSE_TIMERS				            1 

main.c

#include "AppTask.h"

static void BSP_Init(void)
{
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//优先级0-15
	LED_GPIO_Config();
	USART_Config();
}

int main(void)
{
	BaseType_t xReturn  = pdPASS;

	BSP_Init();
	xReturn = xTaskCreate((TaskFunction_t) (AppCreate_Task),
						 (const char*)	"AppCreate_Task",
						 (uint16_t) 	512, 
						 (void*)		NULL,
						(UBaseType_t) 	1,
						(TaskHandle_t) 	(&AppCreateTask_Handle));
	if(xReturn == pdPASS)
	{
		printf("AppCreate_Task Create Succeed!\r\n");
		vTaskStartScheduler();//启动任务调度
	}
	else{printf("AppCreate_Task Create Fail!\r\n");}
	while(1);
}

AppTask.h

#ifndef _AppTask_H_
#define _AppTask_H_
#include "FreeRTOS.h"
#include "task.h"
#include "queue.h"
#include "semphr.h"
#include "event_groups.h"
#include "timers.h"
#include "bsp_led.h"
#include "bsp_usart.h"

extern TaskHandle_t AppCreateTask_Handle;
extern void AppCreate_Task(void* parameter);

#endif

AppTask.c**

#include "AppTask.h"

TaskHandle_t AppCreateTask_Handle = NULL;
static TimerHandle_t Timer_Handle = NULL;

static void Timer_Callback(void* parameter);
/**************************************
 * function:创建App任务函数
 * parameter:void*
 * return:void
 * date:2022.3.21
 * note:
 * ***********************************/
void AppCreate_Task(void* parameter)
{
    taskENTER_CRITICAL();

    Timer_Handle = xTimerCreate((const char*)"Timer",\
                    (TickType_t) 500,\
                    (UBaseType_t) pdTRUE,\
                    (void*) 1,\
                    (TimerCallbackFunction_t) Timer_Callback);
    xTimerStart(Timer_Handle,0);

    vTaskDelete(AppCreateTask_Handle);
    taskEXIT_CRITICAL();
}

static void Timer_Callback(void* parameter)
{
    static int i = 0;
    TickType_t tick_num2;

    LED1_TOGGLE;
    tick_num2 = xTaskGetTickCount();  /*  获取滴答定时器的计数值 */
    printf("Timer Run...%d\r\n",tick_num2);
    i++;
    if(i > 5)
    {
        xTimerStop(Timer_Handle,0);
        xTimerDelete(Timer_Handle,0);
        printf("删除定时器");
    }
}

演示现象:
在这里插入图片描述

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-03-22 20:46:35  更:2022-03-22 20:46:47 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:46:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码