blue pill RTC çalıştıran var mı ?

Başlatan magnetron, 27 Aralık 2020, 15:37:02

magnetron

merhaba forum,

aşağıdaki resimdeki gibi usb üzerinden blue pill RTC sini ayarlıyorum
ve sorguluyorum

saati set etmede sorun yok ama tarihi set edince ediliyor fakat enerjiyi kesip tekrar verince
saati hatırlıyor takvimi sıfırlıyor - Vbat 3.3V lityum pil bağlı
 :-[
init kodu şu şekilde

static void MX_RTC_Init(void)
{

  /* USER CODE BEGIN RTC_Init 0 */

  /* USER CODE END RTC_Init 0 */

  RTC_TimeTypeDef sTime = {0};
  RTC_DateTypeDef DateToUpdate = {0};

  /* USER CODE BEGIN RTC_Init 1 */

  /* USER CODE END RTC_Init 1 */
  /** Initialize RTC Only
  */
  hrtc.Instance = RTC;
  hrtc.Init.AsynchPrediv = RTC_AUTO_1_SECOND;
  hrtc.Init.OutPut = RTC_OUTPUTSOURCE_NONE;
  if (HAL_RTC_Init(&hrtc) != HAL_OK)
  {
    Error_Handler();
  }

  /* USER CODE BEGIN Check_RTC_BKUP */

  /* USER CODE END Check_RTC_BKUP */

  /** Initialize RTC and set the Time and Date
  */ /*
  sTime.Hours = 0;
  sTime.Minutes = 0;
  sTime.Seconds = 0;

 /* if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK)
  {
    Error_Handler();
  }
  DateToUpdate.WeekDay = RTC_WEEKDAY_MONDAY;
  DateToUpdate.Month = RTC_MONTH_DECEMBER;
  DateToUpdate.Date = 1;
  DateToUpdate.Year = 0;

  if (HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BIN) != HAL_OK)
  {
    Error_Handler();
  }*/
  /* USER CODE BEGIN RTC_Init 2 */

  /* USER CODE END RTC_Init 2 */

}

ayarlama kodu şu şekilde

void transmit(uint8_t *data){
	  CDC_Transmit_FS(data, strlen(data));
	//  HAL_Delay (1000);
}
void RTC_TIME_StructUpadate(void)
{
		HAL_RTC_GetTime(&hrtc,&sTime,RTC_FORMAT_BIN);
		saniye= sTime.Seconds;
		dakika= sTime.Minutes;
		saat= sTime.Hours;

		HAL_RTC_GetDate(&hrtc,&DateToUpdate,RTC_FORMAT_BIN);
		gun=DateToUpdate.Date;
		ay=DateToUpdate.Month;
		yil=DateToUpdate.Year;
		haftaningunu = DateToUpdate.WeekDay;

}
void showtime (void)
{
		RTC_TIME_StructUpadate();

		sprintf((char*)shtime,"%.2d:%.2d:%.2d-",saat,dakika,saniye);
		transmit(shtime);HAL_Delay(100);
		sprintf((char*)shtime,"%.2d:%.2d:%.2d:%.2d\n",gun,ay,yil,haftaningunu);
		transmit(shtime);
}

void usbcontrol (void){
	if (USB_arrive){
		USB_arrive=0;
		if (!strncmp("PT",buffer,2))
			showtime();
		if (!strncmp("ST",buffer,2)){
			  sTime.Hours = atoi(&buffer[3]);
			  sTime.Minutes = atoi(&buffer[6]);
			  sTime.Seconds = 0;
		HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN);}
		if (!strncmp("SD",buffer,2)){
			  DateToUpdate.WeekDay = atoi(&buffer[11]);
			  DateToUpdate.Date = atoi(&buffer[3]);
			  DateToUpdate.Month = atoi(&buffer[6]);
			  DateToUpdate.Year = atoi(&buffer[9]);
		HAL_RTC_SetDate(&hrtc, &DateToUpdate, RTC_FORMAT_BIN);}

	}

}

bu da usb com port haberleşmesi - com port aç kapa yaparken beslemeyi de çekip takıyorum - ST saati SD tarihi ayarlıyor PT sorguluyor



magnetron

hocam cubeide de RTC nin yanında ünlem çıkıyor herhalde bunun içindi uyarmak için

ben f103rc de  saat takvim yaptım ama o SPL kütüphanesiydi

sadece 32 bitlik bir timeri control ediyordu takvim sw ile yapılıyordu

HAL de böyle bir imkan yok mudur ? SPL ile yapıcam ama spl'de de usb haberleşmesi örneği bulamadım bana da usb lazım

muhittin_kaplan