硬汉嵌入式论坛

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

[FreeRTOS] 请问中断触发任务用什么来做呢?

[复制链接]

20

主题

92

回帖

152

积分

初级会员

积分
152
发表于 2016-1-8 17:22:15 | 显示全部楼层 |阅读模式
请问中断触发任务用什么来做呢?
接收到串口数据“0x55”后,触发任务vTaskUSART打印“The recv data is 0x55”。
请问是用二值信号量吗?或者其他更好的处理方法?
回复

使用道具 举报

20

主题

92

回帖

152

积分

初级会员

积分
152
 楼主| 发表于 2016-1-8 19:34:11 | 显示全部楼层
请问二值信号量为什么不能给出呢?
以下的代码测试发现GPIO_Pin_8没有反转,说明xHigherPriorityTaskWoken一直为pdFALSE
  1. void USART2_IRQHandler(void)
  2. {
  3.     if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == SET)
  4.     {
  5.         xSemaphoreGiveFromISR( xSemaphore, &xHigherPriorityTaskWoken );
  6.         if( xHigherPriorityTaskWoken != pdFALSE )
  7.         {
  8.             GPIOF->ODR ^= GPIO_Pin_8;        
  9.         }
  10.     }
  11. }
复制代码
以下代码有电平反转,说明xSemaphoreGiveFromISR( xSemaphore, &xHigherPriorityTaskWoken )被执行了,但是为什么给出信号量没有成功呢?
  1. void USART2_IRQHandler(void)
  2. {
  3.     if(USART_GetFlagStatus(USART2, USART_FLAG_RXNE) == SET)
  4.     {
  5.         GPIOF->ODR ^= GPIO_Pin_8;
  6.         xSemaphoreGiveFromISR( xSemaphore, &xHigherPriorityTaskWoken );
  7.         if( xHigherPriorityTaskWoken != pdFALSE )
  8.         {
  9.                     
  10.         }
  11.     }
  12. }
复制代码
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106685
QQ
发表于 2016-1-9 11:45:02 | 显示全部楼层
建议设置NVIC的优先级分组为4,
另外就是你不可以在高于,FreeRTOSConfig.h 文件中#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY    1 定义的
中断中调用FreeRTOS的API。

这个问题,我在这个帖子里面有详细说明:http://www.armbbs.cn/forum.php?mod=viewthread&tid=12784
回复

使用道具 举报

20

主题

92

回帖

152

积分

初级会员

积分
152
 楼主| 发表于 2016-1-9 12:52:34 | 显示全部楼层

回 eric2013 的帖子

eric2013:建议设置NVIC的优先级分组为4,
另外就是你不可以在高于,FreeRTOSConfig.h 文件中#define configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY    1 定义的
中断中调用FreeRTOS的API。

这个问题,我在这个帖子里面有详细说明:http://bbs.armfly.com/read.php?ti .. (2016-01-09 11:45) 
十分感谢,看了你的帖子,问题解决了,问题确实出在了初始化设置部分
中断优先级很重要
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 15:05 , Processed in 0.211791 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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