搜索
bottom↓
回复: 3

freertos的中断到底如何写、

[复制链接]
(338932395)

出0入0汤圆

发表于 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 );
}
(313430610)

出0入0汤圆

发表于 2011-8-18 12:09:38 | 显示全部楼层
关注!遇到同样问题。
(183572349)

出0入0汤圆

发表于 2015-9-29 11:53:59 | 显示全部楼层
我也帮你顶!我也碰到这个问题不知道你解决了没有!望说个方法!
(183568455)

出0入0汤圆

发表于 2015-9-29 12:58:53 | 显示全部楼层
中断中调用了内核系统函数的按照如下方法处理:

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


如果中断中没有调用内核系统函数,则不需要做特别处理。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子论坛 ( 公安交互式论坛备案:44190002001997 粤ICP备09047143号 )

GMT+8, 2021-7-24 04:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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