amoBBS 阿莫电子论坛

 找回密码
 注册
搜索
bottom↓
查看: 3644|回复: 3

freertos的中断到底如何写、

[复制链接]
发表于 2010-10-27 08:19:53 | 显示全部楼层 |阅读模式
一直没弄清楚freertos的中断如何写,入口必须使用汇编吗?
没用汇编写也能运行?

求解!!!


void xPortSysTickHandler( void )
{
unsigned long ulDummy;

        /* If using preemption, also force a context switch. */
        #if configUSE_PREEMPTION == 1
                *(portNVIC_INT_CTRL) = portNVIC_PENDSVSET;       
        #endif

        ulDummy = portSET_INTERRUPT_MASK_FROM_ISR();
        {
                vTaskIncrementTick();
        }
        portCLEAR_INTERRUPT_MASK_FROM_ISR( ulDummy );
}
/*-----------------------------------------------------------*/

void xPortUSART1rxHandler(void)
{
unsigned long ulDummy;
static unsigned char test[5];
static unsigned char n;
portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
        ulDummy = portSET_INTERRUPT_MASK_FROM_ISR();
        {
                test[n]=USART_ReceiveData(USART1);
                if(++n>4){
                        n=0;
                        //xQueueSendFromISR(Queue1,&test[0],&xHigherPriorityTaskWoken);
                        USART_SendData(USART1,test[3]);       
                }
        }
        portCLEAR_INTERRUPT_MASK_FROM_ISR( ulDummy );
}
发表于 2011-8-18 12:09:38 | 显示全部楼层
关注!遇到同样问题。
发表于 2015-9-29 11:53:59 | 显示全部楼层
我也帮你顶!我也碰到这个问题不知道你解决了没有!望说个方法!
发表于 2015-9-29 12:58:53 | 显示全部楼层
中断中调用了内核系统函数的按照如下方法处理:

      static portBASE_TYPE xHigherPriorityTaskWoken;
       ......
       xHigherPriorityTaskWoken = pdFALSE;
       xxxxFromISR(xxx,xxxx,&xHigherPriorityTaskWoken);
       ......
       portEND_SWITCHING_ISR( xHigherPriorityTaskWoken );


如果中断中没有调用内核系统函数,则不需要做特别处理。
友情提示:标题不合格、重复发帖,将会被封锁ID。详情请参考:论坛通告:封锁ID、获得注册邀请码、恢复被封ID、投诉必读
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|阿莫电子论坛(原ourAVR/ourDEV) ( 公安备案:44190002001997(交互式论坛) 工信部备案:粤ICP备09047143号 )

GMT+8, 2019-8-25 11:58

阿莫电子论坛, 原"中国电子开发网"

© 2004-2018 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表