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

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

查看全部评分

七哥 回答时间: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

查看全部评分

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

评分

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

查看全部评分

wolfgang 回答时间: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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版