码迷,mamicode.com
首页 > 其他好文 > 详细

the difference between an embOS interrupt and a zero latency interrupt

时间:2015-07-07 14:37:42      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

the difference between an embOS interrupt and a zero latency interrupt is the interrupt priority level and the usage of OS_EnterInterrupt()/OS_LeaveInterrupt() or OS_EnterNestableInterrupt()/OS_LeaveNestableInterrupt().

Example of an embOS interrupt function:

void OS_COM_IsrHandler(void) {
  int Dummy;
  OS_EnterNestableInterrupt();
  Dummy = US_RHR;     
  // Call embOS API functions here
  OS_LeaveNestableInterrupt();
}

void Uart_Init(void) {
  OS_ARM_InstallISRHandler(ISR_ID_USART, (OS_ISR_HANDLER*) OS_COM_IsrHandler);
  OS_ARM_ISRSetPrio(140);                      // Set prio > 128
  OS_ARM_EnableISR(ISR_ID_USART);
}

Example of a zero latency interrupt function:

void OS_COM_IsrHandler(void) {
  int Dummy;
  Dummy = US_RHR;     
  // Never call embOS API functions here
}

void Uart_Init(void) {
  OS_ARM_InstallISRHandler(ISR_ID_USART, (OS_ISR_HANDLER*) OS_COM_IsrHandler);
  OS_ARM_ISRSetPrio(120);                      // Set prio < 128
  OS_ARM_EnableISR(ISR_ID_USART);
}

 

the difference between an embOS interrupt and a zero latency interrupt

标签:

原文地址:http://www.cnblogs.com/shangdawei/p/4626721.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!