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

FreeRTOS的TaskDealy和串口冲突

[复制链接]
zfz9232 提问时间:2018-6-1 11:56 /
如题:
static void vTaskStart(void *pvParameters)
{
        uint8_t txbuf[50];
  while(1)
  {
                HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
                memcpy(txbuf,"这是一个串口中断接收回显实验\n",100);
                HAL_UART_Transmit(&husartx,txbuf,strlen((char *)txbuf),1000);
               
                vTaskDelay(100);       
  }
}

如果不使用vTaskDelay(100);能正常的循环发送串口,如果使用vTaskDelay(100);        则只发送一次,就挂了。
收藏 评论6 发布时间:2018-6-1 11:56

举报

6个回答
xiaojie0513 回答时间:2018-6-1 14:00:55
正常来说并不会出现这种问题,可能是你给这个任务的堆栈太小了,可以放大试试

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

toofree 回答时间:2018-6-1 15:12:43
是其它地方没用对吧,这个延时随便加,只要不太大以至于溢出。
前段时间的“STM32超低功耗平台上的RTOS培训”,好多人都参加过,程序里面就有这个延时的。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

Dandjinh 回答时间:2018-6-1 17:06:03
txbuf才50字节大,你memcpy100个字节,直接就内存溢出了

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

50031185 回答时间:2018-6-6 19:26:32
你说的能再具体些吗?任务的参数配置,子函数的代码,中断的配置,简单这样不好分析

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

wolfgang2015 回答时间:2018-6-6 22:00:32
问题在 HAL_GPIO_TogglePin ,你可以去看看代码,里面哟了什么延迟?
是不是在Tick初始化的时候,没有吧HAL的Tick作改变

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

zfz9232 回答时间:2018-6-7 16:27:00
各位不好意思回复晚了,最终发现是主函数的while()循环里面有个HAL_Dealy()影响到了。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2 结帖奖励

查看全部评分

所属标签

相似问题

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