首页 > 其他分享 >线程资源监视,需menuconfig->FreeRTOS->开启trace

线程资源监视,需menuconfig->FreeRTOS->开启trace

时间:2022-12-31 20:22:06浏览次数:43  
标签:info 定时器 trace FreeRTOS LEDC ledc 线程 cpu define

#include <stdio.h>
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "driver/ledc.h"
#include "esp_err.h"
#include "string.h"
#define LEDC_TIMER              LEDC_TIMER_0            //LEDC定时器
#define LEDC_MODE               LEDC_LOW_SPEED_MODE     //LEDC的速度模式
#define LEDC_OUTPUT_IO          (12)                     //LEDC绑定引脚
#define LEDC_CHANNEL            LEDC_CHANNEL_0          //LEDC通道
#define LEDC_DUTY_RES           LEDC_TIMER_13_BIT       //LEDC占空比分辨率
#define LEDC_DUTY               (4095)                  //LEDC占空比
#define LEDC_FREQUENCY          (5000)                  //LEDC频率 5 kHz

static void example_ledc_init(void)
{
    //LEDC定时器配置
    ledc_timer_config_t ledc_timer = {
        .speed_mode       = LEDC_MODE,                  //设置定时器低速模式           
        .timer_num        = LEDC_TIMER,                 //设置定时器0  
        .duty_resolution  = LEDC_DUTY_RES,              //设置定时器分辨率 13位
        .freq_hz          = LEDC_FREQUENCY,             //设置定时器频率 5kHz
        .clk_cfg          = LEDC_AUTO_CLK               //设置定时器时钟选择
    };  
    ESP_ERROR_CHECK(ledc_timer_config(&ledc_timer));    //设置定时器配置

    //配置LEDC通道
    ledc_channel_config_t ledc_channel = {                          
        .speed_mode     = LEDC_MODE,                    //设置通道模式低速模式
        .channel        = LEDC_CHANNEL,                 //设置LEDC通道0
        .timer_sel      = LEDC_TIMER,                   //设置LEDC定时器
        .intr_type      = LEDC_INTR_DISABLE,            //设置LEDC中断类型       
        .gpio_num       = LEDC_OUTPUT_IO,               //设置LEDCGPIO引脚   
        .duty           = 0, // Set duty to 0%          //设置占空比
        .hpoint         = 0                             //LEDC通道hpoint值
    };
    ESP_ERROR_CHECK(ledc_channel_config(&ledc_channel));//配置LEDC通道参数
}

void cpu_task(void *ptr){
    uint8_t cpu_info[400];
    while (1)
    {
        memset(cpu_info,0,400);
        vTaskList((char *)&cpu_info);
        printf("%s",cpu_info);
        printf("--------------\r\n");
        memset(cpu_info,0,400);
        vTaskGetRunTimeStats((char*)&cpu_info);
        printf("%s",cpu_info);
        printf("--------------\r\n");

        vTaskDelay(5000/portTICK_PERIOD_MS);
    }
    
}

void app_main(void)
{
    // 配置LEDC外设
    example_ledc_init();
    // 设置占空比(LEDC的速度模式,LEDC通道,4095+1) 50% 2^13 = 8192  4096即占一半,占空比50%
    ESP_ERROR_CHECK(ledc_set_duty(LEDC_MODE, LEDC_CHANNEL, LEDC_DUTY));
    // 更新占空比
    ESP_ERROR_CHECK(ledc_update_duty(LEDC_MODE, LEDC_CHANNEL));
    xTaskCreate(cpu_task,"cpu_task_name",4096,NULL,1,NULL);
    
}

 

标签:info,定时器,trace,FreeRTOS,LEDC,ledc,线程,cpu,define
From: https://www.cnblogs.com/ycp666/p/17017192.html

相关文章

  • win32线程安全原子锁
    1//微软官方例程稍微修改了下测试刚刚好23#defineTHREAD_COUNT204staticvolatileUINTvol=0;5voidSimpleThreadA(void*id){6UINT&max......
  • 一次多线程并发查询导致结果混乱的问题的排查和记录·JAVA·2022
    业务背景该业务是报表查询类业务:要求从销售出库数据(存储于ElasticSearch索引中)中,按照管理者分组聚合查询各个管理者一定时间段内的动销汇总数据,如出库金额、毛利率等。但......
  • freeRTOS
    #include<stdio.h>#include"freertos/FreeRTOS.h"#include"freertos/task.h"#include"driver/gpio.h"#include"driver/ledc.h"#include"freertos/event_groups......
  • Python 实现Tracert追踪TTL值
    Tracert命令跟踪路由原理是IP路由每经过一个路由节点TTL值会减一,假设TTL值=0时数据包还没有到达目标主机,那么该路由则会回复给目标主机一个数据包不可达,由此我们就可以获取......
  • java 多线程并行执行任务 demo
    packagecom.sleep.demo;importorg.apache.commons.lang3.StringUtils;importjava.util.*;importjava.util.concurrent.*;importjava.util.concurrent.atomic.A......
  • 【Worker】js使用多线程实现倒计时
    tremaintime.js主要用于计算时间,放到assets目录,因为Worker需要请求获取这个文件的,要同源onmessage=function({data}){setInterval(()=>{postMessage(ini......
  • 线程的三道面试题
    进程:​ 进程是一个具有一定独立功能的程序在一个数据集合上的一次动态执行过程线程​ 线程是比进程更小的基本单位,它被包含在进程之中,是进程中的实际运作单位。一......
  • freeRTOS移植成功
    今天来学习如何移植freeRTOS也算是走了很多的坑,总算是把系统跑起来了相关的教程网上也有比较详细的,本文主要说说自己踩的坑一些汇编文件报错的问题这个问题的原因是......
  • elastic-job2.1.5版本全量查询JOB_STATUS_TRACE_LOG的问题
    问题描述:在使用elastic-job的2.1.5版本开发时,因为有秒级任务发现有频繁的全量请求sql在执行:SELECToriginal_task_idFROMJOB_STATUS_TRACE_LOGWHEREtask_id='com.hori......
  • JavaScript如何实现多线程?
    我们都知道JS是一种单线程语言,即使是一些异步的事件也是在JS的主线程上运行的。像setTimeout、ajax的异步请求,或者是dom元素的一些事件,都是在JS主线程执行的,这些操作并没有......