Merhaba,
STM32F030 ve KEIL kullanıyorum. aşağıda paylaştığım kod, debug modudnayken düzgün çalışıyor. Ancak ST-LINK cihazını çıkartıp tekrar taktığımda çalışmıyor. Sebebi ne olabilir sizce? (main.c de sadece pin konfigürasyonları vb. var o yüzden buraya eklemedim.)
/*
#include "main.h" //buraya don
#include "stm32f0xx_hal.h"
#include "dht22.h"
uint8_t nem_byte1, nem_byte2, sicaklik_byte1, sicaklik_byte2,checksum, verilerin_toplami;
uint16_t nem, sicaklik,sicaklik1,nem1,timer_sayac_degeri;
void delay_ticks(uint32_t ticks)
{ //SYSTICK TIMER 24 BIT
SysTick->LOAD = ticks; //girilen süre için gerekli tick sayısı
SysTick->VAL = 0;
SysTick->CTRL = SysTick_CTRL_ENABLE_Msk;
SysTick->CTRL &= ~SYSTICK_CLKSOURCE_HCLK_DIV8;
SysTick->CTRL |= SYSTICK_CLKSOURCE_HCLK;
//COUNTFLAG,counter 0 oldugunda 1 oluyo.
//okundugunda otomatik oalrak temizleniyo
while ((SysTick->CTRL & SysTick_CTRL_COUNTFLAG_Msk) == 0);
SysTick->CTRL = 0;
}
void delay_us(uint32_t us)
{
delay_ticks(us * 8);
}
static inline void delay_ms(uint32_t ms)
{
delay_ticks(ms * 8000);
}
GPIO_InitTypeDef GPIO_InitStruct = {0};
void pini_giris_yap (void)
{
GPIO_InitStruct.Pin = GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
/*Configure GPIO pin : PA2 */
void pini_cikis_yap (void)
{
GPIO_InitStruct.Pin = GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
}
void DHT22_baslat (void)
{
pini_cikis_yap();
HAL_GPIO_WritePin (GPIOA, GPIO_PIN_5, 0); // baslangica sinyali
delay_us(1100);
HAL_GPIO_WritePin (GPIOA, GPIO_PIN_5, 1); // sensorden gelecek cevabi bekle
delay_us(30);
pini_giris_yap();
}
void sensorden_yanit_al (void)
{
delay_us(120); //datasheete gore 80-160 arasi bir deger
while ((HAL_GPIO_ReadPin (GPIOA, GPIO_PIN_5)));
}
uint8_t veri_oku(void)
{
uint8_t i,j;
for (j=0;j<8;j++)
{
while (!(HAL_GPIO_ReadPin (GPIOA, GPIO_PIN_5))); // pin 1 olana keder bekle
delay_us(40); // 50 yapinca calismiyo
if ((HAL_GPIO_ReadPin (GPIOA, GPIO_PIN_5)) == 0)
{
i&= ~(1<<(7-j)); // alinan bit 0
}
else i|= (1<<(7-j)); // alinan bit 1
while (HAL_GPIO_ReadPin (GPIOA, GPIO_PIN_5 && ((TIM3->CNT-timer_sayac_degeri)==1600) )); //problem olursa 200 us sonra devam et
}
return i;
}
void oku(void){
DHT22_baslat ();
sensorden_yanit_al ();
nem_byte1 = veri_oku();
nem_byte2 = veri_oku();
sicaklik_byte1 = veri_oku();
sicaklik_byte2 = veri_oku();
checksum = veri_oku();// check-sum should be the last 8 bit of "8 bit integral RH data+8 bit decimal RH
//data+8 bit integral T data+8 bit decimal T data".
verilerin_toplami=(nem_byte1+nem_byte2+sicaklik_byte1+sicaklik_byte2);
// HAL_UART_Transmit(&huart1,(uint8_t*)"resul\r\n",sizeof("resul\r\n")-1,100);
if ((checksum) == verilerin_toplami)
{
sicaklik = ((sicaklik_byte1<<8)|sicaklik_byte2);
nem = ((nem_byte1<<8)|nem_byte2);
}
}
Bu durumdayken işlemcine reset atmayı dene. Olmadı ayarların aşağıdaki gibi mi bir kontrol et:
(https://i.ibb.co/dpKtWcg/Ekran-Al-nt-s-13.png) (https://ibb.co/dpKtWcg)
(https://i.ibb.co/7ntBb9Q/Ekran-Al-nt-s-13.png) (https://ibb.co/7ntBb9Q)
Merhaba, BOOT direncinin değeri nedir ?
Alıntı yapılan: apsis - 28 Kasım 2019, 16:07:54Bu durumdayken işlemcine reset atmayı dene. Olmadı ayarların aşağıdaki gibi mi bir kontrol et:
(https://i.ibb.co/dpKtWcg/Ekran-Al-nt-s-13.png) (https://ibb.co/dpKtWcg)
(https://i.ibb.co/7ntBb9Q/Ekran-Al-nt-s-13.png) (https://ibb.co/7ntBb9Q)
Yanıtınız için teşekkür ederim.
Debug moduna girip kodu 'Run' ettikten sonra 'Terminate' ikonuna basıp debug modundan çıkış yaptım. Daha sorna ST-LINK cihazını çıkartıp taktım. Ayrıca ayarlarım ekran görüntüsündeki ayarlarla aynı.
Ben reset and run yapmıyor diye düşünüyorum.
Debug modda iken Stlink i çıkarırsan niye çalışsın mcu.
Veya debug modda iken Stlink i çıkarıp takınca niye çalışsın mcu.
Birde Stlink i nereden çıkarıyorsun pc den mi yoksa sadece mcu dan mı?
Soruyu sorunu anlatabildiğini düşünmüyorum.
Birçok adım var tam olarak ne yaptığını yazman faydalı olur.
Veya video ekle.
Alıntı YapDebug modunda iken ST-LINK'i çıkartıp tekrar taktım olmadı.
Ben bu cümlene dikkat etmemişim. Debug'da iken neden çıkarıp takma ihtiyacı duyuyorsun anlamadım!
Debug'a girmeden doğrudan programı yüklediğinde ne oluyor?
Alıntı yapılan: RaMu - 28 Kasım 2019, 18:31:34Debug modda iken Stlink i çıkarırsan niye çalışsın mcu.
Veya debug modda iken Stlink i çıkarıp takınca niye çalışsın mcu.
Birde Stlink i nereden çıkarıyorsun pc den mi yoksa sadece mcu dan mı?
Soruyu sorunu anlatabildiğini düşünmüyorum.
Birçok adım var tam olarak ne yaptığını yazman faydalı olur.
Veya video ekle.
Alıntı yapılan: apsis - 28 Kasım 2019, 18:41:35Ben bu cümlene dikkat etmemişim. Debug'da iken neden çıkarıp takma ihtiyacı duyuyorsun anlamadım!
Debug'a girmeden doğrudan programı yüklediğinde ne oluyor?
Özür dilerim, düzeltiyorum. Debug moduna girip kodu 'Run' ettikten sonra 'Terminate' ikonuna basıp debug modundan çıkış yaptım. Daha sorna ST-LINK cihazını çıkartıp taktım. Kod çalışmıyor.
Reset bacağını nasıl bağladın? Devre şemasını paylaşırsan daha iyi olur.
Alıntı yapılan: alone_lover - 28 Kasım 2019, 21:35:44Reset bacağını nasıl bağladın? Devre şemasını paylaşırsan daha iyi olur.
(https://i.ibb.co/nBNQtNh/Ads-z.png) (https://ibb.co/nBNQtNh)
Sorun donanımda mı yazılımda mı anlamak için,
sadece bir led yakıp söndüren program yazıp denemek iyi olur.
Alıntı yapılan: RaMu - 28 Kasım 2019, 23:32:22Sorun donanımda mı yazılımda mı anlamak için,
sadece bir led yakıp söndüren program yazıp denemek iyi olur.
Hocam led yakıp söndürürken farkettim. Jumper kabloları çıkartıp taktığımda bazen yanıyor bazen yanmıyor. Aslında bir temassızlık yok gibi, sebebini anlamadım ama böyle idare edeceğim artık.
Devreyi board üzerine mi kurdun?
Bizimle açık bir şey paylaşmıyorsun ki. Yukarıdaki cubemx görüntüsü açıklayıcı değil. Şema lazım.
İşlemci boardu hazır kart mı? Öyleyse nasıl bir şey onu da paylaşırsan iyi olur.