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); 则只发送一次,就挂了。
正常来说并不会出现这种问题,可能是你给这个任务的堆栈太小了,可以放大试试
是其它地方没用对吧,这个延时随便加,只要不太大以至于溢出。
前段时间的“STM32超低功耗平台上的RTOS培训”,好多人都参加过,程序里面就有这个延时的。 txbuf才50字节大,你memcpy100个字节,直接就内存溢出了 你说的能再具体些吗?任务的参数配置,子函数的代码,中断的配置,简单这样不好分析 问题在 HAL_GPIO_TogglePin ,你可以去看看代码,里面哟了什么延迟?
是不是在Tick初始化的时候,没有吧HAL的Tick作改变
各位不好意思回复晚了,最终发现是主函数的while()循环里面有个HAL_Dealy()影响到了。
页:
[1]