前提・実現したいこと
STM32VLDiscoveryにて、UARTの受信を実現したい。
発生している問題・エラーメッセージ
STM32CubeMXにて、ソースを自動生成して、送信は出来ています。
通信速度は9600Bpsです。
受信は最初の1byte目しか受信ができていない。
続けて、2byteも受信したいのですが、リードができないです。
作成しているコード
### 該当のソースコード char buf[]={0x7e,0xff,0x06,0x0f,0x00,0x01,0x01,0xef}; //送信データ HAL_UART_Transmit(&huart1,(uint8_t*)buf,sizeof(buf),0xffff); while (1) { HAL_UART_Receive(&huart1,(uint8_t *)buf3, sizeof(buf3), 0xF); //データ受信 if(i<10){ rxbuf[i]=buf3[0]; i++; } }
補足情報(FW/ツールのバージョンなど)
開発環境:Atollic TrueSTUDIO for ARM 9.0
windowsからだ RS232C通信ではデータ受信は出来ています。
掲載されたコードだけでは2byte目が受信できない理由が判断できないので、該当するコードをすべて掲載してもらえませんか。
おそらく、根本的な原因は
rxbuf[i]=buf3[0];
のbuf3[]の添え字が0固定になってるのが原因のように思えますが。
ちなみに、それ以外にも問題となりそうな記述があります。
char buf[]={0x7e,0xff,0x06,0x0f,0x00,0x01,0x01,0xef};
  HAL_UART_Transmit(&huart1,(uint8_t*)buf,sizeof(buf),0xffff);
  char buf2[]={0x7e,0xff,0x06,0x4e,0x00,0x01,0x01,0xef};
  HAL_UART_Transmit(&huart1,(uint8_t*)buf2,sizeof(buf2),0xffff);
  char rxbuf[10]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};
  double n=0;
 
  /* USER CODE END 2 */
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
	 n = HAL_UART_Receive(&huart1,(uint8_t *)rxbuf, sizeof(rxbuf), 0xFF);
  }
  /* USER CODE END 3 */
WindowsのRS232C通信だと10バイトのデータが返ってくるので
10バイトのデータが欲しくて、色々試してますが
よくわからないです。すみません