你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

freertos,串口和任务通过邮箱通讯,结果任务反应很慢。

[复制链接]
any012 提问时间:2017-1-19 16:25 /
阅读主题, 点击返回1楼
收藏 1 评论14 发布时间:2017-1-19 16:25
14个回答
any012 回答时间:2017-1-20 14:53:17
用的MDK5,就是用的你楼上的朋友分享的配色方案。

CUBE支持生成ECLISPE+AC6的工程了,那个配色可以修改的更好看,但对ECLIPSE不熟悉,不知道该如何用STLINK调试,现在暂时放弃了。
any012 回答时间:2017-1-20 16:29:43
本帖最后由 any012 于 2017-1-20 16:35 编辑
watershade 发表于 2017-1-19 21:32
我的做法类似楼上你的osDelay具体是为什么。你既然用idle中断,那么你是如何将数据传送到邮箱的。

我的做 ...

我现在是中断接收数据后放到数组里,数组的第一位放数据的长度。
然后通过消息邮箱发送给任务。
任务通过消息邮箱后,先读出长度,然后依此复制过来存放到任务的数组里。再调用发送函数。

现在担心复制的过程中,中断又收到新的数据将原数组更新。

我还不懂内存池,现在中断接收存放在了个全局变量里。

  1. /* usart1Task function */
  2. void usart1Task(void const * argument)
  3. {

  4.         /* USER CODE BEGIN usart1Task */
  5.         uint8_t uart1TxBuff[TXBUFFLEN];
  6.         uint8_t *pMail;
  7.         osEvent event;
  8.         uint8_t i;
  9.         uint8_t txLength;

  10.         /* Infinite loop */
  11.         for(;;)
  12.         {
  13.                 event = osMailGet(mailQ01Handle, 0x00);
  14.                 if(event.status == osEventMail)
  15.                 {
  16.                         pMail =  event.value.p;
  17.                         txLength = *(pMail++);
  18.                         for(i = 0; i < txLength; i++)
  19.                                 uart1TxBuff[i] = *(pMail++);
  20.                         HAL_UART_Transmit_DMA(&huart1,uart1TxBuff,txLength);
  21.                         HAL_UART_Receive_DMA(&huart1, uart1RxBuff+1, RXBUFFLEN-1);
  22.                 }
  23.                
  24. //                osDelay(100);
  25.         }
  26.         /* USER CODE END usart1Task */
  27. }
复制代码
zbber 回答时间:2017-1-20 23:30:38
我的问题找到了
12

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版