Merhaba
Kodlarımızı yazarken kullandığımız fonksiyonların .c dosyasında içine baktığımız zaman assert_param(); ı görüyoruz. Mesela I2C_GenerateSTART(); fonk. bakalım
void I2C_GenerateSTART(I2C_TypeDef* I2Cx, FunctionalState NewState)
{
/* Check the parameters */
assert_param(IS_I2C_ALL_PERIPH(I2Cx));
assert_param(IS_FUNCTIONAL_STATE(NewState));
if (NewState != DISABLE)
{
/* Generate a START condition */
I2Cx->CR1 |= I2C_CR1_START;
}
else
{
/* Disable the START condition generation */
I2Cx->CR1 &= (uint16_t)~((uint16_t)I2C_CR1_START);
}
}
burada assert_param(); olayı neden var daha doğrusu ne işe yaradığını bilmiyorum. Açıklayan olursa sevinirim
conf.h kütüphanesi içerisinde tanımlanan bir makro aslında.(#define USE_FULL_ASSERT 1)
Argüman olarak aldığı ifadenin doğruluk durumuna bağlı olarak hatalı olup olmadığı mesaj almayı sağlayan fonksiyondur.
Argümanın false değer alması durumunda hata mesajı yazdırır ve abort fonksiyonu ile programı sonlandırmayı sağlamaktadır.
C deki karsiligi assert(). Bir cesit hata ayiklama mekanizmasi.
Argümanın false değer alması durumunda mı, true değer alması durumunda mı tetiklenir?
Standart C gore false olmasi lazim.