STM32 ile bir RTC uygulaması üzerinde çalışıyorum ve bir sorunla karşılaştım. RTC'den güncel saat ve dakika değerlerini alıyorum ve bu değere giriş koşuluna bağlı olarak 45 dakika eklemem gerekiyor. Sonrasında bu yeni değeri RTC'yi ayarlamak için kullanacağım. Şu işlemi yapıyorum:
minute = gTime.Minutes;
yeniminute = minute + (0x45); // Burada 45 dakika ekleniyor
gAlarm.AlarmTime.Minutes = yeniminute; // Eklenen dakika alarm olarak ayarlanıyor.
Sorun şu: minute değeri ondalık. 45 dakika ekliyorum fakat bu ondalık değer, gAlarm.AlarmTime.Minutes'e atandığında yine ondalık olarak atanıyor ve sonuç yanlış çıkıyor. Ondalık değeri hekzadesimale çevirmem gerekiyor. Bu konuda yardımcı olabilirseniz sevinirim.
gAlarm.AlarmTime.Minutes değişkeninin veri tipi muhtemelen uint8_t veya benzeri bir tür. Bu yüzden, 45'i ondalık olarak ekleyip, sonrasında hekzadesimale çevirmeye gerek yok. Eğer yeniminute değeri 60'ı aşıyorsa, saat değişkenini de güncellemeniz gerekecektir. Örneğin, 45 dakika ekledikten sonra, yeniminute değeri 60'tan büyükse, saat değişkenine 1 ekleyip, yeniminute değerinden 60 çıkarmalısınız. Bu şekilde doğru bir şekilde alarmı ayarlayabilirsiniz.
minute = gTime.Minutes;
yeniminute = minute + (0x45); // Burada 45 dakika ekleniyor
gAlarm.AlarmTime.Minutes = yeniminute; // Eklenen dakika alarm olarak ayarlanıyor.
Sorun şu: minute değeri ondalık. 45 dakika ekliyorum fakat bu ondalık değer, gAlarm.AlarmTime.Minutes'e atandığında yine ondalık olarak atanıyor ve sonuç yanlış çıkıyor. Ondalık değeri hekzadesimale çevirmem gerekiyor. Bu konuda yardımcı olabilirseniz sevinirim.
gAlarm.AlarmTime.Minutes değişkeninin veri tipi muhtemelen uint8_t veya benzeri bir tür. Bu yüzden, 45'i ondalık olarak ekleyip, sonrasında hekzadesimale çevirmeye gerek yok. Eğer yeniminute değeri 60'ı aşıyorsa, saat değişkenini de güncellemeniz gerekecektir. Örneğin, 45 dakika ekledikten sonra, yeniminute değeri 60'tan büyükse, saat değişkenine 1 ekleyip, yeniminute değerinden 60 çıkarmalısınız. Bu şekilde doğru bir şekilde alarmı ayarlayabilirsiniz.