<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>STM8 arşivleri - N7A Teknik</title>
	<atom:link href="https://n7atechnic.com.tr/category/stm8/feed/" rel="self" type="application/rss+xml" />
	<link>https://n7atechnic.com.tr/category/stm8/</link>
	<description>Teknik İşler</description>
	<lastBuildDate>Mon, 30 Jan 2023 15:34:24 +0000</lastBuildDate>
	<language>tr</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://n7atechnic.com.tr/wp-content/uploads/2022/05/cropped-logo_mono-1-32x32.png</url>
	<title>STM8 arşivleri - N7A Teknik</title>
	<link>https://n7atechnic.com.tr/category/stm8/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>IAR (STM8) Optimizasyon Ayarları</title>
		<link>https://n7atechnic.com.tr/iar-stm8-optimizasyon-ayarlari/</link>
					<comments>https://n7atechnic.com.tr/iar-stm8-optimizasyon-ayarlari/#respond</comments>
		
		<dc:creator><![CDATA[N7A Tech]]></dc:creator>
		<pubDate>Fri, 27 Jan 2023 07:06:00 +0000</pubDate>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[STM8]]></category>
		<guid isPermaLink="false">https://n7atechnic.com.tr/?p=3168</guid>

					<description><![CDATA[<p>IAR Embedded Workbench for STM8, kodunuzu optimize etmek için birçok araç ve seçenek sunar. Optimizasyon seviyeleri arasındaki farkları anlamak için, optimizasyonun ne yaptığını bilmeniz gerekir. Optimizasyon,<span class="excerpt-hellip"> […]</span></p>
<p><a href="https://n7atechnic.com.tr/iar-stm8-optimizasyon-ayarlari/">IAR (STM8) Optimizasyon Ayarları</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<p>IAR Embedded Workbench for STM8, kodunuzu optimize etmek için birçok araç ve seçenek sunar. Optimizasyon seviyeleri arasındaki farkları anlamak için, optimizasyonun ne yaptığını bilmeniz gerekir.</p>



<p>Optimizasyon, kodunuzu derleyicinin daha verimli bir şekilde çalıştırmasını sağlamak için yaptığı değişikliklerdir. Örneğin, derleyici kodunuzdaki inanılmaz değişkenleri veya fonksiyonları sildiğinde veya değiştirdiğinde, kodunuzun çalışma hızını arttırabilir. Aynı şekilde, derleyici kodunuzdaki bellek kullanımını azaltmak için değişiklikler yapabilir.</p>



<p>&#8220;None&#8221; seçeneği, hiçbir optimizasyon yapılmaz. Bu seçenek, hata ayıklama işlemleri için en uygun olandır. &#8220;Low&#8221; seçeneği, düşük seviyede optimizasyon yapar. Bu seçenek, hata ayıklama işlemleri için uygun olsa da, kodun hızını arttırmak için yeterli olmayabilir. <br>&#8220;Medium&#8221; seçeneği, orta seviyede optimizasyon yapar. Bu seçenek, hata ayıklama işlemleri için uygun olsa da, kodun hızını arttırmak için daha etkilidir. <br>&#8220;High&#8221; seçeneği, yüksek seviyede optimizasyon yapar. Bu seçenek, kodun hızını arttırmak için daha etkilidir ancak hata ayıklama işlemleri için zor olabilir. <br>&#8220;Maximum&#8221; seçeneği, maksimum optimizasyon yapar. Bu seçenek, kodun hızını en yüksek seviyede arttırmak için kullanılır ancak hata ayıklama işlemleri için zor olabilir.</p>



<p>Optimizasyon seçeneği seçerken, kodunuzun çalışma hızı ve bellek kullanımı arasındaki dengeyi dikkate almalısınız. Ayrıca, hata ayıklama işlemleri için yeterli alanın olduğundan emin olmalısınız.</p>
<p><a href="https://n7atechnic.com.tr/iar-stm8-optimizasyon-ayarlari/">IAR (STM8) Optimizasyon Ayarları</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://n7atechnic.com.tr/iar-stm8-optimizasyon-ayarlari/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>ST-Link V2 Pozitif Besleme 3.3V ve 5V Sorunu</title>
		<link>https://n7atechnic.com.tr/st-link-v2-pozitif-besleme-3-3v-ve-5v-sorunu/</link>
					<comments>https://n7atechnic.com.tr/st-link-v2-pozitif-besleme-3-3v-ve-5v-sorunu/#comments</comments>
		
		<dc:creator><![CDATA[N7A Tech]]></dc:creator>
		<pubDate>Sun, 16 Oct 2022 19:53:06 +0000</pubDate>
				<category><![CDATA[STM8]]></category>
		<category><![CDATA[Tüm Yazılar]]></category>
		<category><![CDATA[Uygulama]]></category>
		<category><![CDATA[Gömülü Sistem]]></category>
		<category><![CDATA[st-link]]></category>
		<category><![CDATA[st-link v2]]></category>
		<category><![CDATA[STLINK]]></category>
		<category><![CDATA[stlink çalışmıyor]]></category>
		<category><![CDATA[stlink programlama yapmıyor]]></category>
		<category><![CDATA[stlink v2]]></category>
		<category><![CDATA[stlink v2 besleme problemi]]></category>
		<category><![CDATA[stlink v2 çalışmıyor]]></category>
		<category><![CDATA[stlink v2 voltaj çıkmıyor]]></category>
		<category><![CDATA[stlink voltaj sorunu]]></category>
		<guid isPermaLink="false">https://n7a.web.tr/?p=3106</guid>

					<description><![CDATA[<p>Eğer ST-Link V2&#8217;niz ile STM8 veya STM32 basit geliştirme kartlarını programlamak istiyor ve programlayamıyorsanız problemin çözümünübulmuş olabilirsiniz. ST Link V2 üzerinden VCC ve VDD pinlerinden pozitif<span class="excerpt-hellip"> […]</span></p>
<p><a href="https://n7atechnic.com.tr/st-link-v2-pozitif-besleme-3-3v-ve-5v-sorunu/">ST-Link V2 Pozitif Besleme 3.3V ve 5V Sorunu</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Eğer ST-Link V2&#8217;niz ile STM8 veya STM32 basit geliştirme kartlarını programlamak istiyor ve programlayamıyorsanız problemin çözümünübulmuş olabilirsiniz. ST Link V2 üzerinden VCC ve VDD pinlerinden pozitif besleme çıkmıyorsa videoyu izleyerek revizyon işlemini gerçekleştirebilirsiniz.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="ST Link V2 Revizyon - Güncelleme" width="1200" height="675" src="https://www.youtube.com/embed/b6cM9CJLf88?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<p>[apvc_embed type=&#8221;customized&#8221; border_size=&#8221;2&#8243; border_radius=&#8221;5&#8243; background_color=&#8221;&#8221; font_size=&#8221;14&#8243; font_style=&#8221;&#8221; font_color=&#8221;&#8221; counter_label=&#8221;Visits&#8221; today_cnt_label=&#8221;Today&#8221; global_cnt_label=&#8221;Total&#8221; border_color=&#8221;&#8221; border_style=&#8221;solid&#8221; padding=&#8221;5&#8243; width=&#8221;200&#8243; global=&#8221;false&#8221; today=&#8221;false&#8221; current=&#8221;true&#8221; icon_position=&#8221;&#8221; widget_template=&#8221;None&#8221; ]</p>
<p><a href="https://n7atechnic.com.tr/st-link-v2-pozitif-besleme-3-3v-ve-5v-sorunu/">ST-Link V2 Pozitif Besleme 3.3V ve 5V Sorunu</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://n7atechnic.com.tr/st-link-v2-pozitif-besleme-3-3v-ve-5v-sorunu/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>STM8 Programlama -IAR- #10 (ADC)  (Analog Digital Converter) STM8S103F3</title>
		<link>https://n7atechnic.com.tr/stm8-programlama-iar-10-adc-analog-digital-converter-stm8s103f3/</link>
					<comments>https://n7atechnic.com.tr/stm8-programlama-iar-10-adc-analog-digital-converter-stm8s103f3/#respond</comments>
		
		<dc:creator><![CDATA[N7A Tech]]></dc:creator>
		<pubDate>Sat, 11 Jun 2022 00:38:06 +0000</pubDate>
				<category><![CDATA[Genel]]></category>
		<category><![CDATA[STM8]]></category>
		<category><![CDATA[Tüm Yazılar]]></category>
		<category><![CDATA[Analog Digital Converter]]></category>
		<category><![CDATA[STM8 ADC]]></category>
		<category><![CDATA[STM8 Analog Dijital Çevirici]]></category>
		<category><![CDATA[STM8ADC]]></category>
		<guid isPermaLink="false">https://n7a.web.tr/?p=3027</guid>

					<description><![CDATA[<p>Merhabalar konumuz ADC Analog Digital Converter Analog Dijital Dönüştürücülerdir. ADC sistemi koşullu analog sinyalleri etkin bir şekilde ele alır ve bunları dijital veri akışına dönüştürerek kullanım imkanını<span class="excerpt-hellip"> […]</span></p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-10-adc-analog-digital-converter-stm8s103f3/">STM8 Programlama -IAR- #10 (ADC)  (Analog Digital Converter) STM8S103F3</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="has-normal-font-size">Merhabalar konumuz ADC Analog Digital Converter Analog Dijital Dönüştürücülerdir. <strong>ADC</strong> sistemi koşullu analog sinyalleri etkin bir şekilde ele alır ve bunları dijital veri akışına dönüştürerek kullanım imkanını sağlar. Böylece uygulama gereksinimine bağlı olarak farklı çeşitleri değerlendirilir ve değişik alanlarda kullanılır.</p>



<p>STM8S103 mikrodenetleyicisinde donanımsal olarak 10 Bit çözünürlükte ADC birimi bulunmaktadır.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
/* Includes ------------------------------------------------------------------*/
#include &quot;stm8s.h&quot;
#include &quot;stm8s_clk.h&quot;
#include &quot;stm8s_adc1.h&quot;
#include &quot;stm8s_gpio.h&quot;

/* Private defines -----------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

void main(void)
{
  
  CLK_DeInit();
  CLK_HSECmd(DISABLE);
  CLK_LSICmd(DISABLE);
  CLK_HSICmd(ENABLE);
  while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY) == 0){}
  
  CLK_ClockSwitchCmd(ENABLE);
  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
  CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
  
  GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_IN_FL_NO_IT);
  
  ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS,
            ADC1_CHANNEL_3,
            ADC1_PRESSEL_FCPU_D2,
            ADC1_EXTTRIG_TIM,
            DISABLE,
            ADC1_ALIGN_RIGHT,
            ADC1_SCHMITTTRIG_CHANNEL3,
            DISABLE);
  ADC1_ITConfig(ADC1_IT_EOCIE,ENABLE);
  
  enableInterrupts();
  
  ADC1_StartConversion();  
  
  while (1)
  {
  
  
  
  }
  
}

#ifdef USE_FULL_ASSERT

/**
  * @brief  Reports the name of the source file and the source line number
  *   where the assert_param error has occurred.
  * @param file: pointer to the source file name
  * @param line: assert_param error line source number
  * @retval : None
  */
void assert_failed(u8* file, u32 line)
{ 
  /* User can add his own implementation to report the file name and line number,
     ex: printf(&quot;Wrong parameters value: file %s on line %d\r\n&quot;, file, line) */

  /* Infinite loop */
  while (1)
  {
  }
}
#endif


/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
</pre></div>


<p>Ayrıca dosyayı <a href="https://bit.ly/3cUeETk" target="_blank" rel="noreferrer noopener">buradan</a> indirebilirsiniz.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="STM8 Programlama -IAR- #10 ADC (Analog Digital Converter) STM8S103F3" width="1200" height="675" src="https://www.youtube.com/embed/tW_4h6o-cN4?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<p></p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-10-adc-analog-digital-converter-stm8s103f3/">STM8 Programlama -IAR- #10 (ADC)  (Analog Digital Converter) STM8S103F3</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://n7atechnic.com.tr/stm8-programlama-iar-10-adc-analog-digital-converter-stm8s103f3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>STM8 Programlama -IAR- #8 (BEEPER)</title>
		<link>https://n7atechnic.com.tr/stm8-programlama-iar-8-beeper/</link>
					<comments>https://n7atechnic.com.tr/stm8-programlama-iar-8-beeper/#respond</comments>
		
		<dc:creator><![CDATA[N7A Tech]]></dc:creator>
		<pubDate>Mon, 27 Apr 2020 14:28:23 +0000</pubDate>
				<category><![CDATA[STM8]]></category>
		<category><![CDATA[Tüm Yazılar]]></category>
		<guid isPermaLink="false">https://n7a.web.tr/?p=2682</guid>

					<description><![CDATA[<p>Bir önceki konumuz GPIO olduğuna göre şimdi beeplemeye başlayabiliriz :).MCU ile tanışırken de değindiğim beep birimini kullanarak devresiz buzzer çalıştıracağız. STM8S103 MCU&#8217;nun PD4 pinindeki birim bizim<span class="excerpt-hellip"> […]</span></p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-8-beeper/">STM8 Programlama -IAR- #8 (BEEPER)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="has-normal-font-size">Bir önceki konumuz GPIO olduğuna göre şimdi beeplemeye başlayabiliriz :).<br>MCU ile tanışırken de değindiğim beep birimini kullanarak devresiz buzzer çalıştıracağız. STM8S103 MCU&#8217;nun PD4 pinindeki birim bizim için 1KHz, 2KHz ve 4KHz değerlerinde sabit frekans çıkışı sağlar. Bizde ilgili Registerları kullanarak düdüğümüzü öttürürüz 🙂</p>



<p class="has-normal-font-size">Peki işin arka tarafında neler oluyor?<br>Öncelikle Beep blok diyagramını inceleyelim.<br></p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" src="https://n7a.web.tr/wp-content/uploads/2020/04/image-19.png" alt="" class="wp-image-2683"/><figcaption>Beep Block Diagram</figcaption></figure></div>



<p class="has-normal-font-size">Görüldüğü gibi BEEP birimi osilatör kaynağı olarak iki seçenek kabul eder. Bunlardan birisi HSE diğeri ise LSI. Ne olacaktı yani harici kristal osilatör kullanmıyorsak düdük öttüremeyecekmiydik. Elbette öttürürüz. Bunun için LSI RC osilatör kaynağını kullanacağız. Reference Manuel LSI osilatör kaynağı kullanılacaksa düzgün bir frekans elde etmek için LSI kaynağının ölçülerek kalibre edilmesini tavsiye eder. Sebebi ise LSI 128KHz osilatör kaynağının çalışma sıcaklığı limitleri dahilinde çıkış frekansının +/-12,5% tölerans ile değişiklik gösterebilmesidir. Bu kalibre işlemi için kütüphanede var olan BEEP_LSICalibrationConfig fonksiyonunun içerisine harici olarak LSIMeasurment() fonksiyonunu kendimiz ekleyeceğiz ve iç içe döngü ile kalibrasyon olayını halletmiş olacağız. Aşağıda ekleyeceğimiz fonksiyonu paylaşacağım.<br>Değinmek istediğim bir diğer konu ise kalibrasyon işlemi sırasında bir TIMER kullanılıyor. Bunun ayrıntılarına bilmemize gerek yok fonksiyon olayı kendisi hallediyor fakat genede bunu bilmekte fayda var. Fonksiyon içerisinde kullanılan MCU&#8217;ya göre gerekli TIMER birimini aktif ediyor(STM8S103 için TIMER1) ve gerekli ölçümü yaptıktan sonra ilgili TIMER devre dışı bırakılıyor. Hangi TIMER&#8217;ı kullandığı hususuna uygulama videosunda değineceğim.<br>Dolayısıyla ileride projelerde TIMER1 ve Beep kullanacaksak LSI osilatör kaynağını kalibre ettikten sonra TIMER1&#8217;i kurma konusuna dikkat etmeliyiz. Kafaları fazla karıştırmadım umarım&#8230;.<br>Kalibrasyon işleminden sonra kullanacağımız frekansı seçerek BEEPEN bitini SET ederek sinyal çıkışını elde ediyoruz.</p>



<p class="has-normal-font-size">Şimdi kütüphanedeki kodları inceleyelim.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
#include "stm8s_beep.h"
</pre></div>


<p class="has-normal-font-size">ile kütüphaneyi dahil ettik.<br>Kullanacağımız osilatör kaynağına ek olarak CLK_LSICmd() fonksiyonunuda ENABLE ettik.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
void BEEP_DeInit(void)
</pre></div>


<p class="has-normal-font-size">Fonksiyonunu resetleme işlemi için kullanıyoruz.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
void BEEP_Init(BEEP_Frequency_TypeDef BEEP_Frequency)
</pre></div>


<p class="has-normal-font-size">Fonksiyonu ile kullanacağımız frekansı aşağıdaki parametreleri kullanarak seçiyoruz.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
typedef enum {
  BEEP_FREQUENCY_1KHZ = (uint8_t)0x00,  /*!&lt; Beep signal output frequency equals to 1 KHz */
  BEEP_FREQUENCY_2KHZ = (uint8_t)0x40,  /*!&lt; Beep signal output frequency equals to 2 KHz */
  BEEP_FREQUENCY_4KHZ = (uint8_t)0x80   /*!&lt; Beep signal output frequency equals to 4 KHz */
} BEEP_Frequency_TypeDef;
</pre></div>

<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
void BEEP_LSICalibrationConfig(uint32_t LSIFreqHz)
</pre></div>


<p class="has-normal-font-size">Fonksiyonu LSI kaynağını kalibre için 32 bitlik tam sayı girilmesini ister. Bizim ekleme yapacağımız LSIMeasurment() fonksiyonu bu 32 bitlik parametrenin yerine gelecektir.</p>



<pre class="EnlighterJSRAW" data-enlighter-language="c" data-enlighter-theme="" data-enlighter-highlight="" data-enlighter-linenumbers="" data-enlighter-lineoffset="" data-enlighter-title="" data-enlighter-group="">/**
  * @brief  Measure the LSI frequency using timer IC1 and update the calibration registers.
  * @note   It is recommended to use a timer clock frequency of at least 10MHz in order 
	*         to obtain a better in the LSI frequency measurement.
  * @param  None
  * @retval None
  */
uint32_t LSIMeasurment(void)
{

  uint32_t lsi_freq_hz = 0x0;
  uint32_t fmaster = 0x0;
  uint16_t ICValue1 = 0x0;
  uint16_t ICValue2 = 0x0;

  /* Get master frequency */
  fmaster = CLK_GetClockFreq();

  /* Enable the LSI measurement: LSI clock connected to timer Input Capture 1 */
  AWU->CSR |= AWU_CSR_MSR;

#if defined (STM8S903) || defined (STM8S103) || defined (STM8S003) || defined (STM8S001)
  /* Measure the LSI frequency with TIMER Input Capture 1 */
  
  /* Capture only every 8 events!!! */
  /* Enable capture of TI1 */
	TIM1_ICInit(TIM1_CHANNEL_1, TIM1_ICPOLARITY_RISING, TIM1_ICSELECTION_DIRECTTI, TIM1_ICPSC_DIV8, 0);
	
  /* Enable TIM1 */
  TIM1_Cmd(ENABLE);
  
  /* wait a capture on cc1 */
  while((TIM1->SR1 &amp; TIM1_FLAG_CC1) != TIM1_FLAG_CC1);
  /* Get CCR1 value*/
  ICValue1 = TIM1_GetCapture1();
  TIM1_ClearFlag(TIM1_FLAG_CC1);
  
  /* wait a capture on cc1 */
  while((TIM1->SR1 &amp; TIM1_FLAG_CC1) != TIM1_FLAG_CC1);
  /* Get CCR1 value*/
  ICValue2 = TIM1_GetCapture1();
  TIM1_ClearFlag(TIM1_FLAG_CC1);
  
  /* Disable IC1 input capture */
  TIM1->CCER1 &amp;= (uint8_t)(~TIM1_CCER1_CC1E);
  /* Disable timer2 */
  TIM1_Cmd(DISABLE);
  
#else  
  /* Measure the LSI frequency with TIMER Input Capture 1 */
  
  /* Capture only every 8 events!!! */
  /* Enable capture of TI1 */
  TIM3_ICInit(TIM3_CHANNEL_1, TIM3_ICPOLARITY_RISING, TIM3_ICSELECTION_DIRECTTI, TIM3_ICPSC_DIV8, 0);

  /* Enable TIM3 */
  TIM3_Cmd(ENABLE);

	/* wait a capture on cc1 */
  while ((TIM3->SR1 &amp; TIM3_FLAG_CC1) != TIM3_FLAG_CC1);
	/* Get CCR1 value*/
  ICValue1 = TIM3_GetCapture1();
  TIM3_ClearFlag(TIM3_FLAG_CC1);

  /* wait a capture on cc1 */
  while ((TIM3->SR1 &amp; TIM3_FLAG_CC1) != TIM3_FLAG_CC1);
    /* Get CCR1 value*/
  ICValue2 = TIM3_GetCapture1();
	TIM3_ClearFlag(TIM3_FLAG_CC1);

  /* Disable IC1 input capture */
  TIM3->CCER1 &amp;= (uint8_t)(~TIM3_CCER1_CC1E);
  /* Disable timer3 */
  TIM3_Cmd(DISABLE);
#endif /* (STM8S903) || (STM8S103) || (STM8S003) || (STM8S001) */

  /* Compute LSI clock frequency */
  lsi_freq_hz = (8 * fmaster) / (ICValue2 - ICValue1);
  
  /* Disable the LSI measurement: LSI clock disconnected from timer Input Capture 1 */
  AWU->CSR &amp;= (uint8_t)(~AWU_CSR_MSR);

 return (lsi_freq_hz);
}</pre>



<p>Buradan sonra kullandığımız buzzerın datasheetine göre kullanadığımız frekansı seçmek. Benim uygulama kullanacağım buzzer için bilgiler şu şekilde.</p>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" src="https://n7a.web.tr/wp-content/uploads/2020/04/image-20.png" alt="" class="wp-image-2685"/></figure></div>



<p>Ayrıca dosyayı <a href="https://bit.ly/3cUeETk" target="_blank" rel="noreferrer noopener">buradan</a> indirebilirsiniz.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
/**
  ******************************************************************************
  * @file    Project/main.c 
  * @author  N7A TECHNIC
  * @brief   Main program body
   ******************************************************************************
  *        www.n7a.web.tr
  ******************************************************************************
  */ 
/*
PD4-&gt;Devresiz Buzzer
PD5-&gt;Devreli Buzzer
PD3-&gt;1KHz Butonu
PD2-&gt;2KHz Butonu
PD1-&gt;4KHz Butonu
PC7-&gt;Devreli Buzzer Butonu
*/
/* Includes ------------------------------------------------------------------*/
#include &quot;stm8s.h&quot;
#include &quot;stm8s_clk.h&quot;
#include &quot;stm8s_gpio.h&quot;
#include &quot;stm8s_beep.h&quot;
/* Private defines -----------------------------------------------------------*/
#define beepOut GPIOD,GPIO_PIN_4
#define dBuzzerOut GPIOD,GPIO_PIN_5
#define b1KHz GPIOD,GPIO_PIN_3
#define b2KHz GPIOD,GPIO_PIN_2
#define b4KHz GPIOD,GPIO_PIN_1
#define bDevBuzzer GPIOC,GPIO_PIN_7
#define LED GPIOB,GPIO_PIN_5
/* Private function prototypes -----------------------------------------------*/
uint32_t LSIMeasurment(void);
/* Private functions ---------------------------------------------------------*/
void main(void)
{
  /* Infinite loop */
  CLK_DeInit();
  CLK_HSECmd(DISABLE);
  CLK_LSICmd(ENABLE);
  CLK_HSICmd(ENABLE);
  while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY)==0);
  CLK_ClockSwitchCmd(ENABLE);
  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
  CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
  
  GPIO_Init(dBuzzerOut,GPIO_MODE_OUT_PP_LOW_FAST);
  GPIO_Init(b1KHz,GPIO_MODE_IN_PU_NO_IT);
  GPIO_Init(b2KHz,GPIO_MODE_IN_PU_NO_IT);
  GPIO_Init(b4KHz,GPIO_MODE_IN_PU_NO_IT);
  GPIO_Init(bDevBuzzer,GPIO_MODE_IN_PU_NO_IT);
  GPIO_Init(LED,GPIO_MODE_OUT_OD_HIZ_FAST);
  
  BEEP_DeInit();
  BEEP_LSICalibrationConfig(LSIMeasurment());
  BEEP_Cmd(DISABLE);
  while (1)
  {
    if(GPIO_ReadInputPin(b1KHz)==0)
    {
      GPIO_WriteLow(dBuzzerOut);
      BEEP_Init(BEEP_FREQUENCY_1KHZ);
      BEEP_Cmd(ENABLE);
      GPIO_WriteLow(LED);
    }
    else
    {
      if(GPIO_ReadInputPin(b2KHz)==0)
      {
        GPIO_WriteLow(dBuzzerOut);
        BEEP_Init(BEEP_FREQUENCY_2KHZ);
        BEEP_Cmd(ENABLE);
        GPIO_WriteLow(LED);
      }
      else
      {
        if(GPIO_ReadInputPin(b4KHz)==0)
        {
          GPIO_WriteLow(dBuzzerOut);
          BEEP_Init(BEEP_FREQUENCY_4KHZ);
          BEEP_Cmd(ENABLE);
          GPIO_WriteLow(LED);
        }
        else
        {
          if(GPIO_ReadInputPin(bDevBuzzer)==0)
          {
            BEEP_Cmd(DISABLE);
            GPIO_WriteHigh(dBuzzerOut);
            GPIO_WriteLow(LED);
          }
          else
          {
            GPIO_WriteHigh(LED);
          }
        }
      }
    }
  }
}
/**
  * @brief  Measure the LSI frequency using timer IC1 and update the calibration registers.
  * @note   It is recommended to use a timer clock frequency of at least 10MHz in order 
	*         to obtain a better in the LSI frequency measurement.
  * @param  None
  * @retval None
  */
uint32_t LSIMeasurment(void)
{
  uint32_t lsi_freq_hz = 0x0;
  uint32_t fmaster = 0x0;
  uint16_t ICValue1 = 0x0;
  uint16_t ICValue2 = 0x0;
  /* Get master frequency */
  fmaster = CLK_GetClockFreq();
  /* Enable the LSI measurement: LSI clock connected to timer Input Capture 1 */
  AWU-&gt;CSR |= AWU_CSR_MSR;
#if defined (STM8S903) || defined (STM8S103) || defined (STM8S003) || defined (STM8S001)
  /* Measure the LSI frequency with TIMER Input Capture 1 */
  
  /* Capture only every 8 events!!! */
  /* Enable capture of TI1 */
	TIM1_ICInit(TIM1_CHANNEL_1, TIM1_ICPOLARITY_RISING, TIM1_ICSELECTION_DIRECTTI, TIM1_ICPSC_DIV8, 0);
	
  /* Enable TIM1 */
  TIM1_Cmd(ENABLE);
  
  /* wait a capture on cc1 */
  while((TIM1-&gt;SR1 &amp; TIM1_FLAG_CC1) != TIM1_FLAG_CC1);
  /* Get CCR1 value*/
  ICValue1 = TIM1_GetCapture1();
  TIM1_ClearFlag(TIM1_FLAG_CC1);
  
  /* wait a capture on cc1 */
  while((TIM1-&gt;SR1 &amp; TIM1_FLAG_CC1) != TIM1_FLAG_CC1);
  /* Get CCR1 value*/
  ICValue2 = TIM1_GetCapture1();
  TIM1_ClearFlag(TIM1_FLAG_CC1);
  
  /* Disable IC1 input capture */
  TIM1-&gt;CCER1 &amp;= (uint8_t)(~TIM1_CCER1_CC1E);
  /* Disable timer2 */
  TIM1_Cmd(DISABLE);
  
#else  
  /* Measure the LSI frequency with TIMER Input Capture 1 */
  
  /* Capture only every 8 events!!! */
  /* Enable capture of TI1 */
  TIM3_ICInit(TIM3_CHANNEL_1, TIM3_ICPOLARITY_RISING, TIM3_ICSELECTION_DIRECTTI, TIM3_ICPSC_DIV8, 0);
  /* Enable TIM3 */
  TIM3_Cmd(ENABLE);
	/* wait a capture on cc1 */
  while ((TIM3-&gt;SR1 &amp; TIM3_FLAG_CC1) != TIM3_FLAG_CC1);
	/* Get CCR1 value*/
  ICValue1 = TIM3_GetCapture1();
  TIM3_ClearFlag(TIM3_FLAG_CC1);
  /* wait a capture on cc1 */
  while ((TIM3-&gt;SR1 &amp; TIM3_FLAG_CC1) != TIM3_FLAG_CC1);
    /* Get CCR1 value*/
  ICValue2 = TIM3_GetCapture1();
	TIM3_ClearFlag(TIM3_FLAG_CC1);
  /* Disable IC1 input capture */
  TIM3-&gt;CCER1 &amp;= (uint8_t)(~TIM3_CCER1_CC1E);
  /* Disable timer3 */
  TIM3_Cmd(DISABLE);
#endif /* (STM8S903) || (STM8S103) || (STM8S003) || (STM8S001) */
  /* Compute LSI clock frequency */
  lsi_freq_hz = (8 * fmaster) / (ICValue2 - ICValue1);
  
  /* Disable the LSI measurement: LSI clock disconnected from timer Input Capture 1 */
  AWU-&gt;CSR &amp;= (uint8_t)(~AWU_CSR_MSR);
 return (lsi_freq_hz);
}
#ifdef USE_FULL_ASSERT
/**
  * @brief  Reports the name of the source file and the source line number
  *   where the assert_param error has occurred.
  * @param file: pointer to the source file name
  * @param line: assert_param error line source number
  * @retval : None
  */
void assert_failed(u8* file, u32 line)
{ 
  /* User can add his own implementation to report the file name and line number,
     ex: printf(&quot;Wrong parameters value: file %s on line %d\r\n&quot;, file, line) */
  /* Infinite loop */
  while (1)
  {
  }
}
#endif
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

</pre></div>


<p></p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-8-beeper/">STM8 Programlama -IAR- #8 (BEEPER)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://n7atechnic.com.tr/stm8-programlama-iar-8-beeper/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>STM8 Programlama -IAR- #7 (GPIO-OD,PP,Float,WPU)</title>
		<link>https://n7atechnic.com.tr/stm8-programlama-iar-7-gpio-input-output/</link>
					<comments>https://n7atechnic.com.tr/stm8-programlama-iar-7-gpio-input-output/#respond</comments>
		
		<dc:creator><![CDATA[N7A Tech]]></dc:creator>
		<pubDate>Fri, 24 Apr 2020 13:16:51 +0000</pubDate>
				<category><![CDATA[STM8]]></category>
		<category><![CDATA[Tüm Yazılar]]></category>
		<guid isPermaLink="false">https://n7a.web.tr/?p=2598</guid>

					<description><![CDATA[<p>Uygulama yapma ve kod yazmaya başlamak konusunda geç kaldığımızın farkındayım fakat konuları iyice kavrayıp kafada soru işareti bırakmak istemiyorum. Bu yüzden olayı sindire sindire gidip, oldu<span class="excerpt-hellip"> […]</span></p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-7-gpio-input-output/">STM8 Programlama -IAR- #7 (GPIO-OD,PP,Float,WPU)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="has-normal-font-size">Uygulama yapma ve kod yazmaya başlamak konusunda geç kaldığımızın farkındayım fakat konuları iyice kavrayıp kafada soru işareti bırakmak istemiyorum. Bu yüzden olayı sindire sindire gidip, oldu bittiye getirmemeye çalışıyorum. Bu yazımızda GPIO&#8217;nun I/O durumları özelliklerine değineceğiz.</p>



<p class="has-normal-font-size">GPIO General-Purpose Input/Output türkçesi Genel Amaçlı Giriş/Çıkış kontrol edilebilir dijital sinyal pinleridir. Bu pinleri giriş ve çıkış olmak üzere iki durum için ayarlayarak kullanabiliriz. </p>



<p class="has-normal-font-size">Output için 2 pin konfigürasyonu mevcuttur bunlar;</p>



<ul class="wp-block-list"><li>OD Open Drain</li><li>PP Push-Pull</li><li>PB4 ve PB5 Pini için True Open-Drain</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" src="https://n7a.web.tr/wp-content/uploads/2020/04/image-18.png" alt="" class="wp-image-2671"/><figcaption>GPIO Block Diagram</figcaption></figure></div>



<p class="has-normal-font-size">Yukarıda GPIO Blok Diyagramı bulunmakta. Diyagramdaki kesik çizgili alanın içerisi GPIO pininin iç taraftaki bağlantı şeklini göstermektedir. OD,PP ve T (True Open-Drain) durumlarını açıklayalım;</p>



<ul class="wp-block-list"><li><strong>OD (Open Drain)</strong> ve <strong>T (True Open-Drain)</strong>: pini OD olarak seçecek olursak pin alt taraftaki mosfetin drain ucuna bağlı olacak ve yukarıdaki mosfet devre dışı bırakılacaktır. Aslında yukarıdaki mosfet var fakat sanal olarak yoktur. <br>True Open-Drainde ise üst taraftaki mosfet ve Pull-Ip direnci gerçekten yoktur. Dolayısıyla bu (T) pinlerinde Push-Pull ve Pull-Up seçenekleri seçilse bile fiziki olarak orada o malzemeler olmadığı için isteğimiz gerçekleşmeyecek (T) pinleri diğer GPIO pinleri gibi çalışmayacaktır. Her iki durumda da yük pine seri bağlanmalıdır. Bir LED çalıştıracağımızı var sayalım, pinin katodunu pine anodunu direnç ile + beslemeye bağlamalıyız. Yeterince açıklayıcı olduğu düşünerek PP&#8217;ye geçiyorum.</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" src="https://n7a.web.tr/wp-content/uploads/2020/04/image-15.png" alt="" class="wp-image-2602"/></figure></div>



<ul class="wp-block-list"><li><strong>PP (Push-Pull)</strong>: Bu seçenekte ise pin çıkışı her iki mosfetin arasına bağlıdır. Dolayısıyla pinden Lojik 1 ve Lojik 0 sinyalini doğrudan alabiliriz. PP&#8217;u da aşağıdaki resim gibi düşünebiliriz.</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" src="https://n7a.web.tr/wp-content/uploads/2020/04/image-16.png" alt="" class="wp-image-2603"/></figure></div>



<p class="has-normal-font-size">Input için 2 pin konfigürasyonu mevcuttur bunlar;</p>



<ul class="wp-block-list"><li>Floating</li><li>WPU (Wake Pul-Up)</li></ul>



<p class="has-normal-font-size">Pin input olarak kullanılacaksa blok diyagramdaki iki mosfet pasif konuma geçer ve pin doğrudan IDR(Input Data Register)&#8217;a gider. Aslında schmitt trigger&#8217;dan geçer fakat pin analog giriş olarak kullanılacağında schmitt trigger devreye alınabilir.</p>



<ul class="wp-block-list"><li>Floating : İlgili pin float olarak konfigüre edilirse giriş sinyali doğrudan IDR&#8217;ye ulaşır. Bu durum daha pin analog giriş olarak kullanılacaksa ve girişin kararlı olduğu durumlarda kullanılır. <br>Mesela ilgili pin bir entegre ile haberleşiyor olsun. Entegre çıkışı için iki durum olduğu için (Lojik 0 veya Lojik 1) bu pini float olarak kullanmakta bir sakınca yoktur.</li><li>WPU :İlgili pinde blok diyagramda görünen pull-up direnci aktif edilir. Buda girişten okuyacağımız durumlar arasında kararsızlık varsa pini boşta bırakmamış olur.<br>Mesela girişe bir buton bağlıysa bu seçenek kullanıldığında herhangi bir pul up direncine gerek kalmadan butonu pin ve GND arasına bağlayabiliriz.<br><br>Ayrıca Giriş için ilgili pinde özellik mevut ise External Interrupt kullanmak mümkündür. Ext.Interruptı kısaca şöyle bilelim: İlgili pinde bu özellik aktif edilirse pinin lojik seviye değişim anlarında program stm8s_it.c dosyasındaki ilgili rutine yönlenir ve ilgili kodları işleyip ana döngüde kaldığı yerden devam eder.</li></ul>



<p class="has-normal-font-size">Evet Çıkış durumlarını anladığımıza göre artık kod kısmına geçebiliriz.<br>Her zamanki gibi ilgili kütüphaneyi dahil etmeliyiz.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
#include &quot;stm8s_gpio.h&quot;
</pre></div>


<p class="has-normal-font-size">Dahil ettikten sonra kullanacağımız portu GPIO_DeInit(GPIOx); fonksiyonu ile sıfırlayalım. GPIOx parametresinde x yerine MCU&#8217;da var olan herhangi bir port ismi olabilir bunlar; GPIOA,GPIOB,GPIOC,GPIOD.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
GPIO_DeInit(GPIOA);
</pre></div>


<p class="has-normal-font-size">Şimdi GPIO_Init(); fonksiyonu ve parametrelerini inceleyelim.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin, GPIO_Mode_TypeDef GPIO_Mode);
// I.Parametre Değerleri GPIO_TypeDef* (GPIOx)
GPIOA
GPIOB
GPIOC
GPIOD

// II.Parametre Değerleri GPIO_Pin_TypeDef (GPIO_Pin)
GPIO_PIN_0 = ((uint8_t)0x01), /*!&lt; Pin 0 selected */
GPIO_PIN_1 = ((uint8_t)0x02), /*!&lt; Pin 1 selected */
GPIO_PIN_2 = ((uint8_t)0x04), /*!&lt; Pin 2 selected */
GPIO_PIN_3 = ((uint8_t)0x08), /*!&lt; Pin 3 selected */
GPIO_PIN_4 = ((uint8_t)0x10), /*!&lt; Pin 4 selected */
GPIO_PIN_5 = ((uint8_t)0x20), /*!&lt; Pin 5 selected */
GPIO_PIN_6 = ((uint8_t)0x40), /*!&lt; Pin 6 selected */
GPIO_PIN_7 = ((uint8_t)0x80), /*!&lt; Pin 7 selected */
GPIO_PIN_LNIB = ((uint8_t)0x0F), /*!&lt; Low nibble pins selected */
GPIO_PIN_HNIB = ((uint8_t)0xF0), /*!&lt; High nibble pins selected */
GPIO_PIN_ALL = ((uint8_t)0xFF) /*!&lt; All pins selected */

// III.Parametre Değerleri GPIO_Mode_TypeDef; (GPIO_Mode)
GPIO_MODE_IN_FL_NO_IT      = (uint8_t)0x00,  /*!&lt; Input floating, no external interrupt */
GPIO_MODE_IN_PU_NO_IT      = (uint8_t)0x40,  /*!&lt; Input pull-up, no external interrupt */
GPIO_MODE_IN_FL_IT         = (uint8_t)0x20,  /*!&lt; Input floating, external interrupt */
GPIO_MODE_IN_PU_IT         = (uint8_t)0x60,  /*!&lt; Input pull-up, external interrupt */
GPIO_MODE_OUT_OD_LOW_FAST  = (uint8_t)0xA0,  /*!&lt; Output open-drain, low level, 10MHz */
GPIO_MODE_OUT_PP_LOW_FAST  = (uint8_t)0xE0,  /*!&lt; Output push-pull, low level, 10MHz */
GPIO_MODE_OUT_OD_LOW_SLOW  = (uint8_t)0x80,  /*!&lt; Output open-drain, low level, 2MHz */
GPIO_MODE_OUT_PP_LOW_SLOW  = (uint8_t)0xC0,  /*!&lt; Output push-pull, low level, 2MHz */
GPIO_MODE_OUT_OD_HIZ_FAST  = (uint8_t)0xB0,  /*!&lt; Output open-drain, high-impedance level,10MHz */
GPIO_MODE_OUT_PP_HIGH_FAST = (uint8_t)0xF0,  /*!&lt; Output push-pull, high level, 10MHz */
GPIO_MODE_OUT_OD_HIZ_SLOW  = (uint8_t)0x90,  /*!&lt; Output open-drain, high-impedance level, 2MHz */
GPIO_MODE_OUT_PP_HIGH_SLOW = (uint8_t)0xD0   /*!&lt; Output push-pull, high level, 2MHz */
}GPIO_Mode_TypeDef;
</pre></div>


<p class="has-normal-font-size">II. parametre değerlerinden GPIO_PIN_LNIB, GPIO_PIN_0&#8230;&#8230;_1&#8230;&#8230;_2&#8230;&#8230;_3 pinlerini GPIO_PIN_HNIB, GPIO_PIN_4&#8230;&#8230;_5&#8230;&#8230;_6&#8230;&#8230;_7 pinlerini, GPIO_PIN_ALL ise bütün pinleri seçeceğini söylemektedir.<br>III. parametrede dikkat etmemiz gerken bir durum SLOW ve FAST durumudur. Her pin bu özelliği taşımayabilir. Bu bilgiye datasheetden pin descriptions sayfasından ulaşılabilir. Sayfada Speed sütunu altında O1,O2&#8230;.. gibi işaretler ilgili pinin hangi frekansa kadar çalışma sağlayabildiği hakkında geniş bilgiler vermektedir.<br>Diğer mikrodenetleyicelerde sıkça rastlanılmayan bir durum ise HIZ özelliğidir. Bu özellik ile pin yüksek empens konumuna alınır. Yerine göre oldukça kullanışlı olabiliyor.</p>



<p class="has-normal-font-size">Şimdi gpio kütüphanesindeki Output olarak seçtiğimiz pinler için kullanabileceğimiz fonksiyonlara göz atalım.</p>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow"><div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
void GPIO_Write(GPIO_TypeDef* GPIOx, uint8_t PortVal);
</pre></div></div></div>



<div class="wp-block-group"><div class="wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow">
<p class="has-normal-font-size">Parametrelerden GPIOx GPIO portunu PortVal ise 8 bit değer olarak girilmesi gerekir. <br>PIC için CCS&#8217;de kod yazanlarımız varsa hatırlayacaktır; <em>output_b</em>(<em>0b00000001);</em> komutu ile B0 pini SET edilirdi. Burada da aynı durum söz konusu tek fark binary sayı sisteminde değilde hexadecimal sayı sistemiyle yazmamız gerekiyor. Mesela PortVal parametresini 0xFF olarak yazarsakbütün pinler Lojik 1 olacaktır.</p>
</div></div>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
void GPIO_WriteHigh(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins);
void GPIO_WriteLow(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins);
void GPIO_WriteReverse(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef PortPins);
</pre></div>


<p></p>



<p class="has-normal-font-size">PortPins yerine GPIO_PIN_0&#8230;&#8230;&#8230;..GPIO_PIN_7 parametrelerinden birisi gelmelidir.</p>



<p class="has-text-color has-normal-font-size has-very-dark-gray-color">Şimdi de gpio kütüphanesindeki Input olarak seçtiğimiz pinler için kullanabileceğimiz fonksiyonlara göz atalım.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
uint8_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx);
uint8_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx);
BitStatus GPIO_ReadInputPin(GPIO_TypeDef* GPIOx, GPIO_Pin_TypeDef GPIO_Pin);
</pre></div>


<p class="has-text-color has-normal-font-size has-very-dark-gray-color">GPIO_ReadInputData : GPIO giriş portunun tamamının verisini unsigned int değerinde geri döndüren foksiyon. Mesela mikrodenetleyicimizin A portunun tamamına giriş olarak seçili olsun(Zaten STM8S103F3&#8217;de A portuna ait 3 pin bulunmakta; PA1,PA2,PA3). Girişlerin tamamının Lojik 1 olduğunu varsayarsak GPIO_ReadInputData(GPIOA); fonksiyonu bize Hex Sayı sisteminde 0x0E değerini döndürecektir.<br>GPIO_ReadOutputData : Çıkışın Lojik seviye durumunu gösteren fonksiyon.<br>GPIO_ReadInputPin : Pinin okuma işlemini pin bazında geri döndüren fonksiyondur.</p>



<p>Aşağıdaki kod ile buton ile LED kontrol kodları bulunmaktadır. Kodların olduğu proje dosyasını <a href="https://bit.ly/2Y2aUed" target="_blank" rel="noreferrer noopener">buradan</a> indirebilirsiniz. Umarım Faydalı olumuştur. Bir sonraki yazımızda görüşmek ümidiyle&#8230; Hoşçakalın.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
/**
  ******************************************************************************
  * @file    Project/main.c 
  * @author  N7A TECHNIC
  * @brief   Main program body
   ******************************************************************************
  *        www.n7a.web.tr
  ******************************************************************************
  */ 


/* Includes ------------------------------------------------------------------*/
#include &quot;stm8s.h&quot;
#include &quot;stm8s_clk.h&quot;
#include &quot;stm8s_gpio.h&quot;
/* Private defines -----------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
void delay(uint32_t x);
/* Private functions ---------------------------------------------------------*/

void main(void)
{
  /* Infinite loop */

  CLK_DeInit();
  CLK_HSECmd(DISABLE);
  CLK_LSICmd(DISABLE);
  CLK_HSICmd(ENABLE);
  while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY)==0);
  
  CLK_ClockSwitchCmd(ENABLE);
  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV4);
  CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
  
  GPIO_Init(GPIOB,GPIO_PIN_5,GPIO_MODE_OUT_OD_HIZ_FAST);
  GPIO_Init(GPIOD,GPIO_PIN_4,GPIO_MODE_OUT_PP_LOW_FAST);
  GPIO_Init(GPIOD,GPIO_PIN_5,GPIO_MODE_OUT_PP_LOW_FAST);
  
  GPIO_Init(GPIOA,GPIO_PIN_1,GPIO_MODE_IN_PU_NO_IT);
  while (1)
  {
    if(GPIO_ReadInputPin(GPIOA,GPIO_PIN_1) == 0)
    {
      GPIO_WriteHigh(GPIOD,GPIO_PIN_4);
      GPIO_WriteHigh(GPIOD,GPIO_PIN_5);
      GPIO_WriteLow(GPIOB,GPIO_PIN_5);
    }
    else
    {
      GPIO_WriteLow(GPIOD,GPIO_PIN_4);
      GPIO_WriteLow(GPIOD,GPIO_PIN_5);
      GPIO_WriteHigh(GPIOB,GPIO_PIN_5);
    }
  }
  
}

void delay(uint32_t x)
{
  while(x--);
}

#ifdef USE_FULL_ASSERT

/**
  * @brief  Reports the name of the source file and the source line number
  *   where the assert_param error has occurred.
  * @param file: pointer to the source file name
  * @param line: assert_param error line source number
  * @retval : None
  */
void assert_failed(u8* file, u32 line)
{ 
  /* User can add his own implementation to report the file name and line number,
     ex: printf(&quot;Wrong parameters value: file %s on line %d\r\n&quot;, file, line) */

  /* Infinite loop */
  while (1)
  {
  }
}
#endif


/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

</pre></div>


<h2 class="wp-block-heading">Teorik Eğitim:</h2>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe title="STM8 Programlama -IAR- #7 (1-GPIO-OD,PP,WPU,Floating) STM8S103F3" width="1200" height="675" src="https://www.youtube.com/embed/RKa2gSWYGfI?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">Uygulama:</h2>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="STM8 Programlama -IAR- #7 (2-GPIO Uygulama) STM8S103F3" width="1200" height="675" src="https://www.youtube.com/embed/0KQsS7p2xmc?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-7-gpio-input-output/">STM8 Programlama -IAR- #7 (GPIO-OD,PP,Float,WPU)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://n7atechnic.com.tr/stm8-programlama-iar-7-gpio-input-output/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>STM8 Programlama -IAR- #6 (Clock Ayarları)</title>
		<link>https://n7atechnic.com.tr/stm8-programlama-iar-6-clock-ayarlari/</link>
					<comments>https://n7atechnic.com.tr/stm8-programlama-iar-6-clock-ayarlari/#respond</comments>
		
		<dc:creator><![CDATA[N7A Tech]]></dc:creator>
		<pubDate>Thu, 23 Apr 2020 11:33:10 +0000</pubDate>
				<category><![CDATA[STM8]]></category>
		<category><![CDATA[Tüm Yazılar]]></category>
		<category><![CDATA[CLK]]></category>
		<category><![CDATA[CLK_CCO]]></category>
		<category><![CDATA[ClockSource]]></category>
		<category><![CDATA[Gömülü Sistem]]></category>
		<category><![CDATA[High Speed Internal]]></category>
		<category><![CDATA[HSE]]></category>
		<category><![CDATA[HSI]]></category>
		<category><![CDATA[IAR]]></category>
		<category><![CDATA[Low Speed Internal]]></category>
		<category><![CDATA[STLINK]]></category>
		<category><![CDATA[STM Embedded]]></category>
		<category><![CDATA[stm8 clock]]></category>
		<category><![CDATA[STM8 Code]]></category>
		<category><![CDATA[STM8 IAR]]></category>
		<category><![CDATA[STM8 Programing]]></category>
		<category><![CDATA[STM8 Programlama]]></category>
		<category><![CDATA[STM8S]]></category>
		<category><![CDATA[stm8s_clk.h]]></category>
		<category><![CDATA[STM8S103F3]]></category>
		<guid isPermaLink="false">https://n7a.web.tr/?p=2571</guid>

					<description><![CDATA[<p>Merhabalar,Bu yazımızda MCU&#8217;nun clock ayarlarını ayrıntılı bir şekilde inceleyeceğiz. CLK_CCO çıkışını kullanarak lojik analizör ile inceleyeceğiz. ST firmasının STM8 ailesinde aşağıda da görüldüğü gibi esnek clock<span class="excerpt-hellip"> […]</span></p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-6-clock-ayarlari/">STM8 Programlama -IAR- #6 (Clock Ayarları)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="has-normal-font-size">Merhabalar,<br>Bu yazımızda MCU&#8217;nun clock ayarlarını ayrıntılı bir şekilde inceleyeceğiz. CLK_CCO çıkışını kullanarak lojik analizör ile inceleyeceğiz. ST firmasının STM8 ailesinde aşağıda da görüldüğü gibi esnek clock ayarları yapabilmek mümkün. CPU çalışma frekansı ile çevre birimleri çalışma fekanslarını ayrı ayrı ayarlamak mümkün. Osilatör kaynaklarımızı daha önceki yazılarımızda incelemiştik kısaca hatırlaycak olursak <br>&#8211; HSE (High Speed External)<br>&#8211; HSI (High Speed Internal (RC))<br>&#8211; LSI (Low Speed Internal)</p>



<div class="wp-block-image"><figure class="aligncenter"><img decoding="async" src="https://www.mcu-turkey.com/wp-content/uploads/2012/11/ppp1.jpg" alt="MCU Turkey – STM8S – İlk Uygulamalar (Clock ve GPIO Konfigürasyonu)"/></figure></div>



<p class="has-normal-font-size">Mikrodenetleyicinin clock kaynağını (HSI) High-Speed dahili osilatör olarak seçeceğiz. Bu durumda Master Clock Switch  f<sub>HSIDIV</sub> olarak seçilmelidir. Bu kaynağın 4 adet ön bölücü değeri vardır. Bu değerler 16 MHz olan HSI osilatör kaynağını (/8/4/2/1) seçnekleri arasından seçeceğimiz değere böler ve bölünmüş clock f<sub>MASTER</sub> hattına geçiş yapar. Şemadan da görüldüğü gibi TIMER,I2C,SPI,ADC,AWU,CAN,UART çevre birimleri bu hattan doğrudan beslenir. Dolayısıyla HSIDIV ön bölücü değerimizin sonucunda bu çevre birimlerinin clock kaynağının sağlandığını unutmayalım.<br>HSIDIV&#8217;i ayarladıktan sonra  CPUDIV ön bölücü değeri için 8 seçenek mevcut (/1/2/4/8/16/32/64/128). CPUDIV ön bölücü değerine göre ise f<sub>CPU</sub> frekansı belirlenmiş olur.</p>



<p class="has-normal-font-size">Örnek; Osilatör kaynağımız HSI (16MHz) olsun. HSIDIV=/2, CPUDIV=/4 olduğunu varsayalım.<br>O halde f<sub>MASTER</sub>= 16/2 = 8 MHz olacaktır. Buda demek oluyor ki çevre birimlerinin çalışma frekansı ve CPUDIV giriş frekansı 8MHz&#8217;dir.<br><br>f<sub>CPU</sub> = 8/4 = 2MHz olacaktır. Buda mikrodenetleyimizin çekirdeği 2MHz ile koşacağı anlamına gelir. Saniyede 2 milyon işlem yapabilir diyebiliriz.</p>



<p class="has-normal-font-size">Şimdi kod IAR derleyicisi için kodlarımıza geçelim.
Öncelikle main.c dosyamızda stm8s_clk.h kütüphanesini dahil etmeliyiz.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
#include &quot;stm8s_clk.h&quot;
</pre></div>


<p class="has-normal-font-size">Daha sonra kullanacağımız osilatör kaynağını aktif etmeliyiz (HSI).</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
CLK_HSECmd(DISABLE);
CLK_LSICmd(DISABLE);
CLK_HSICmd(ENABLE);
</pre></div>


<p class="has-normal-font-size">Osilatör hazır olana kadar, ilgili osilatörün bayrağı SET olana kadar CLK_GetFlagStatus(); fonksiyonundan aldığımız cevaba göre while dönüsü ile bekleme yapıyoruz. Fonksiyonun parametreleri şu şekildedir;</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
typedef enum {
CLK_FLAG_LSIRDY = (uint16_t)0x0110, /*!&lt; Low speed internal oscillator ready Flag */
CLK_FLAG_HSIRDY = (uint16_t)0x0102, /*!&lt; High speed internal oscillator ready Flag */
CLK_FLAG_HSERDY = (uint16_t)0x0202, /*!&lt; High speed external oscillator ready Flag */
CLK_FLAG_SWIF = (uint16_t)0x0308, /*!&lt; Clock switch interrupt Flag */
CLK_FLAG_SWBSY = (uint16_t)0x0301, /*!&lt; Switch busy Flag */
CLK_FLAG_CSSD = (uint16_t)0x0408, /*!&lt; Clock security system detection Flag */
CLK_FLAG_AUX = (uint16_t)0x0402, /*!&lt; Auxiliary oscillator connected to master clock */
CLK_FLAG_CCOBSY = (uint16_t)0x0504, /*!&lt; Configurable clock output busy */
CLK_FLAG_CCORDY = (uint16_t)0x0502 /*!&lt; Configurable clock output ready */
}CLK_Flag_TypeDef;
</pre></div>


<p class="has-normal-font-size">Osilatör kaynağımız HSI olduğu için CLK_FLAG_HSIRDY seçmeliyiz.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY) == 0);
</pre></div>


<p class="has-normal-font-size">Yukarıda bahsettiğimiz ön bölücü değerlerini ayarlıyoruz. Parametrelerin sonlarındaki rakamı yukarıdaki ilgili değerlerle değiştirerek istediğimiz çalışma frekansını elde edebiliriz.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //fMASTER
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1); //fCPU
</pre></div>


<p class="has-normal-font-size">Clock ayarlarmaları için bir diğer durum ise CLK_ClockSwitchConfig() fonkisyonudur. Bu özellik mikrodenetleyici çalışıyorken clock kaynağını manuel veya otomatik değiştirmeye olanak sağlar. İşlem otomatik olarak seçilir ise; ana osilatörde herhangi bir problem oluşursa seçeceğimiz alternatif osilatör kaynağı devreye alınacak ve istersek ana osilatörü pasif edebileceğiz. Örnek fonksiyon ve parametre açıklamaları;</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO, CLK_SOURCE_HSI,
DISABLE, CLK_CURRENTCLOCKSTATE_ENABLE);
/**
  * CLK_SWITCHMODE_AUTO/_MANUEL : işlemin otomatik veya ellemi seçileceğini
  * CLK_SOURCE_HSI/_LSI/_HSE    : Alterantif olarak seçilecek kaynağı(yedek)
  * DISABLE/ENABLE : Otomatik veya manuel farketmeksizin böyle bir işlem 
  *gerçekleştiğinde kesme oluşmasını istiyorsak ENABLE olması gerekir.
  * CLK_CURRENTCLOCKSTATE_ENABLE/DISABLE : İşlem gerçekleşirse ana kaynağı 
  *pasif konuma getireceksek DISABLE seçmeliyiz.
  */
</pre></div>


<p class="has-normal-font-size">Değinmek istediğim bir diğer nokta ise bu kütüphanedeki CCO (Configurable Clock Output) özelliğidir.   Bu özelliklik ile birlikte mikrodenetleyicinin ilgili pininden (PC4/CLK_CCO) aşağıdaki seçeneklerden istediğimiz clock sinyalini elde edebiliriz. Geliştirdiğimiz sistemde herhangi bir osilatör kaynağına ihtiyaç duymamız halinde bu özelliği kullanabiliriz. Ayrıca ilgili osilatör kaynağı freknasını CCO ile gözlemlemek mümkündür.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
typedef enum {
  CLK_OUTPUT_HSI      = (uint8_t)0x00, /*!&lt; Clock Output HSI */
  CLK_OUTPUT_LSI      = (uint8_t)0x02, /*!&lt; Clock Output LSI */
  CLK_OUTPUT_HSE      = (uint8_t)0x04, /*!&lt; Clock Output HSE */
  CLK_OUTPUT_CPU      = (uint8_t)0x08, /*!&lt; Clock Output CPU */
  CLK_OUTPUT_CPUDIV2  = (uint8_t)0x0A, /*!&lt; Clock Output CPU/2 */
  CLK_OUTPUT_CPUDIV4  = (uint8_t)0x0C, /*!&lt; Clock Output CPU/4 */
  CLK_OUTPUT_CPUDIV8  = (uint8_t)0x0E, /*!&lt; Clock Output CPU/8 */
  CLK_OUTPUT_CPUDIV16 = (uint8_t)0x10, /*!&lt; Clock Output CPU/16 */
  CLK_OUTPUT_CPUDIV32 = (uint8_t)0x12, /*!&lt; Clock Output CPU/32 */
  CLK_OUTPUT_CPUDIV64 = (uint8_t)0x14, /*!&lt; Clock Output CPU/64 */
  CLK_OUTPUT_HSIRC    = (uint8_t)0x16, /*!&lt; Clock Output HSI RC */
  CLK_OUTPUT_MASTER   = (uint8_t)0x18, /*!&lt; Clock Output Master */
  CLK_OUTPUT_OTHERS   = (uint8_t)0x1A  /*!&lt; Clock Output OTHER */
} CLK_Output_TypeDef;
</pre></div>


<p class="has-normal-font-size">CCO&#8217;yu kullanabilmek için ilgili CLK_CCO pin konfigürasyonunu (STM8S103F3 için PC4 pini)  input pull-up veya output push-pull moduna getirmeliyiz (push-pull,pull-up için buraya).</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
CLK_CCOConfig(CLK_OUTPUT_CPU);
CLK_CCOCmd(ENABLE);
</pre></div>


<p class="has-normal-font-size">PC4 pini için gerekli ayarlamayı yaptıktan sonra PC4 pininden CPU çalışma frekansındaki sinyali almış olacağız.</p>



<p class="has-normal-font-size">Konuyu şöyle bir toparlarsak&#8230;.. Yapacağımız uygulamalarda kartımızın üzerinde harici bir kristal osilatör olmadığı için dahili HSI osilatörü kullanacağız. Bu osilatör kaynağı ile ilgili bir ön yargınız/şüpheniz olmasın bu birim gayet sağlıklı çalışmaktadır. Buna göre ilerideki uygulamalarda kullanabileceğimiz bir clock ayarı için kodumuz şöyle olur;</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
CLK_DeInit();	
CLK_HSECmd(DISABLE);
CLK_LSICmd(DISABLE);
CLK_HSICmd(ENABLE);
while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY) == 0);

CLK_ClockSwitchCmd(ENABLE);
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2);
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);

</pre></div>


<p class="has-normal-font-size">Bu kodu void main(void) döngüsünün hemen altına yazarak kullanabiliriz.</p>



<p class="has-normal-font-size">Aşağıda CLK_CCO ya ait uygulamanın kodları bulunmaktadır. Ayrıca proje dosyasını <a href="https://bit.ly/3axTF7h">buradan </a> indirebilirsiniz.</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
/**
  ******************************************************************************
  * @file    Project/main.c 
  * @author  N7A TECHNIC
  * @brief   Main program body
   ******************************************************************************
  *        www.n7a.web.tr
  ******************************************************************************
  */ 

/* Includes ------------------------------------------------------------------*/
#include &quot;stm8s.h&quot;
#include &quot;stm8s_clk.h&quot;
#include &quot;stm8s_gpio.h&quot;

/* Private defines -----------------------------------------------------------*/
/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

void main(void)
{
  /* Infinite loop */
  CLK_DeInit();
  CLK_HSECmd(DISABLE);
  CLK_LSICmd(DISABLE);
  CLK_HSICmd(ENABLE);
  
  while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY)==0);
  
  CLK_ClockSwitchCmd(ENABLE);
  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV4);
  CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV2);
  
  GPIO_Init(GPIOC,GPIO_PIN_4,GPIO_MODE_OUT_PP_LOW_FAST);
  
  CLK_CCOConfig(CLK_OUTPUT_CPU);
  CLK_CCOCmd(ENABLE);
  
  while (1)
  {
  }
}

#ifdef USE_FULL_ASSERT

void assert_failed(u8* file, u32 line)
{ 
  /* User can add his own implementation to report the file name and line number,
     ex: printf(&quot;Wrong parameters value: file %s on line %d\r\n&quot;, file, line) */

  /* Infinite loop */
  while (1)
  {
  }
}
#endif


/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

</pre></div>


<h2 class="wp-block-heading">Teorik Eğitim:</h2>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="STM8 Programlama -IAR- #6 (Clock Ayarları - CLK_CCO)-1 STM8S103F3" width="1200" height="675" src="https://www.youtube.com/embed/PaTP6qRQRRQ?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<h2 class="wp-block-heading">Uygulama:</h2>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="STM8 Programlama -IAR- #6 (CLK_CCO Uygulama)-2 STM8S103F3" width="1200" height="675" src="https://www.youtube.com/embed/r5ZZUG2j3jg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-6-clock-ayarlari/">STM8 Programlama -IAR- #6 (Clock Ayarları)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://n7atechnic.com.tr/stm8-programlama-iar-6-clock-ayarlari/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>STM8 Programlama -IAR- #4 (Mikrodenetleyici ile Tanışıyoruz)</title>
		<link>https://n7atechnic.com.tr/stm8-programlama-iar-4-mikrodenetleyici-ile-tanisiyoruz/</link>
					<comments>https://n7atechnic.com.tr/stm8-programlama-iar-4-mikrodenetleyici-ile-tanisiyoruz/#respond</comments>
		
		<dc:creator><![CDATA[N7A Tech]]></dc:creator>
		<pubDate>Wed, 15 Apr 2020 00:03:54 +0000</pubDate>
				<category><![CDATA[STM8]]></category>
		<category><![CDATA[Tüm Yazılar]]></category>
		<category><![CDATA[Gömülü Sistem]]></category>
		<category><![CDATA[IAR]]></category>
		<category><![CDATA[STLINK]]></category>
		<category><![CDATA[STM Embedded]]></category>
		<category><![CDATA[STM8 Code]]></category>
		<category><![CDATA[STM8 IAR]]></category>
		<category><![CDATA[STM8 Programing]]></category>
		<category><![CDATA[STM8 Programlama]]></category>
		<category><![CDATA[STM8S]]></category>
		<category><![CDATA[STM8S103F3]]></category>
		<guid isPermaLink="false">https://n7a.web.tr/?p=2548</guid>

					<description><![CDATA[<p>Yazılımsal ve donanımsal araçlarımızı tamamladıktan sonra mikrodenetleyici (bundan sonra MCU olarak ifade edeceğim) ile tanışma adımına geçebiliriz. Yazımızda MCU&#8217; yu genel hatlarıyla inceleyeceğiz. Kabaca inceleme yapacağız<span class="excerpt-hellip"> […]</span></p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-4-mikrodenetleyici-ile-tanisiyoruz/">STM8 Programlama -IAR- #4 (Mikrodenetleyici ile Tanışıyoruz)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<p>    Yazılımsal ve donanımsal araçlarımızı tamamladıktan sonra mikrodenetleyici (bundan sonra MCU olarak ifade edeceğim) ile tanışma adımına geçebiliriz. Yazımızda MCU&#8217; yu genel hatlarıyla inceleyeceğiz.<br>   Kabaca inceleme yapacağız anlamadığınız yerler olabilir bunlara yeri gelince yeterince değineceğiz.<br>   İnceleme yapacağımız döküman STM8S103F3&#8242; ün datasheet kaynağı olacaktır. İlgili dökümana <a rel="noreferrer noopener" href="https://www.st.com/resource/en/datasheet/stm8s103f2.pdf" target="_blank">buradan</a> ulaşabilirsiniz.</p>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img decoding="async" src="https://n7a.web.tr/wp-content/uploads/2020/04/image-8.png" alt="" class="wp-image-2549" width="580" height="112"/></figure></div>



<h4 class="wp-block-heading">Özelliklere kısaca madde madde değinelim.</h4>



<ul class="wp-block-list"><li>Çekirdek çalışma frekansı 16 MHz  olan olan MCU &#8216;nun 8KByte Flash belleği ile 640 Byte EEPROM(Electronically Erasable Programmable Read-Only Memory / Verileri kalıcı olarak saklayabildiğimiz depolama alanıdır) depolama alanı bulunuyor.</li><li>RAM(Random Access&nbsp;<strong>Memory</strong>-Rastgele Erişimli Bellek): 1 Kbyte</li><li>2,95 &#8212; 5,5 V çalışma gerilimi.</li><li>Harici kristal osilatör bağlantı seçeneğine ek olarak dahili RC(Resistor-Capacitor) osilatör bulunmaktadır.<br>&gt;1-16 MHz high-speed external crystal (HSE)<br>&gt;16 MHz high-speed internal RC oscillator (HSI)<br>&gt;128 kHz low-speed internal RC (LSI)<br>&gt;1-16 MHz high-speed external crystal (HSE)</li><li>Düşük güç modları (wait, active-halt, halt)</li><li>Çevre birimlerinin clocklarını ayrı ayrı kapatabilmek.</li><li>Toplamda 6 vektörde 27 harici kesme;<br>SPI,UART,ADC,GPIO portları, Timer&#8230;.. gibi çevre birimleri için.</li><li>10 Bit ADC</li><li>Donanımsal UART,SPI,I2C haberlerşme arayüzleri.</li><li>Kullanacağımız MCU&#8217;nun 20 pinden 16&#8217;sı I/O olarak ayarlanabilmekte ve bu pinlerin 12&#8217;si HS(High Sink IO)&#8217;dur (20mA&#8217;e kadar).</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img decoding="async" src="https://n7a.web.tr/wp-content/uploads/2020/04/image-9.png" alt="" class="wp-image-2558" width="462" height="341"/></figure></div>



<ul class="wp-block-list"><li></li></ul>



<h3 class="wp-block-heading">TIMER-Zamanlayıcılar</h3>



<ul class="wp-block-list"><li>Zamanlayıcılar MCU&#8217;nun rutin bekleme işlem yüklerini azaltan yapılardır. 7Segment, PWM,Zaman gibi uygulamalarda kullanılır.</li><li>TIM1 &#8211; 16-bit Gelişmiş Kontrollü Zamanlayıcı</li><li>TIM2 &#8211; 16-bit Genel Amaçlı Zamanlayıcı</li><li>TIM4 &#8211; 8-bit Temel Zamanlayıcı</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large is-resized"><img decoding="async" src="https://n7a.web.tr/wp-content/uploads/2020/04/image-10.png" alt="" class="wp-image-2559" width="487" height="171"/></figure></div>



<ul class="wp-block-list"><li>Şuanlık isimlerini ve tablodaki bilgilere aşina olmak bize fazlasıyla yetecektir.</li></ul>



<h3 class="wp-block-heading">Beeper</h3>



<p>   Sesli ikazlar için içerisinde rezonatör devresi olmayan buzzerları kullanmaya olanak sağlar. Hani şu 5V verince doğrudan öten kulakları tırmalayan buzzerlar varya, heehhhh işte, onların 5V&#8217;a bağlayınca çalışmayanlarını çalıştırmak için kullanıyoruz bu özelliği 🙂 .</p>



<h3 class="wp-block-heading">ADC Analog-to-Digital Converter (ADC1)</h3>



<ul class="wp-block-list"><li>Analog sinyalleri MCU&#8217;nun anlayacağı bilgilere çeviren birimdir. Mesela NTC ile sıcaklık ölçmek istediğimizde kullancağız.</li><li>Giriş gerilim aralığı 0&#8211;&gt;VDD gerilimi kadardır.</li><li>Veriyi 14 clock cycles çevirme zamanı vardır.</li></ul>



<h3 class="wp-block-heading">PINOUT </h3>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" src="https://n7a.web.tr/wp-content/uploads/2020/04/image-11.png" alt="" class="wp-image-2560"/></figure></div>



<ul class="wp-block-list"><li>HS High Sink kabiliyetli pinleri</li><li>(T) True open drain (GPIO bölümünde açıklayacağım.)</li><li>[ ] Alternatif pin seçeneği için kullanılır (remapping option)<br>Bunu IAR&#8217;da MCU&#8217;nun ilgili AFR(Alternate Function Remap) bitlerini değiştirerek sağlayacağız. Olay kısaca şöyle; örnek olarak PD2 pinini alırsak normal pin tanımı AIN3(Analog in ch3)&#8217;tür. Biz bu pini TIM2_CH3 özelliği ile kullanacaksak ilgili AFR bitinin değerini değiştireceğiz.</li><li>MCU çalışabilmesi için Vcap pinine bağlı bir kondansatöre ihtiyaç duyar. Kondansaörün sığa aralığı ise aşağıdaki gibidir.</li></ul>



<div class="wp-block-image"><figure class="aligncenter size-large"><img decoding="async" src="https://n7a.web.tr/wp-content/uploads/2020/04/image-13.png" alt="" class="wp-image-2563"/></figure></div>



<h3 class="wp-block-heading">Memory Map</h3>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img decoding="async" src="https://n7a.web.tr/wp-content/uploads/2020/04/image-12.png" alt="" class="wp-image-2561" width="168" height="472"/></figure></div>



<p>   Burada Hafıza Adreslerinin başlangıç ve bitiş değerleri yazmakta. Mesela EEPROM&#8217;un ilk Byte&#8217;ına veri yazmak için 0x004000 adresini kullanmalıyız.</p>



<p></p>



<p>   Evet mikrodenetleyiciyi genel hatlarıyla tanıdık. Devamında IAR programını inceleyip proje yapısına göz attıktan sonra ilk kodumuzu yazacağız. Bir sonraki yazıda görümek üzere.</p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-4-mikrodenetleyici-ile-tanisiyoruz/">STM8 Programlama -IAR- #4 (Mikrodenetleyici ile Tanışıyoruz)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://n7atechnic.com.tr/stm8-programlama-iar-4-mikrodenetleyici-ile-tanisiyoruz/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>STM8 Programlama -IAR- #3 (Yazılımsal Araçlar)</title>
		<link>https://n7atechnic.com.tr/stm8-programlama-iar-3-yazilimsal-araclar/</link>
					<comments>https://n7atechnic.com.tr/stm8-programlama-iar-3-yazilimsal-araclar/#respond</comments>
		
		<dc:creator><![CDATA[N7A Tech]]></dc:creator>
		<pubDate>Mon, 13 Apr 2020 23:34:03 +0000</pubDate>
				<category><![CDATA[STM8]]></category>
		<category><![CDATA[Tüm Yazılar]]></category>
		<category><![CDATA[Gömülü Sistem]]></category>
		<category><![CDATA[IAR]]></category>
		<category><![CDATA[STLINK]]></category>
		<category><![CDATA[STM Embedded]]></category>
		<category><![CDATA[STM8 Code]]></category>
		<category><![CDATA[STM8 IAR]]></category>
		<category><![CDATA[STM8 Programing]]></category>
		<category><![CDATA[STM8 Programlama]]></category>
		<category><![CDATA[STM8S]]></category>
		<category><![CDATA[STM8S103F3]]></category>
		<guid isPermaLink="false">https://n7a.web.tr/?p=2522</guid>

					<description><![CDATA[<p>STM8 Programlama serisi için kullanacağımız yazılım araçlarına değinerek gerekli açıklamalarla linkleri paylaşacağım. IAR Embedded Workbench Kodlarımızı IAR ile geliştireceğiz. Programın deneme sürümü olarak iki seçeneği mevcut.<span class="excerpt-hellip"> […]</span></p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-3-yazilimsal-araclar/">STM8 Programlama -IAR- #3 (Yazılımsal Araçlar)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<p>STM8 Programlama serisi için kullanacağımız yazılım araçlarına değinerek gerekli açıklamalarla linkleri paylaşacağım.</p>



<h2 class="wp-block-heading">IAR Embedded Workbench</h2>



<p>Kodlarımızı IAR ile geliştireceğiz. Programın deneme sürümü olarak iki seçeneği mevcut. Birincisi 30 gün deneme süresi olan full versiyon diğeri ise 8 KByte kod limiti olan seçenektir. Bu tercihi kurulum esnasında seçiyoruz. Eğitim videomuzda kullanacağımız mikrodenetleyici 8KByte Flash belleğe sahip olduğu için bir sıkıntı olmayacaktır. Bu seçeneği seçerek kurulum yapmalıyız. 8 KByte&#8217;a takılmayınız başlangıç için çok iyi bir değer. 8 KByte ile neler yapılır neler&#8230;. 🙂<br>İlgili Programı indireceğiniz web sitesine <a rel="noreferrer noopener" href="https://www.iar.com/iar-embedded-workbench/#!?architecture=STM8" target="_blank">buradan </a>erişebilirsiniz. <br>Web sitesine giriş yaptığınızda STM8 e tıklayarak programı indirebilirsiniz.<br></p>



<h2 class="wp-block-heading">STM8S/A Standard Peripheral Library</h2>



<p>Kodlarımızı yazarken Standart Periphreal Library kullancağız. Dosyayı içerisinde örnek proje sayfası ve temel çevre birimleri için yazılmış kütüphane ve çevre birimlerinini çalıştırabileceğimiz taslak kodlar bulunmaktadır. Yeni örnek uygulamalar yazarken template proje dosyasını kopyala/yapıştır yöntemi ile çoğaltarak kullanacağız yani IAR ile proje dosyası oluşturma kısmına değinmeyeceğiz. Gerekirse programlama serisinin ilerleyen videolarında bu hususa değinebiliriz.<br>İlgili dosyaya <a rel="noreferrer noopener" href="https://my.st.com/content/my_st_com/en/products/embedded-software/mcu-mpu-embedded-software/stm8-embedded-software/stsw-stm8069.license=1586531079952.product=STSW-STM8069.version=2.3.1.html" target="_blank">buradan </a>erişebilirsiniz.<br>Kütüphaneyi indirmek için ST&#8217;nin sayfasına üye olmanız gerekmetedir.</p>



<h2 class="wp-block-heading">STM8 STUDIO</h2>



<p>Yazdığımız kodları çalıştırırken içerideki değişkenlere neler olup bittiğini bilmek elbette hakkımız 🙂 Bu durum için Real-Time olarak verilere erişmemizin bir yolu bu programı edinmemizdir. Diğer seçenek ise IAR ile debug yaparak Live Watch gibi pencerelerden verileri takip etmektir. Her iki seçenekte de SWIM pinini (PD1) başka bir durum için kullanmayı önermiyorum.<br>İlgili dosyaya <a rel="noreferrer noopener" href="https://www.st.com/en/development-tools/stm-studio-stm8.html#get-software" target="_blank">buradan </a>erişebilirsiniz.<br>Programı indirmek için ST&#8217;nin sayfasına üye olmanız gerekmetedir.</p>



<h2 class="wp-block-heading">Logic Analyzer</h2>



<p>PWM/SPI/UART gibi çevre birimlerinin çıkışlarını inceleyebilmemiz için kullanacağızımız bu program oldukça başarılıdır. Kaydını yaptığımız verinin ıncığını cıncığını çıkartana kadar inceleme fırsatı sağlar (Timing, High/Low Sayıları vs&#8230;..) 🙂<br>İlgili dosyaya <a rel="noreferrer noopener" href="https://www.saleae.com/downloads/" target="_blank">buradan </a>erişebilirsiniz.</p>



<h2 class="wp-block-heading">USB &#8211;&gt; TTL</h2>



<p>Daha evvel Arduino veya bu işler ile uğraştıysanız  muhtemelen driver konusunda problem yaşamayacaksınızdır. Her ihtimale karşı indirme linklerini koyayım. USB TTL çeviriciyi PC&#8217;ye bağladığınızda ve aygıt yöneticisinden  baktığınızda herhangi bir problem görünmesi durumunda IC&#8217;nize göre driver yüklemeniz gerekecektir.<br>Gerekirse ileride bu konuya da değinebiliriz.</p>



<p><br>CH340 USB to TTL driver için gerekli dosyayı <a href="https://n7a.web.tr/wp-content/uploads/2020/04/CH341SER.rar">buradan</a> indirebilirsiniz.</p>



<p>FT232 USB to TTL driver için gerekli dosyayı <a href="https://n7a.web.tr/wp-content/uploads/2020/04/FT232.zip">buradan</a> indirebilirsiniz.</p>



<p>PL2303 USB to TTL driver için gerekli dosyayı <a href="https://n7a.web.tr/wp-content/uploads/2020/04/PL2303_Prolific_DriverInstaller_v1200.zip">buradan </a>indirebilirsiniz.<br></p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="STM8 Programlama -IAR- #3 (Yazılım Araçları) STM8S103F3" width="1200" height="675" src="https://www.youtube.com/embed/pi-z2ryUItU?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-3-yazilimsal-araclar/">STM8 Programlama -IAR- #3 (Yazılımsal Araçlar)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://n7atechnic.com.tr/stm8-programlama-iar-3-yazilimsal-araclar/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>STM8 Programlama -IAR- #2 (Donanımsal Araçlar)</title>
		<link>https://n7atechnic.com.tr/stm8-programlama-iar-2-donanimsal-araclar/</link>
					<comments>https://n7atechnic.com.tr/stm8-programlama-iar-2-donanimsal-araclar/#respond</comments>
		
		<dc:creator><![CDATA[N7A Tech]]></dc:creator>
		<pubDate>Mon, 13 Apr 2020 22:46:26 +0000</pubDate>
				<category><![CDATA[STM8]]></category>
		<category><![CDATA[Tüm Yazılar]]></category>
		<category><![CDATA[Gömülü Sistem]]></category>
		<category><![CDATA[IAR]]></category>
		<category><![CDATA[STLINK]]></category>
		<category><![CDATA[STM Embedded]]></category>
		<category><![CDATA[STM8 Code]]></category>
		<category><![CDATA[STM8 IAR]]></category>
		<category><![CDATA[STM8 Programing]]></category>
		<category><![CDATA[STM8 Programlama]]></category>
		<category><![CDATA[STM8S]]></category>
		<category><![CDATA[STM8S103F3]]></category>
		<guid isPermaLink="false">https://n7a.web.tr/?p=2514</guid>

					<description><![CDATA[<p>Kullanacağımız donanım araçlarının tamamı ülkemizden temin edilebilir malzemelerdir. Eğitim serisinin daha verimli olması için en azından board ve st-linke sahip olmanızı tavsiye ederim. STM8S103 Board ST<span class="excerpt-hellip"> […]</span></p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-2-donanimsal-araclar/">STM8 Programlama -IAR- #2 (Donanımsal Araçlar)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Kullanacağımız donanım araçlarının tamamı ülkemizden temin edilebilir malzemelerdir. Eğitim serisinin daha verimli olması için en azından board ve st-linke sahip olmanızı tavsiye ederim.</p>



<h2 class="wp-block-heading">STM8S103 Board</h2>



<div class="wp-block-image is-style-default"><figure class="aligncenter"><img decoding="async" src="https://images-na.ssl-images-amazon.com/images/I/710nhidYPSL._SY355_.jpg" alt="Arduino Accessory DIY Tools, ldtr - wg079 stm8s103 F3 STM8S ..."/><figcaption>STM8F103F3 Board</figcaption></figure></div>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img decoding="async" src="https://tenbaht.github.io/sduino/hardware/stm8blue-schematic.png" alt="Generic STM8S103F3 breakout board (stm8blue) - Sduino" width="526" height="358"/><figcaption>STM8S103F3 Board Schematic</figcaption></figure></div>



<p>   ST firmasının geliştirmiş olduğu 8 bitlik mikrodenetleyici ailesinin TSSOP 20 kılıfını barındıran boardın alt tarafında AMS117-3.3 LDO (Low Dropout LDO; besleme voltajı çıkış voltajına çok yakın olsa bile çıkış voltajını ayarlayabilen bir DC voltaj regülatörüdür) Regüle entegresi bulunmaktadır.</p>



<p><br>   STM8S103F3 mikrodenetleyicisinin çalışma gerilimi 2.95 to 5.5 V  aralığında olduğu için programlama pinlerindeki 3V3 yazan kısımdan 5V uygulanmasında bir sakınca yoktur. Fakat 5V pini Regüle Entegresinin giriş ucuna bağlı olduğu için bu pinden 5V uygulanması mikrodenetleyicinin 5V&#8217;da çalıştığı anlamına gelmez.</p>



<p><br>   Board üzerinde iki adet LED bulunmaktadır. Bunlardan PWR olan besleme geriliminin varlığını, TEST ise GPIOB Pin4 (PB4) pininin çıkış durumunu temsil eder.</p>



<p><br>   RST Butonu ise mikrodenetleyicinin NRST pinine bir Pull-Up direnci ile birlikte bağlıdır. Buda mikrodenetleyicinin resetlenmesi için Lojik 0 konuma gitmesi gerektiğini gösterir.<br>PB5 pininin sol tarafında D4 olarak görünen pin B4 pinidir. Sanırım çinli arkadaşlarda bir hata olmuş 🙂<br></p>



<h2 class="wp-block-heading">ST-Link/V2</h2>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img decoding="async" src="https://n11scdn.akamaized.net/a1/1024/elektronik/diger/stlink-v2-stm8-stm32-programlayici__0127311057049805.jpg" alt="Stlink V2 - Stm8 , Stm32 Programlayıcı - n11.com" width="299" height="299"/><figcaption>ST-Link/V2</figcaption></figure></div>



<p>ST-Link/V2 vasıtasıyla yazdığımız kodları mikrodenetleyiciye yükleriz. İlgili ürünle hem STM32 hemde STM8 mikrodenetleyicilere yazılım yüklenebiliyor. Eğitim serimizde gerilim pinlerine ek olarak SWIM ve NRST pinlerini kullanacağız. Bu arada IAR (IAR EMbedded Workbench kodlarımızı yazacağımız program) kullanırken herhangi bir ayrı programa gerek duymaksızın derlenmiş kodlarımızı IAR içerisinden tek tuşla  mikrodenetleyicimize yükleyebileceğiz.</p>



<h2 class="wp-block-heading">USB-TTL </h2>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img decoding="async" src="https://www.hobidevre.com/image/cache/catalog/arduino/PL2303-USB-to-TTL-800x800.jpg" alt="PL2303 USB-TTL seri dönüştürücü" width="260" height="260"/><figcaption>USB to TTL CH340</figcaption></figure></div>



<p>Mikrodenetleyicinin UART (Universal Asynchronous Receiver Transmitter-Evrensel asenkron alıcı-verici) pinlerinden PC&#8217;ye veri alış verişini sağlayan arkadaşımızdır. Hatta eğitimin ilerleyen aşamalarında kankamız bile olabilir 🙂 </p>



<h2 class="wp-block-heading">Logic Analyzer</h2>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img decoding="async" src="https://cdn.ozdisan.com/ETicaret_Dosya/591660_2295296.JPG" alt="USB LOGIC ANALYZER | OZD-ARDUINO - MAKER ÜRÜNLERİ" width="287" height="327"/><figcaption>Logic Analyzer</figcaption></figure></div>



<p>Mikrodenetleyici çıkışlarının, standart multimetreler ile ölçemeyecek kadar hızlı lojik seviye değişimi esnasında olan bitenden haber olmak için kullanıyoruz. Ancak 0-5V aralığındaki lojik seviyeleri ölçer ve PC yazılımı vasıtasıyla analiz olanağı sağlar.</p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="STM8 Programlama -IAR- #2 (Donanım Araçları) STM8S103F3" width="1200" height="675" src="https://www.youtube.com/embed/Yirg-TNs-lg?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<p><br>Evet kullanacağımız donanımlar hakkında kısaca bilgi edindiğimize göre bir sonraki yazımıza kullanacağımız yazılım araçları hakkında bilgi almak edinmek için geçebiliriz.</p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-2-donanimsal-araclar/">STM8 Programlama -IAR- #2 (Donanımsal Araçlar)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://n7atechnic.com.tr/stm8-programlama-iar-2-donanimsal-araclar/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>STM8 Programlama -IAR- #1 (Giriş)</title>
		<link>https://n7atechnic.com.tr/stm8-programlama-iar-1-giris/</link>
					<comments>https://n7atechnic.com.tr/stm8-programlama-iar-1-giris/#respond</comments>
		
		<dc:creator><![CDATA[N7A Tech]]></dc:creator>
		<pubDate>Mon, 13 Apr 2020 21:33:45 +0000</pubDate>
				<category><![CDATA[STM8]]></category>
		<category><![CDATA[Tüm Yazılar]]></category>
		<category><![CDATA[Gömülü Sistem]]></category>
		<category><![CDATA[IAR]]></category>
		<category><![CDATA[STLINK]]></category>
		<category><![CDATA[STM Embedded]]></category>
		<category><![CDATA[STM8 Code]]></category>
		<category><![CDATA[STM8 IAR]]></category>
		<category><![CDATA[STM8 Programing]]></category>
		<category><![CDATA[STM8 Programlama]]></category>
		<category><![CDATA[STM8S]]></category>
		<category><![CDATA[STM8S103F3]]></category>
		<guid isPermaLink="false">https://n7a.web.tr/?p=2506</guid>

					<description><![CDATA[<p>STM8 Programlama serisinde nelere değineceğimizi kısaca anlattık.</p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-1-giris/">STM8 Programlama -IAR- #1 (Giriş)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></description>
										<content:encoded><![CDATA[
<p><br><br><br><br>STM8 Programlama serisinde nelere değineceğimizi kısaca anlattık.<br><br><br><br><br></p>



<figure class="wp-block-embed-youtube wp-block-embed is-type-video is-provider-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="STM8 Programlama -IAR- #1 (Giriş) STM8S103F3" width="1200" height="675" src="https://www.youtube.com/embed/ZquHy_bq9Ys?feature=oembed" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
</div></figure>



<p></p>
<p><a href="https://n7atechnic.com.tr/stm8-programlama-iar-1-giris/">STM8 Programlama -IAR- #1 (Giriş)</a> yazısı ilk önce <a href="https://n7atechnic.com.tr">N7A Teknik</a> üzerinde ortaya çıktı.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://n7atechnic.com.tr/stm8-programlama-iar-1-giris/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
