贴子一发 石沉大海 蓝瘦香菇《简单的小问题 求解 谢谢你!》

2019-07-20 17:24发布

这是个用UART+RS485通信的程序  下面是main()函数   
遇到问题是下载代码后立即向串口发送数据它能收到,后面再发就收不到,调了多次超时参数也加过while(HAL_GetState(&huart7)==RESET);  不大清楚这两个函数,只能加进去看看效果 ,刚接触F7,请指点迷津!谢谢!
[mw_shl_code=applescript,true]int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration----------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* Configure the system clock */
  SystemClock_Config();

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_UART7_Init();

  /* USER CODE BEGIN 2 */

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {

                while(HAL_UART_GetState(&huart7) == RESET );
                HAL_UART_Receive(&huart7,aRxBuffer,5,5000); //发送5个字符  aRxBuffer 和 aTxBuffer  数组长度分别是6和64

                                uint16_t i;
                for(i=0;i<5;i++)
                {
                        aTxBuffer=aRxBuffer;  //收到的数据填充到发送数组
                }
                HAL_Delay(1000);
  while(HAL_UART_GetState(&huart7) == RESET );
                           HAL_GPIO_WritePin(GPIOE,DE_Pin, GPIO_PIN_SET); //使能485发送
                HAL_UART_Transmit(&huart7,aTxBuffer,5,100);
                HAL_GPIO_WritePin(GPIOE,DE_Pin, GPIO_PIN_RESET); //

                /* USER CODE END WHILE */
  }
  /* USER CODE END 3 */

}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
为我的心
1楼-- · 2019-07-20 18:09
 精彩回答 2  元偷偷看……
为我的心
2楼-- · 2019-07-20 23:12
搞好了  怎么退贴  
xuande
3楼-- · 2019-07-21 02:31

不了解程序里state的具体定义,这是要查手册的。

烦烦说下关键:
理解串口通信的物理过程,
发送一个字节后线路是什么状态,怎么样随时间变化,变化到什么程度会引起什么动作、事件,CPU是什么状态,
然后根据物理过程来编写时序。

为我的心
4楼-- · 2019-07-21 05:53
 精彩回答 2  元偷偷看……

一周热门 更多>