待实验验证:
比如用bldc工程,未用dma时候,发送1024个字节循环发送。同时开始tim6定每1ms时,通过串口助手循环一段时间,看看数据是否掉。
通过HAL_UART_Transmit_IT异步发送看看。
一、总结到位:
工作原理
当使用 HAL_UART_Transmit_IT() 发送局部变量的内容时,如果出现错误,这通常是由于局部变量的生命周期和作用域导致的。在这种情况下,关键点在于理解 HAL_UART_Transmit_IT 函数是如何工作的,以及局部变量在函数返回后发生了什么。
HAL_UART_Transmit_IT 的工作方式
HAL_UART_Transmit_IT 是一个非阻塞函数,它启动了基于中断的数据发送操作,但并不等待数据发送完成就返回。这意味着函数调用后,程序会立即继续执行后续的代码,而数据的实际发送则是在中断服务例程(ISR)中异步进行的。
局部变量的生命周期
局部变量只在其定义的函数或代码块内有效。当函数返回后,局部变量所占用的内存空间可能会被释放,或用于其他目的。因此,如果您在函数中定义了一个局部数组并用 HAL_UART_Transmit_IT 发送它,函数返回后,该数组的内容可能会被改变或变得无效。
发生错误的原因