OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5328|回复: 5

列表和列表项 Error:..\FreeRTOS\portable\RVDS\ARM_CM3\port.c,202

[复制链接]

3

主题

11

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2018-5-24
在线时间
8 小时
发表于 2018-7-31 08:33:40 | 显示全部楼层 |阅读模式
5金钱

源码:FreeRTOSv10.0.1
单片机:STM32F207VC

在串口中断助手中,打印完字符后,接着显示:Error:..\FreeRTOS\portable\RVDS\ARM_CM3\port.c,202
网上一般说是串口的中断优先级低于FreeRTOS的优先级,但是我设置FreeRTOS中可管理的最高中断优先级为5,串口中断优先级为3,还是会出现这个问题。


FreeRTOSConfig.h文件:
#define configLIBRARY_LOWEST_INTERRUPT_PRIORITY                        15                      //中断最低优先级
#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY        5                       //系统可管理的最高中断优先级
#define configKERNEL_INTERRUPT_PRIORITY                 ( configLIBRARY_LOWEST_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )
#define configMAX_SYSCALL_INTERRUPT_PRIORITY         ( configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY << (8 - configPRIO_BITS) )[/mw_shl_code]


usart.c文件:
void USART1_NVIC_Configuration(void)
{
        NVIC_InitTypeDef NVIC_InitStructure;
       
        /*中断优先级选择第1组*/
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);

        /*3级抢占优先级  0级响应优先级*/   
        NVIC_InitStructure.NVIC_IRQChannel                    = USART1_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority  = 3;
        NVIC_InitStructure.NVIC_IRQChannelSubPriority         = 0;
        NVIC_InitStructure.NVIC_IRQChannelCmd                 = ENABLE;
        NVIC_Init(&NVIC_InitStructure);
}

我看到网上有很多类似的问题,但是好像都没有很好的解决办法,有没有大神给总结一下?谢谢!

PS:搜问题的过程中,对优先级的说法,有人说数字越大优先级越高。对FreeRTOS来说,不是数字越小,优先级越高么?

最佳答案

查看完整内容[请看2#楼]

兄对,你理解有误,需要弄清楚中断优先级和任务优先级的概念,对FreeRTOS来说,优先级数越小,代表的优先级越低,反之则越高;而中断优先级才是优先级数越低,代表的优先级越高。它们两者没有必然的联系。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
31
金钱
31
注册时间
2018-3-13
在线时间
12 小时
发表于 2018-7-31 08:33:41 | 显示全部楼层
兄对,你理解有误,需要弄清楚中断优先级和任务优先级的概念,对FreeRTOS来说,优先级数越小,代表的优先级越低,反之则越高;而中断优先级才是优先级数越低,代表的优先级越高。它们两者没有必然的联系。
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2018-5-24
在线时间
8 小时
 楼主| 发表于 2018-7-31 13:31:13 | 显示全部楼层
lilealyh 发表于 2018-7-31 09:03
兄对,你理解有误,需要弄清楚中断优先级和任务优先级的概念,对FreeRTOS来说,优先级数越小,代表的优先级 ...

这个确实是没有注意区别中断优先级和任务优先级。
但是我根本就没用串口中断服务函数,只是把串口配置了一下,用printf打印到串口的。别人的都是报441、680一类的错误,我的报202的错误,真是要命了。
回复

使用道具 举报

3

主题

11

帖子

0

精华

新手上路

积分
36
金钱
36
注册时间
2018-5-24
在线时间
8 小时
 楼主| 发表于 2018-8-1 08:48:14 | 显示全部楼层
找到问题了,在负责打印的void ListTask(void *pvParameters)函数的最后,加一行while (1);就不会报这个错误。但是,这是什么原因呢?
回复

使用道具 举报

3

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
195
金钱
195
注册时间
2018-11-6
在线时间
96 小时
发表于 2019-7-30 16:52:56 | 显示全部楼层
seifguo 发表于 2018-8-1 08:48
找到问题了,在负责打印的void ListTask(void *pvParameters)函数的最后,加一行while (1);就不会报这个错 ...

我也这样  怎么解决啊
回复

使用道具 举报

6

主题

23

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2019-5-5
在线时间
16 小时
发表于 2019-10-28 09:29:37 | 显示全部楼层
seifguo 发表于 2018-8-1 08:48
找到问题了,在负责打印的void ListTask(void *pvParameters)函数的最后,加一行while (1);就不会报这个错 ...

任务本身不应该就是一个死循环吗?不能返回,不能退出啊。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 21:52

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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