硬汉嵌入式论坛

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

[FreeRTOS] FreeRTOS串口打印任务状态的疑问

[复制链接]

11

主题

44

回帖

77

积分

初级会员

积分
77
发表于 2016-8-29 23:56:22 | 显示全部楼层 |阅读模式
          老大的教程看了,都能看懂,测试也都通过。但是我尝试将定时器的初始化放在了启动任务调度器或者创建任务之前,则定时器中断无法进入。
后来我又单开了一个任务专门打印任务信息。只要优先级设置比其余两个任务低,则定时器同样无法进入中断。
          请问老大,OS在使用定时器中断时要特别注意些啥?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2016-8-30 00:53:42 | 显示全部楼层
这个是什么定时器,是用于统计任务执行情况的那个高分辨率定时器么。
回复

使用道具 举报

11

主题

44

回帖

77

积分

初级会员

积分
77
 楼主| 发表于 2016-8-30 11:49:29 | 显示全部楼层

回 eric2013 的帖子

eric2013:这个是什么定时器,是用于统计任务执行情况的那个高分辨率定时器么。 (2016-08-30 00:53) 
我用的是TIM2
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2016-8-30 13:38:40 | 显示全部楼层

回 十二月的肖邦 的帖子

十二月的肖邦:我用的是TIM2 (2016-08-30 11:49) 
没什么要特别注意的,是不是你的定时器配置有问题,
回复

使用道具 举报

11

主题

44

回帖

77

积分

初级会员

积分
77
 楼主| 发表于 2016-8-30 13:45:34 | 显示全部楼层

回 eric2013 的帖子

eric2013:没什么要特别注意的,是不是你的定时器配置有问题, (2016-08-30 13:38) 
配置没问题啊,逻辑测试正常。放系统初始化的位置非得注意下才行
回复

使用道具 举报

11

主题

44

回帖

77

积分

初级会员

积分
77
 楼主| 发表于 2016-8-30 19:38:49 | 显示全部楼层

回 eric2013 的帖子

eric2013:
这个是什么定时器,是用于统计任务执行情况的那个高分辨率定时器么。
          老大的教程看了,都能看懂,测试也都通过。但是我尝试将定时器的初始化放在了启动任务调度器或者创建任务之前,则定时器中断无法进入。
后来我又单开了一个任务专门打印任务信息。只要优先级设置比其余两个任务低,则定时器同样无法进入中断。
          请问老大,OS在使用定时器中断时要特别注意些啥?

2-串口打印调试说明.zip

1.78 MB, 下载次数: 79

回复

使用道具 举报

11

主题

44

回帖

77

积分

初级会员

积分
77
 楼主| 发表于 2016-8-30 19:40:17 | 显示全部楼层

回 十二月的肖邦 的帖子

十二月的肖邦:          老大的教程看了,都能看懂,测试也都通过。但是我尝试将定时器的初始化放在了启动任务调度器或者创建任务之前,则定时器中断无法进入。
后来我又单开了一个任务专门打印任务信息。只要优先级设置比其余两个任务低, .. (2016-08-30 19:38) 
老大,工程文件已经上传,你帮忙测试看看。打印调试信息任务的优先级如果设置高于其他任务就有影响了。
回复

使用道具 举报

11

主题

44

回帖

77

积分

初级会员

积分
77
 楼主| 发表于 2016-8-30 22:14:47 | 显示全部楼层

回 eric2013 的帖子

eric2013:没什么要特别注意的,是不是你的定时器配置有问题, (2016-08-30 13:38) 
老大工程文件我已经上传了,还得麻烦你看下
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2016-8-31 01:06:58 | 显示全部楼层

回 十二月的肖邦 的帖子

十二月的肖邦:老大工程文件我已经上传了,还得麻烦你看下 (2016-08-30 22:14) 
注意这个优先级分组,一定要在main函数中优先设置,且使用优先级分组4,在教程中的很多地方我都着重强调了这个问题,这个问题要注意下。

=================================================================
你在进入到打印任务时,设置了优先级分组为0,默认优先级分组就是0,其实不用再设置。
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);  

修改你的工程,在main函数中优先设置。
回复

使用道具 举报

11

主题

44

回帖

77

积分

初级会员

积分
77
 楼主| 发表于 2016-8-31 09:04:29 | 显示全部楼层

回 eric2013 的帖子

eric2013:注意这个优先级分组,一定要在main函数中优先设置,且使用优先级分组4,在教程中的很多地方我都着重强调了这个问题,这个问题要注意下。

=================================================================
你在进入到打印任务时,设置了优先级分组为0,默认优先级分组就是0, .. (2016-08-31 01:06) 
为什么要最先配置分组,而且是否是Group4又有什么关系呢?如果都为4,那不就是全都为抢占优先级了!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2016-8-31 09:07:24 | 显示全部楼层

回 十二月的肖邦 的帖子

十二月的肖邦:为什么要最先配置分组,而且是否是Group4又有什么关系呢?如果都为4,那不就是全都为抢占优先级了! (2016-08-31 09:04) 
教程里面对于这些问题有详细讲解,看一下。我写的这个教程有好多细节问题,都在教程上面进行了说明,看的时候可能没有太注意,使用的时候问题就出来了。
回复

使用道具 举报

11

主题

44

回帖

77

积分

初级会员

积分
77
 楼主| 发表于 2016-8-31 09:22:24 | 显示全部楼层

回 eric2013 的帖子

eric2013:教程里面对于这些问题有详细讲解,看一下。我写的这个教程有好多细节问题,都在教程上面进行了说明,看的时候可能没有太注意,使用的时候问题就出来了。 (2016-08-31 09:07) 
教程我看了,在12.2这一节中写了:强烈推荐用户将 Cortex-M3 内核的 STM32F103 和 Cortex-M4 内核的 STM32F407 以及STM32F429 的 NVIC 优先级分组设置为 4,即:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);这样中断优先级的管理将非常方便。 这个也是官方强烈建议的。 此函数在 bsp_Init 中第一个被调用。只有讲到这些,但并没有讲出原因呀,老大!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2016-8-31 09:58:03 | 显示全部楼层

回 十二月的肖邦 的帖子

十二月的肖邦:教程我看了,在12.2这一节中写了:强烈推荐用户将 Cortex-M3 内核的 STM32F103 和 Cortex-M4 内核的 STM32F407 以及STM32F429 的 NVIC 优先级分组设置为 4,即:NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);这样中断优先级的管理将非常方便。 这个也是官方强烈建议的。 此函 .. (2016-08-31 09:22)
1. 配置为0,你的中断服务程序将没有实时性可言,重要中断服务程序由于非重要中断程序的阻塞无法及时响应。把这些中断的抢占式优先级区分出来才有实时性。

2.中断优先级管理方便。

3. 保证PendSV中断是最低优先级的。这样才能保证发生中断嵌套的时候,正确执行任务切换,这一点非常非常重要。

等等方面的原因。就讨论这么多吧,剩下你检查下你程序的问题。
回复

使用道具 举报

11

主题

44

回帖

77

积分

初级会员

积分
77
 楼主| 发表于 2016-8-31 10:11:42 | 显示全部楼层

回 eric2013 的帖子

eric2013:1. 配置为0,你的中断服务程序将没有实时性可言,重要中断服务程序由于非重要中断程序的阻塞无法及时响应。把这些中断的抢占式优先级区分出来才有实时性。

2.中断优先级管理方便。

....... (2016-08-31 09:58) 
好的
回复

使用道具 举报

11

主题

44

回帖

77

积分

初级会员

积分
77
 楼主| 发表于 2016-8-31 20:51:35 | 显示全部楼层

回 eric2013 的帖子

eric2013:1. 配置为0,你的中断服务程序将没有实时性可言,重要中断服务程序由于非重要中断程序的阻塞无法及时响应。把这些中断的抢占式优先级区分出来才有实时性。

2.中断优先级管理方便。

....... (2016-08-31 09:58) 
老大,已经按你说的修改了,实际测试一个样儿!优先级调试时也看过了。都没问题。
回复

使用道具 举报

11

主题

44

回帖

77

积分

初级会员

积分
77
 楼主| 发表于 2016-8-31 20:52:08 | 显示全部楼层

回 eric2013 的帖子

eric2013:1. 配置为0,你的中断服务程序将没有实时性可言,重要中断服务程序由于非重要中断程序的阻塞无法及时响应。把这些中断的抢占式优先级区分出来才有实时性。

2.中断优先级管理方便。

....... (2016-08-31 09:58) 
郁闷了
回复

使用道具 举报

11

主题

44

回帖

77

积分

初级会员

积分
77
 楼主| 发表于 2016-8-31 21:17:31 | 显示全部楼层

回 eric2013 的帖子

eric2013:1. 配置为0,你的中断服务程序将没有实时性可言,重要中断服务程序由于非重要中断程序的阻塞无法及时响应。把这些中断的抢占式优先级区分出来才有实时性。

2.中断优先级管理方便。

....... (2016-08-31 09:58) 
老大,调试了下,我知道问题了!
低级错误,我把打印调试任务的优先级设置成了最高,但是串口的初始化却在串口任务的while(1)外面,所以一直死在等待USART_FLAG上。太低级了,以后跑系统有个好习惯,封装个BSP_Init放在main函数的第一句。吃亏了!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107031
QQ
发表于 2016-9-1 00:56:42 | 显示全部楼层

回 十二月的肖邦 的帖子

十二月的肖邦:老大,调试了下,我知道问题了!
低级错误,我把打印调试任务的优先级设置成了最高,但是串口的初始化却在串口任务的while(1)外面,所以一直死在等待USART_FLAG上。太低级了,以后跑系统有个好习惯,封装个BSP_Init放在main函数的第一句。吃亏了! (2016-08-31 21:17) 
[s:151]
别看这个小错误,找到问题了还是有些成就感的
回复

使用道具 举报

11

主题

44

回帖

77

积分

初级会员

积分
77
 楼主| 发表于 2016-9-1 12:04:20 | 显示全部楼层

回 eric2013 的帖子

eric2013:[s:151]
别看这个小错误,找到问题了还是有些成就感的 (2016-09-01 00:56) 
哈哈
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 19:18 , Processed in 0.416905 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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