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

  • 相关阅读:
    C#泛型
    QT QML Keys 处理注意事项
    Ubuntu 16.04 安装 QT Create 5.3.1
    在VMWare中安装了Ubuntu16.04,想要 Win10 中通过 SecureCRT 来操作
    Ubuntu16在VMWare中使用共享文件夹
    QT QLineEdit 获取焦点/获取焦点后全选字符
    QT Layout 布局的重要性
    QT ToolBar 工具栏浮动状态
    QT 格式化字符串功能
    QT 窗体之间(MainWindow 和 Dialog)数据传递
  • 原文地址:https://www.cnblogs.com/zhangxuechao/p/11709487.html
Copyright © 2011-2022 走看看