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

  • 相关阅读:
    数学与基本思维
    思考与知识
    数学思想
    肥胖是罪、食物有毒
    高血压成因
    心脑血管疾病
    知行合一与人
    所谓的成长就是认知升级-成长就是应付自如
    深度思考
    “三高”即通常所说的高血压、高血脂(血脂异常)和高血糖三种病症的总称
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709487.html
Copyright © 2011-2022 走看看