zfz9232 发表于 2018-6-1 11:56:31

FreeRTOS的TaskDealy和串口冲突

如题:
static void vTaskStart(void *pvParameters)
{
        uint8_t txbuf;
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);        则只发送一次,就挂了。

xiaojie0513 发表于 2018-6-1 14:00:55

正常来说并不会出现这种问题,可能是你给这个任务的堆栈太小了,可以放大试试

toofree 发表于 2018-6-1 15:12:43

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

Dandjinh 发表于 2018-6-1 17:06:03

txbuf才50字节大,你memcpy100个字节,直接就内存溢出了

50031185 发表于 2018-6-6 19:26:32

你说的能再具体些吗?任务的参数配置,子函数的代码,中断的配置,简单这样不好分析

wolfgang2015 发表于 2018-6-6 22:00:32

问题在 HAL_GPIO_TogglePin ,你可以去看看代码,里面哟了什么延迟?
是不是在Tick初始化的时候,没有吧HAL的Tick作改变

zfz9232 发表于 2018-6-7 16:27:00

各位不好意思回复晚了,最终发现是主函数的while()循环里面有个HAL_Dealy()影响到了。
页: [1]
查看完整版本: FreeRTOS的TaskDealy和串口冲突