硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5297|回复: 6
收起左侧

[FreeRTOS] freertos外部中断问题

[复制链接]

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2015-12-31 13:19:13 | 显示全部楼层 |阅读模式
如题,我使用freertos,SysTick中断优先级是5,usb中断优先级是6,我一插usb,程序就卡死,发现卡在usb里面的一个延时函数里面,延时函数是SysTick写的,意味着高优先级打不断低优先级
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2015-12-31 15:35:58 | 显示全部楼层
这个us的延迟应该只是对systick进行读取操作,不会对USB中断造成影响,记得官方的是通用定时器实现的。

你再进一步查查是什么问题造成的。
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2015-12-31 16:37:31 | 显示全部楼层
freertos里有没有什么设置会引起外部中断不允许嵌套?查程序就是停在延时这里一直度systick,可是没有中断进来,值一直没有变化
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2015-12-31 16:45:28 | 显示全部楼层

回 240011814 的帖子

240011814:freertos里有没有什么设置会引起外部中断不允许嵌套?查程序就是停在延时这里一直度systick,可是没有中断进来,值一直没有变化 (2015-12-31 16:37) 
把你的FreeRTOSConfig.h文件的配置我看下,还有就是你的中断优先级分组设置为几了。
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2015-12-31 17:20:27 | 显示全部楼层
我是用stm32cube直接生产的
捕获.PNG

FreeRTOSConfig.rar

4 KB, 下载次数: 107

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2015-12-31 23:35:41 | 显示全部楼层

回 240011814 的帖子

240011814:我是用stm32cube直接生产的 (2015-12-31 17:20) 
你用的是Cube的库吗,而且这个FreeRTOS好像还加上了封装层,这个的确是不太好帮到你了,不太熟悉这个封装层,如果你搞的是单纯的FreeRTOS,我可以帮到你。
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
 楼主| 发表于 2016-1-4 11:56:24 | 显示全部楼层
void xPortSysTickHandler( void )
{
    /* The SysTick runs at the lowest interrupt priority, so when this interrupt
    executes all interrupts must be unmasked.  There is therefore no need to
    save and then restore the interrupt mask value as its value is already
    known. */
    ( void ) portSET_INTERRUPT_MASK_FROM_ISR();
    {
        /* Increment the RTOS tick. */
        if( xTaskIncrementTick() != pdFALSE )
        {
            /* A context switch is required.  Context switching is performed in
            the PendSV interrupt.  Pend the PendSV interrupt. */
            portNVIC_INT_CTRL_REG = portNVIC_PENDSVSET_BIT;
        }
    }
    portCLEAR_INTERRUPT_MASK_FROM_ISR( 0 );
}
看了下源码,发现里面把systick优先级降到最低了,我就纳闷了,如果中断里需要延时该怎么办
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 06:11 , Processed in 0.241103 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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