硬汉嵌入式论坛

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

[FreeRTOS] freertos在定时中断内不能使用消息队列发送数据

[复制链接]

1

主题

3

回帖

1

积分

新手上路

积分
1
发表于 2017-4-25 09:39:50 | 显示全部楼层 |阅读模式
版主你好,刚接触FREERTOS尝试编写了个串口通讯代码,基本思路是最串口中断内启动TIM5检测通讯超时,然后在定时中断内通过消息队列发送接收到的数据并在任务内接收消息进行数据处理。
以下是我用的代码:

void USART1_IRQHandler(void)
{
    BaseType_t xResult;
    BaseType_t xHigherPriorityTaskWoken = pdFALSE;
    if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET )//
    {   
        RxBuffer[RxCounter] = USART_ReceiveData(USART1);
        RxCounter++;
               TIM_SetCounter(TIM5, 0);// 清零计数器
           TIM_Cmd(TIM5, ENABLE);            //开启定时器3
    }   
}


void TIM5_IRQHandler(void)
{
         BaseType_t xResult;
         BaseType_t xHigherPriorityTaskWoken = pdFALSE;   
    if (TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET) //检查指定的TIM中断发生与否:TIM 中断源
        {
        TIM_ClearITPendingBit(TIM5, TIM_IT_Update  );  //清除TIMx的中断待处理位:TIM 中断源
        TIM_Cmd(TIM5, DISABLE);            //关闭定时器5
        RxCounter=0;

        xQueueSendFromISR(xQueueRx, (void *)&RxBuffer, &xHigherPriorityTaskWoken);/*接收完成把数据通过消息队列发送(void *)&ptMsg,*/        portYIELD_FROM_ISR( xHigherPriorityTaskWoken );
        }            
}
现在的问题是程序直接死循环在这里 QQ图片.png
请问版主是程序问题还是FREERTOS不允许在定时中断内发送消息队列?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
发表于 2017-4-25 09:50:58 | 显示全部楼层
确定两个问题
1. 消息队列是否正确创建了
2. 你的这个调用FreeRTOS API函数的TIM5中断是受FreeRTOS管理的中断不。
回复

使用道具 举报

1

主题

3

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2017-4-25 11:38:24 | 显示全部楼层
1.消息队列已经创建了,在串口中断中使用任务可以正常接收到串口数据,但移到定时中断就不行。
2.我从TIM2-TIM7试过了都不行。
回复

使用道具 举报

1

主题

3

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2017-4-25 11:46:32 | 显示全部楼层

回 eric2013 的帖子

eric2013:
确定两个问题
1. 消息队列是否正确创建了
2. 你的这个调用FreeRTOS API函数的TIM5中断是受FreeRTOS管理的中断不。
V4_FreeRTOS测试_事件标志组0425.rar (3.61 MB, 下载次数: 41) 这个是工程文件
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107046
QQ
发表于 2017-4-25 11:55:57 | 显示全部楼层
看了你的代码,FreeRTOS 配置没什么问题,别的问题你再查查吧。

ps:参考我们FreeRTOS例子消息队列的中断方式,也是用的定时器。
http://www.armbbs.cn/forum.php?mod=viewthread&tid=17658
回复

使用道具 举报

1

主题

3

回帖

1

积分

新手上路

积分
1
 楼主| 发表于 2017-4-25 12:03:58 | 显示全部楼层
好的,谢谢版主
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-15 12:29 , Processed in 0.259680 second(s), 34 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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