欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

FreeRTOS 临界区总结

发布时间:2025/4/5 编程问答 33 豆豆
生活随笔 收集整理的这篇文章主要介绍了 FreeRTOS 临界区总结 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

当一名嵌入式开发人员从裸机开发切换到 基于 FreeRTOS 的开发后就要注意 中断,资源竞争等等问题了。

         

         下面,总结一下 FreeRTOS 临界区的知识及用法:


          1. 应用程序使用临界区

          1.1 深入剖析的方法:



        1.2 使用方法:


          2. 中断函数中临界区

          2.1 深入剖析的方法:


          2.2 使用方法:


[cpp] view plain copy
  • void TIM6_DAC_IRQHandler( void )  
  • {  
  •         UBaseType_t uxSavedInterruptStatus;  
  •    
  •         uxSavedInterruptStatus = portSET_INTERRUPT_MASK_FROM_ISR();  
  •         //临界区代码  
  •         portCLEAR_INTERRUPT_MASK_FROM_ISR( uxSavedInterruptStatus );  
  • }  


  •         3. 开关中断:



    vPortRaiseBASEPRI() 与 vPortSetBASEPRI(0) 的具体实现


    [cpp] view plain copy
  • static portFORCE_INLINE void vPortSetBASEPRI( uint32_t ulBASEPRI )  
  • {  
  •         __asm  
  •         {  
  •                 msr basepri, ulBASEPRI  
  •         }  
  • }  
  •   
  •   
  •   
  • static portFORCE_INLINE uint32_t ulPortRaiseBASEPRI( void )  
  • {  
  •         uint32_t ulReturn, ulNewBASEPRI = configMAX_SYSCALL_INTERRUPT_PRIORITY;  
  •         __asm  
  •         {  
  •                 mrs ulReturn, basepri  
  •                 msr basepri, ulNewBASEPRI  
  •                 dsb  
  •                 isb  
  •         }  
  •         return ulReturn;  
  • }  

  • 总结

    以上是生活随笔为你收集整理的FreeRTOS 临界区总结的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。