zoukankan      html  css  js  c++  java
  • FreeRTOS中断测试

    configMAX_SYSCALL_INTERRUPT_PRIORITY
    高于此优先级的中断,不能被禁止

    #ifdef __NVIC_PRIO_BITS
        #define configPRIO_BITS             __NVIC_PRIO_BITS
    #else
        #define configPRIO_BITS             4                  
    #endif
    
    #define configLIBRARY_LOWEST_INTERRUPT_PRIORITY         15                      //中断最低优先级
    #define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY    5                       //系统可管理的最高中断优先级
    #define configKERNEL_INTERRUPT_PRIORITY         ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
    #define configMAX_SYSCALL_INTERRUPT_PRIORITY    ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )

    1
    测试举例

    int main(void)
    {
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4
    
        TIM3_Int_Init(10000-1,7200-1);      //初始化定时器3,定时器周期1S
        TIM5_Int_Init(10000-1,7200-1);      //初始化定时器5,定时器周期1S
    
        //创建中断测试任务
        xTaskCreate((TaskFunction_t )interrupt_task,            //任务函数
                    (const char*    )"interrupt_task",          //任务名称
                    (uint16_t       )INTERRUPT_STK_SIZE,        //任务堆栈大小
                    (void*          )NULL,                      //传递给任务函数的参数
                    (UBaseType_t    )INTERRUPT_TASK_PRIO,       //任务优先级
                    (TaskHandle_t*  )&INTERRUPTTask_Handler);   //任务句柄
    }
    
    //中断测试任务函数 
    void interrupt_task(void *pvParameters)
    {
        static u32 total_num=0;
        while(1)
        {
            total_num+=1;
            if(total_num==5) 
            {
                printf("关闭中断.............
    ");
                portDISABLE_INTERRUPTS();               //关闭中断
                delay_xms(5000);                        //延时5s
                printf("打开中断.............
    ");    //打开中断
                portENABLE_INTERRUPTS();
            }
            vTaskDelay(1000);
        }
    }   

    测试效果
    1

  • 相关阅读:
    增强for循环
    java魔性的类型
    回溯算法
    UE4报错cmd.exe failed with args /c
    C#中GetHashCode的各类实现
    Unity3D中的meta文件笔记
    数值分析笔记(3)——数值计算中的原则
    数值分析笔记(2)——有效数字
    数值分析笔记(1)——误差的来源和分类
    数值分析笔记(0)——数值分析研究的对象和内容
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709487.html
Copyright © 2011-2022 走看看