HAL+Freertos+USART疑惑?
Freertos初学,请大神指点一二!在mai()前,执行了如下开中断接收,并把接收到的数据保存在u4_rx_buf中
/* USER CODE BEGIN 2 */
HAL_UART_Receive_IT(&huart4, u4_rx_buf, 1);//开接收中断
/* USER CODE END 2 */
这个u4_rx_buf,必须定议为全局变量吗?如定议为全局变量会存有有问题吗?
这个u4_rx_buf,能定议在某个任务中吗?
另外,在Freertos中,全局变量能随便定议使用吗,有没有什么说法或什么规则?
HAL_UART_Receive_IT需要传入全局变量,这个是中断接收缓冲区用于存放的地址。如果是局部变量会导致指针错误,不能把正确的数据放入到接收缓冲区中。 本人对Freertos 不算了解,不过上述的HAL_UART_Receive_IT(&huart4, u4_rx_buf, 1);函数我理解的是必须传个全局的或者静态的空间,或者malloc的空间,如果传个局部变量栈空间,在uart接收中断中使用该变量的话,上述栈空间有可能已经失去了生命周期或者被分配给了别的变量,这样显然不是期待的结果。 个人认为,Freertos malloc的固定空间 也是可以作接收缓冲区中的,关建是管理好 接收 和Free关系:释放Free该空间意味着接收要关闭。 非常感谢各位,谢谢! 这么谦虚干嘛,只要没开MPU支持,全局变量随便用,没啥限制:lol
页:
[1]