STM32 ZET6 Cortex M3 Uygulama 1

Başlatan ahmet2004, 16 Aralık 2010, 17:37:36

ahmet2004

Kod Keil uVision 4 ile hazırlanmıştır.Arm Cortex M3 STM32zet6 işlemci kullanılmıştır.

/*
Stm32ZET6 kit
Kristal 8Mhz
Düzenleyen: ahmet
Tarih: 16.12.2010
5li Yürüyen Işık
*/

#include "stm32f10x_lib.h"

GPIO_InitTypeDef GPIO_InitStructure;
DMA_InitTypeDef   DMA_InitStructure;
ErrorStatus HSEStartUpStatus;
extern vu32 TimingDelay;

void RCC_Configuration(void);
void NVIC_Configuration(void);
void GPIO_Configuration(void);
void Delay(vu32 nTime);
void SysTick_Configuration(void);

int main(void)
{
   
  /* Configure the system clocks */
  RCC_Configuration();

  /* NVIC Configuration */
  NVIC_Configuration();

  SysTick_Configuration();

  /* Configure the GPIO ports */
  GPIO_Configuration();
  

   for(;;)
   {
  	
	GPIO_ResetBits(GPIOF, GPIO_Pin_6);
	Delay(200);	
	GPIO_SetBits(GPIOF, GPIO_Pin_6);
	
	GPIO_ResetBits(GPIOF, GPIO_Pin_7);
	Delay(200);	
	GPIO_SetBits(GPIOF, GPIO_Pin_7);
	
	GPIO_ResetBits(GPIOF, GPIO_Pin_8);
	Delay(200);	
	GPIO_SetBits(GPIOF, GPIO_Pin_8);
	
	GPIO_ResetBits(GPIOF, GPIO_Pin_9);
	Delay(200);	
	GPIO_SetBits(GPIOF, GPIO_Pin_9);
	
	GPIO_ResetBits(GPIOF, GPIO_Pin_10);
	Delay(200);	
	GPIO_SetBits(GPIOF, GPIO_Pin_10);

	}   

}

/*******************************************************************************
* Function Name  : SysTick_Configuration
* Description    : Configures the SysTick to generate an interrupt each 1 millisecond.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void SysTick_Configuration(void)
{
  /* Select AHB clock(HCLK) as SysTick clock source */
  SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK);

  /* Set SysTick Priority to 3 */
  NVIC_SystemHandlerPriorityConfig(SystemHandler_SysTick, 3, 0);
   
  /* SysTick interrupt each 1ms with HCLK equal to 72MHz */
  SysTick_SetReload(72000);

  /* Enable the SysTick Interrupt */
  SysTick_ITConfig(ENABLE);
}



/*******************************************************************************
* Function Name  : RCC_Configuration
* Description    : Configures the different system clocks.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void RCC_Configuration(void)
{
  /* RCC system reset(for debug purpose) */
  RCC_DeInit();

  /* Enable HSE */
  RCC_HSEConfig(RCC_HSE_ON);

  /* Wait till HSE is ready */
  HSEStartUpStatus = RCC_WaitForHSEStartUp();

  if(HSEStartUpStatus == SUCCESS)
  {
    /* HCLK = SYSCLK */
    RCC_HCLKConfig(RCC_SYSCLK_Div1); 
  
    /* PCLK2 = HCLK */
    RCC_PCLK2Config(RCC_HCLK_Div1); 

    /* PCLK1 = HCLK/2 */
    RCC_PCLK1Config(RCC_HCLK_Div2);

    /* Flash 2 wait state */
    FLASH_SetLatency(FLASH_Latency_2);
    /* Enable Prefetch Buffer */
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

    /* PLLCLK = 8MHz * 9 = 72 MHz */
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

    /* Enable PLL */ 
    RCC_PLLCmd(ENABLE);

    /* Wait till PLL is ready */
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
    {
    }

    /* Select PLL as system clock source */
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

    /* Wait till PLL is used as system clock source */
    while(RCC_GetSYSCLKSource() != 0x08)
    {
    }
  }
   
  /* Enable GPIOF, GPIOD ,GPIOA and AFIO clocks */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOF | RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOA| 	RCC_APB2Periph_GPIOB|
                         RCC_APB2Periph_AFIO, ENABLE);
}

/*******************************************************************************
* Function Name  : NVIC_Configuration
* Description    : Configures Vector Table base location.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void NVIC_Configuration(void)
{
  
#ifdef  VECT_TAB_RAM  
  /* Set the Vector Table base location at 0x20000000 */ 
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); 
#else  /* VECT_TAB_FLASH  */
  /* Set the Vector Table base location at 0x08000000 */ 
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   
#endif

  /* Configure one bit for preemption priority */
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  
}


/*******************************************************************************
* Function Name  : GPIO_Configuration
* Description    : Configures the different GPIO ports.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;
 
  /* Configure PF. as Output push-pull */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7|GPIO_Pin_8|GPIO_Pin_9|GPIO_Pin_10;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOF, &GPIO_InitStructure);

}


/*******************************************************************************
* Function Name  : Delay
* Description    : Inserts a delay time.
* Input          : nTime: specifies the delay time length, in milliseconds.
* Output         : None
* Return         : None
*******************************************************************************/
void Delay(u32 nTime)
{
  /* Enable the SysTick Counter */
  SysTick_CounterCmd(SysTick_Counter_Enable);
  
  TimingDelay = nTime;

  while(TimingDelay != 0);

  /* Disable the SysTick Counter */
  SysTick_CounterCmd(SysTick_Counter_Disable);
  /* Clear the SysTick Counter */
  SysTick_CounterCmd(SysTick_Counter_Clear);
}


Bu da başka bir FFT uygulamasına ait Video:


aykut54

Tebrikler gerçekten çok iyi bir uygulama özellikle bu 32 bit işlemciler tft konusunda biçilimiş kaftan. Kit hakkında bilgi verebilirmisiniz. Kullandığınız yazılım C# mıdır? Sizdeki bu öğrenme hevesini gördükçe öğrenme hevesim daha artıyor bu vesile çok teşekkürler.

Çalışmalarınızda başarılar.

ahmet2004

um0585 isimli STM32F10xxx DSP library firmware  kütüphanesi kullanıldı.STM sitesinde kodlar mevcut.

Amaç STM32 kullanmak , işlemciler konusunda takılanlara yardım etmek.

Kit standart ZET6 kiti Cortex M3 tabanlı.

stm32 serileri:

M_B

Hocam uygulamanız ıcın Tesekkurler.
Size cok hayranım ;) Hocam sayenizde LPC1768 kiti almıştık ama henuz bir adım atma sansımız olmadı. Aslında bizden kaynaklanıyor. İnsaallah atmega icin hazırladıgımız dersler bitince baslıyacağım. Sizin bu tur projeler vererek bizleri teşvik etmeniz ise ayri bir konu.

Kolay gelsin.
Mehmet

İmkanın sınırlarını görmek için imkansızı denemek lazım.                                                             Fatih Sultan Mehmet


computerboy

Hocam çalışmalaranızda başarılar dilerim. bir sorum olacak.

LPC2368 işlemci ile epson s1d13742 grafik sürücüsünü kullanıp  sharp LQ043 (psp ekranı) süreceğim. C diline az çok aşinayım ama kendimi geliştirmek istiyorum sizin tft lcd kodlarınızda ufak değişiklik yaparak bu lcd'yi sürmem mümkünmü ? nerden başlayacağımı bilemiyorum bende keil kullanıyorum lcd ' nin dataseheet kullanarak nasıl sürüleceğini aşama aşama anlatan bir kaynak biliyormusunuz bu konuda bana yardımcı olursanız minnettar kalırım.