مثال ها با میکروکنترولر STM32F030(ارسال از طریق usart)

در اين بخش مي‌توانيد در مورد تمامي مسائل مرتبط با میکروکنترلرهای ARM به بحث بپردازيد
ارسال پست

مطالب را چطور ارزیابی میکنید؟

بسیار خوب و مفید
1
100%
مفید
0
بدون راي
متوسط
0
بدون راي
 
مجموع رای گیری: 1

Colonel II
Colonel II
نمایه کاربر
پست: 7131
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9211 بار
سپاس‌های دریافتی: 21267 بار
تماس:

مثال ها با میکروکنترولر STM32F030(ارسال از طریق usart)

پست توسط sinaset » دو شنبه 18 مرداد 1395, 10:55 am

بنام خدا
باسلام


مثال ها با میکروکنترولر STM32F030
تصویر
میکروکنترولر جالب و ساده STM32F030 شرکت ST با داشتن قیمت ارزان،اما قابلیت های جالبی دارد،در این تاپیک سعی خواهیم،مثال های ساده نیز برای این میکروکنترولر معرفی کنیم.

ویژگی های این میکرو نسبت به قیمت آن:

* قیمت حدود 2800 تومان!(در حال حاضر)
*فرکانس 48 مگاهرتزی CPU
*واحد 12 بیتی ADC ( به تعداد 11 کانال) (به نرخ نمونه بسیار بالا !!)
* 16 کیلوبایت حافظه فلش و 4 کیلوبایت حافظه Sram
*15 پایه IO
*پردازش 32 بیت!
* واحد SPI و USART و I2c
*روش پروگرام SWD
و....
تصویر
هدربردمیکروکنترولر.
---
تصویر
مشخصات میکروکنترولر به نقل سایت سازنده ST
----
تصویر
پایه های مربوطه

فهرست مثال و طرح های تاپیک:
صفحه اول:
مثال چشمک زن با LED
مثال راه اندازی با مانیتور nokia 3310 (ایسی PCD8544)
ارسال از طریق usart
...
...
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

Colonel II
Colonel II
نمایه کاربر
پست: 7131
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9211 بار
سپاس‌های دریافتی: 21267 بار
تماس:

Re: مثال ها با میکروکنترولر STM32F030

پست توسط sinaset » یک شنبه 11 مهر 1395, 10:49 am

بنام خدا
باسلام


روشن کردن LED با یک کلید.

در این پروژه ساده با کلیک کردن( پورت PORTA.0) ، یک LED (که به PORTA.4 وصل شده است) روشن میشود .

توضیحات لازمه،درون برنامه نوشته شده است (*برای خوان متن فارسی در نرم افزار کیل باید وضیعت را بدین شکل،تغییر دهید)

***اگر از خود میکروکنترولر استفاده می کنید و (برد ان را تهیه نکرده اید) طبق [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید] مدار،ان را درست و تنظیم کنید. و همچنین برای وصل کردن میکروکنترولر به پروگرارم Jtag به روش SWD ، باید از این خروجی های پروگرام (جیلینک )استفاده کنید
تصویر
  برنامه ،با کد نویسی آسان انجام شده است،و برای راحتی کار از کتابخانه CMSIS برای مقداری دهی به واحد میکروکنترولر استفاده شده است.پس بهتر است،با باقی قسمت کاری نداشته باشید و بیشتر با خود کدها main.c اشنایی پیدا کنید.  کدهایی تابع main.c: 

کد: انتخاب همه

/*
PORJEC: LED on Button
edit:sinaset
Site:centralclubs.com
data:1395.7.11
در اين طرح،يک ال اي دي به کمک کليد خاموش و روشن ميشود
PORTA.0 به عنوان ورودي و مکان کليد
PORTA.4 به عنوان خروجي و روشن کننده ال اي دي
*/

#include "stm32f0xx.h"

void MCUInit(void) //تابع تايين پورت هاي ميکروکنترولر
{
/* تايين پورت ها ورودي */
//PORTA فعال سازي
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
//به عنوان وروديPA.0 تايين پين
GPIOA->MODER &= ~GPIO_MODER_MODER0; //mask the bit to 00
/* *** تايين پورت هاي خروجي *** */
//A فعال سازي پورت
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
//به عنوان خروجيPORTAتنظيم4
GPIOA->MODER &= ~GPIO_MODER_MODER4; //mask the bit to 00
GPIOA->MODER |= GPIO_MODER_MODER4_0; //set the bit
}

int main(void) // حلقه اصلي برنامه
{
unsigned char InputState; //متغيري براي ريختن وضعيت پين
MCUInit(); //فراخواني تابع وضعيت پايه هاي ميکروکنترولر

while(1) //چرخه اصلي برنامه
{

InputState = GPIOA->IDR & GPIO_IDR_0;// را بخوان و در متغير اين پوت استيت بريزPAوضعيت پين 0 پايه

if(InputState)//وضعيت را بخوان در صورتي پايه مد نظر 1 بود دستور زير را اجرا کن
{
GPIOA->ODR |= GPIO_ODR_4; // ال اي دي روشن شود
}
else //در غير اينصورت پايه را خاموش کن
{
GPIOA->ODR &= ~GPIO_ODR_4; //ال اي دي خاموش شود
}
}
}

[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]کل برنامه.
باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

Colonel II
Colonel II
نمایه کاربر
پست: 7131
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9211 بار
سپاس‌های دریافتی: 21267 بار
تماس:

Re: مثال ها با میکروکنترولر STM32F030

پست توسط sinaset » جمعه 6 اسفند 1395, 11:23 am

بنام خدا
باسلام.

راه اندازی با مانیتور nokia 3310 (ایسی PCD8544 )
تصویر
در این مثال ساده،مانیتور نوکیا 3310 با میکرو stm32f030f4 با فونت انگلیسی 6x8 راه اندازی میشود .

کتابخانه مانیتور:

کد: انتخاب همه

#ifndef __PCD8544_H
#define __PCD8544_H

#include "stm32f0xx_hal.h"
#include "main.h"
#define SCLK   GPIO_PIN_0       //تايين پين هاي مرتبط به مانيتور
#define MOSI   GPIO_PIN_1
#define DC   GPIO_PIN_2
#define SCE    GPIO_PIN_3
#define RST    GPIO_PIN_4
#define LCD_PORT GPIOA   

void lcd8544_init(void);   //مقدار دهي اوليه
void lcd8544_refresh(void);  // ريفرفش صفحه
void lcd8544_putpix(unsigned char x, unsigned char y, unsigned char mode);  //روشن کردن پيکسل
void lcd8544_line(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned char mode); //کشيدن خط
void lcd8544_rect(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2, unsigned char mode);  //درست کردن قاب صفحه
void lcd8544_putchar(unsigned char px, unsigned char py, unsigned char ch, unsigned char mode); //چاپ کاراکتر
void lcd8544_dec(unsigned int numb, unsigned char dcount, unsigned char x, unsigned char y, unsigned char mode); //چاپ عدد با سايز بزرگ
void lcd8544_putstr(unsigned char x, unsigned char y, const char str[], unsigned char mode);
void lcd8544_clear(void);                              
void lcd8544_putdchar(unsigned char px, unsigned char py, unsigned char ch);
void lcd8544_ddec(unsigned int numb, unsigned char dcount, unsigned char x, unsigned char y);
void lcd8544_putdstr(unsigned char x, unsigned char y, const char str[]);

#endif /* __PCD8544_H */



مثال نوشته شده با مانیتور:

کد: انتخاب همه

/**
  * File Name      :  راه اندازي مانيتور نوکيا 3310
  * edit         : sinaset
   * centralclubs.com
  */
#include "stm32f0xx_hal.h"
#include "main.h"

TIM_HandleTypeDef htim14;
uint8_t mode_menu=0;
uint8_t var_flag=0;
void SystemClock_Config(void);
void Error_Handler(void);
static void MX_GPIO_Init(void);
static void MX_TIM14_Init(void);
char  texT[70];

int main(void)
{
   uint32_t c=0,d=9999999,f,o,J;
   float h=0.0003;
   char bit=1,x,y,u;
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_TIM14_Init();
  lcd8544_init();    
     lcd8544_rect(0,0,82,40,1);
    lcd8544_putstr(5, 10, "END NAME", 0);
     lcd8544_putstr(5, 20, "OF GOD", 0);
      lcd8544_putstr(5, 30, "!#$%^&*@()~", 0);
     lcd8544_refresh(); // بعد از نوشتن کارکترها بايد اين دستور اجرا شود تا متن نمايش داده شود
      HAL_Delay(1000);   
     lcd8544_clear();   
      J=48;
               lcd8544_clear();
               for(u=0;u<90;u++)
               {
        for(o=0;o<48;o++)lcd8544_line(u+0,o,u+10,o,bit);
                  lcd8544_refresh();
               }
               bit=!bit;
               for(u=90;u>1;u--)
               {
                  for(o=0;o<48;o++)lcd8544_line(u+0,o,u+10,o,bit);
                 lcd8544_refresh();
              }
      lcd8544_clear();
    lcd8544_refresh();               
     HAL_Delay(1000);   
    
            
      for(c=0;c<1000000;c++)
      {
      lcd8544_clear();
     c++;
    d--;
    h+=0.0002;   
    f=(d/1.5);         
      sprintf(texT, "CONT:%i", c);      
     lcd8544_putstr(0, 0, texT, 0);
      sprintf(texT, "CONT:%i", d);      
     lcd8544_putstr(0, 10, texT, 0);
      sprintf(texT, "CONT:%0.4f", h);      
     lcd8544_putstr(0, 20, texT, 0);
      sprintf(texT, "CONT:%i", f);      
     lcd8544_putstr(0, 30, texT, 0);      
     lcd8544_refresh();
      }
  while (1);

}


void SystemClock_Config(void)
{

  RCC_OscInitTypeDef RCC_OscInitStruct;
  RCC_ClkInitTypeDef RCC_ClkInitStruct;
  RCC_PeriphCLKInitTypeDef PeriphClkInit;
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.HSICalibrationValue = 16;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
  RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSI;
  RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL12;
  RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    Error_Handler();
  }
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                  |RCC_CLOCKTYPE_PCLK1;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
  {
    Error_Handler();
  }
  PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_I2C1;
  PeriphClkInit.I2c1ClockSelection = RCC_I2C1CLKSOURCE_HSI;
  if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
  {
    Error_Handler();
  }
  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);
  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
  /* SysTick_IRQn interrupt configuration */
  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}
/* TIM14 init function */
static void MX_TIM14_Init(void)
{
  htim14.Instance = TIM14;
  htim14.Init.Prescaler = 47999;
  htim14.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim14.Init.Period = 100;
  htim14.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  if (HAL_TIM_Base_Init(&htim14) != HAL_OK)
  {
    Error_Handler();
  }
}
static void MX_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct;
  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOF_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOF, GPIO_PIN_0|GPIO_PIN_1, GPIO_PIN_RESET);

  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3
                |GPIO_PIN_4, GPIO_PIN_RESET);
  /*Configure GPIO pin Output Level */
  HAL_GPIO_WritePin(GPIOB, GPIO_PIN_1, GPIO_PIN_RESET);

  /*Configure GPIO pins : PF0 PF1 */
  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOF, &GPIO_InitStruct);

  /*Configure GPIO pins : PA0 PA1 PA2 PA3
                 PA4 */
  GPIO_InitStruct.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3
                |GPIO_PIN_4;
  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);

  /*Configure GPIO pin : PB1 */
  GPIO_InitStruct.Pin = GPIO_PIN_1;
  GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

  /* EXTI interrupt init*/
  HAL_NVIC_SetPriority(EXTI4_15_IRQn, 0, 0);
  HAL_NVIC_EnableIRQ(EXTI4_15_IRQn);

}
/**
  * @brief  This function is executed in case of error occurrence.
  * @param  None
  * @retval None
  */
void Error_Handler(void)
{
  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(uint8_t* file, uint32_t line)
{
  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
    ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* USER CODE END 6 */

}

#endif

/**
  * @}
  */

/**
  * @}
*/

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


نکات:
* بعد از اینکه متن یا خط یا .. خود را نوشتید،برای اینکه،بر روی مانیتور نمایش داده شود، باید دستور lcd8544_refresh را اجرا کنید.
* در تابع main.h می تونید با نوشتن،عدد 0 در DIGIT_FARSI ،اعداد را با فونت فارسی ببینید (b_nazanin)

کد: انتخاب همه

#ifndef __MAIN_H
#define __MAIN_H

#define  DIGIT_FARSI   1   // براي اعداد فارسي عدد 0 و براي اعداد خارجي عدد 1 را قرار دهيد
#include "pcd8544.h"

#endif /* __MAIN_H */


[لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]برنامه.

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

Colonel II
Colonel II
نمایه کاربر
پست: 7131
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9211 بار
سپاس‌های دریافتی: 21267 بار
تماس:

Re: مثال ها با میکروکنترولر STM32F030(راه اندازی با nokia331

پست توسط sinaset » یک شنبه 27 اسفند 1396, 8:37 am

بنام خدا
باسلام


ارسال از طریق usart به کمک stm32cube
تصویر
نرم افزار stm32cube کارها را برای همه اسان کرده است،همانطور که می دانید،به کمک این نرم افزار که توسط خود شرکت سازنده stm32 ساخته شده،می تواند به صورت گرافیکی و ساده،واحدها درونی میکروکنترولر را مقدار دهی کرد.

در این طرح ساده ، هر 500 میلی ثانیه یک بار،متن "BE NAME KHODA" از طریقه پایه TX میکروکنترولر فرستاده میشود،که می توان با داشتن یک رابط پورت سریال، ان متن را دریافت کرد.

برای ارسال متن فقط کافیست از تابع HAL_UART_Transmit استفاده شود !

تابع HAL_UART_Transmit چهار جزء دارد

کد: انتخاب همه

HAL_UART_Transmit(&huart1,(unsigned char *)str,16,10);

که جزء اول از سمت چپ،huart1 ، فایل راه اندازه usart مد نظر شما می باشد و توسط ان شناسایی میشود (که اگر برنامه را ببینید،در ابتد صفحه معرفی میشود UART_HandleTypeDef huart1)

جزء بعدی، رشته است که قصد دارید ارسال کنید،که بهتر است قبل از ان (unsigned char *) را هم ذکر کنید
جزء بعد تعداد اجزاء رشته می باشد که قصد دارید ارسال کنید ..
جزء بعد زمان تاخیر می باشد ..

کدهایی صفحه اصلی :

کد: انتخاب همه

#include "main.h"
#include "stm32f0xx_hal.h"

UART_HandleTypeDef huart1;

void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART1_UART_Init(void);

// site:centralclubs.com
// by:sinaset
// usart 38400 Bit
// PA.2 TX (pin 8)
// PA.3 RX (pin 9)
// External Crystal 8MHZ
// SPEED CPU 48MHZ

int main(void)
{

HAL_Init();
SystemClock_Config();
MX_GPIO_Init();
MX_USART1_UART_Init();

char OO="BE NAME KHODA";
char str[16];

while (1)
{
sprintf(str,"%s \r\n",OO);
HAL_UART_Transmit(&huart1,(unsigned char *)str,16,10);
HAL_Delay(500);
}
}
void SystemClock_Config(void)
{

RCC_OscInitTypeDef RCC_OscInitStruct;
RCC_ClkInitTypeDef RCC_ClkInitStruct;
RCC_PeriphCLKInitTypeDef PeriphClkInit;

/**Initializes the CPU, AHB and APB busses clocks
*/
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE;
RCC_OscInitStruct.HSEState = RCC_HSE_ON;
RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON;
RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE;
RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL6;
RCC_OscInitStruct.PLL.PREDIV = RCC_PREDIV_DIV1;
if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}

/**Initializes the CPU, AHB and APB busses clocks
*/
RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
|RCC_CLOCKTYPE_PCLK1;
RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;

if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}

PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USART1;
PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK1;
if (HAL_RCCEx_PeriphCLKConfig(&PeriphClkInit) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}

/**Configure the Systick interrupt time
*/
HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

/**Configure the Systick
*/
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

/* SysTick_IRQn interrupt configuration */
HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}

/* USART1 init function */
static void MX_USART1_UART_Init(void)
{

huart1.Instance = USART1;
huart1.Init.BaudRate = 38400;
huart1.Init.WordLength = UART_WORDLENGTH_8B;
huart1.Init.StopBits = UART_STOPBITS_1;
huart1.Init.Parity = UART_PARITY_NONE;
huart1.Init.Mode = UART_MODE_TX_RX;
huart1.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart1.Init.OverSampling = UART_OVERSAMPLING_16;
huart1.Init.OneBitSampling = UART_ONE_BIT_SAMPLE_DISABLE;
huart1.AdvancedInit.AdvFeatureInit = UART_ADVFEATURE_NO_INIT;
if (HAL_UART_Init(&huart1) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}

}

/** Configure pins as
* Analog
* Input
* Output
* EVENT_OUT
* EXTI
*/
static void MX_GPIO_Init(void)
{

/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOF_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();

}

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

/**
* @brief This function is executed in case of error occurrence.
* @param file: The file name as string.
* @param line: The line in file as a number.
* @retval None
*/
void _Error_Handler(char *file, int line)
{
/* USER CODE BEGIN Error_Handler_Debug */
/* User can add his own implementation to report the HAL error return state */
while(1)
{
}
/* USER CODE END Error_Handler_Debug */
}

#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(uint8_t* file, uint32_t line)
{
/* USER CODE BEGIN 6 */
/* User can add his own implementation to report the file name and line number,
tex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
/* USER CODE END 6 */
}
#endif /* USE_FULL_ASSERT */

/**
* @}
*/

/**
* @}
*/

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

دانلود برنامه از [لینک خارجی برای کاربران مهمان مخفی است، لطفا برای مشاهده لینک ثبت نام نموده و یا وارد سایت شوید]

*کریستال میکرو 8 مگاهرتز
*سرعت واحد usart 38400bit

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

New Member
پست: 3
تاریخ عضویت: دو شنبه 13 آبان 1392, 3:50 pm
سپاس‌های ارسالی: 5 بار

Re: مثال ها با میکروکنترولر STM32F030(ارسال از طریق usart)

پست توسط sorena01 » پنج شنبه 26 مهر 1397, 2:35 pm

سلام

ممنون از پست خوبتون

امکانش هست که قسمتهای مختلف برد رو معرفی کنید؟ .مثلا الان از متن متوجه شدم LED روی برد به  PA4  متصل شده ولی بقیه قسمتها نامفهومه . مثلا اون  جامپر ها برای چیه؟ یا  Mini USB بفقط به عنوان تغذیه مداره یا پورت سریال هم هست ؟ و بقیه قسمتهاش . ممنون از شما

Colonel II
Colonel II
نمایه کاربر
پست: 7131
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9211 بار
سپاس‌های دریافتی: 21267 بار
تماس:

Re: مثال ها با میکروکنترولر STM32F030(ارسال از طریق usart)

پست توسط sinaset » پنج شنبه 26 مهر 1397, 4:19 pm

سلام بر شما

خواهش میکنم 

اون برد،یک برد کلی بود برای معرفی! خودم از یک نمونه برد دست ساز ساده استفاده کردم .

اگر برد شما،برد داخلی باشه و یا خارجی،معمولا در دفترچه یا برگ معرفی.. قید شده کاربرد،قسمت های مختلف برد چه چیزی می باشد!

احتمالا اگر جستجو کنید،بتوانید برگ اطلاعات مد نظراتان را پیدا کنید. اگر هم پیدا نکردید،برد خودتان را عکسش را اینجا قرار دهید،و بگویید کدام قسمت مد نظر شما می باشد.

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

New Member
پست: 3
تاریخ عضویت: دو شنبه 13 آبان 1392, 3:50 pm
سپاس‌های ارسالی: 5 بار

Re: مثال ها با میکروکنترولر STM32F030(ارسال از طریق usart)

پست توسط sorena01 » یک شنبه 29 مهر 1397, 7:53 pm

sinaset نوشته شده:
پنج شنبه 26 مهر 1397, 4:19 pm
سلام بر شما

خواهش میکنم 

اون برد،یک برد کلی بود برای معرفی! خودم از یک نمونه برد دست ساز ساده استفاده کردم .

اگر برد شما،برد داخلی باشه و یا خارجی،معمولا در دفترچه یا برگ معرفی.. قید شده کاربرد،قسمت های مختلف برد چه چیزی می باشد!

احتمالا اگر جستجو کنید،بتوانید برگ اطلاعات مد نظراتان را پیدا کنید. اگر هم پیدا نکردید،برد خودتان را عکسش را اینجا قرار دهید،و بگویید کدام قسمت مد نظر شما می باشد.

باتشکر.
ممنون از پاسخگوییتون . 
بردی که من خریدم از سایت کویر بود و شکلش دقیقا شبیه همون بردی هست که  توی پست ول گذاشتید . (آبیه). البته الان دیگه  اینقدر زیرو روش کردم متوجه شدم تا حدودی .  ولی مثلا مطمئن نیستم که  وضعیت  اون جامپر ها چطوری هست. مثلا بودشون چه تاثیری در استفاده داره و نبودشون چطوریه . توی سایت کویر هم مطلقا هیچ اطلاعاتی در این مورد نیست. نه تنها کویر  بلکه به جرات میگم در تمام دنیا  اثری از این اطلاعات برد نیست !!. من مدت زیادی وقت گذاشتم برای پیدا کردن این اطلاعات توی نت  ولی نبود که نبود . 

Colonel II
Colonel II
نمایه کاربر
پست: 7131
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9211 بار
سپاس‌های دریافتی: 21267 بار
تماس:

Re: مثال ها با میکروکنترولر STM32F030(ارسال از طریق usart)

پست توسط sinaset » یک شنبه 29 مهر 1397, 8:26 pm

سلام بر شما
خواهش میکنم 

در این که در علم الکترونیک در زمینه میکروکنترولر ARM اطلاعات کمی وجود داره،شکی نیست! ولی جامپر مورد اشاره شما مربوط به BOOT میکروکنترولر می باشد!
 
تصویر
بوت هم در سه وضعیت!
تصویر
میدونید که در میکروکنترولر ARM اطلاعات ریخته شده بر روی،میکروکنترولر به طریق مختلف اجرا میشه! که همانطور که می ببیند در میکروکنترولر مد نظر ما 3 حالت وجود دارده! که با VCC و GND کردن BOOT0 و BOOT1  به طریق مختلف،می توان وضعیت ها مختلف مد نظر را طبق جدول بالا،بدست اورد.

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

New Member
پست: 3
تاریخ عضویت: دو شنبه 13 آبان 1392, 3:50 pm
سپاس‌های ارسالی: 5 بار

Re: مثال ها با میکروکنترولر STM32F030(ارسال از طریق usart)

پست توسط sorena01 » دو شنبه 30 مهر 1397, 12:18 am

sinaset نوشته شده:
یک شنبه 29 مهر 1397, 8:26 pm
سلام بر شما
خواهش میکنم 

در این که در علم الکترونیک در زمینه میکروکنترولر ARM اطلاعات کمی وجود داره،شکی نیست! ولی جامپر مورد اشاره شما مربوط به BOOT میکروکنترولر می باشد!
 
 تصویر
بوت هم در سه وضعیت!
تصویر
میدونید که در میکروکنترولر ARM اطلاعات ریخته شده بر روی،میکروکنترولر به طریق مختلف اجرا میشه! که همانطور که می ببیند در میکروکنترولر مد نظر ما 3 حالت وجود دارده! که با VCC و GND کردن BOOT0 و BOOT1  به طریق مختلف،می توان وضعیت ها مختلف مد نظر را طبق جدول بالا،بدست اورد.

باتشکر. 

بی نهایت ممنون از شما . نمیدونید چند صفحه و چند تا از این بردها و چند تا سایت رو گشتم  دنبال اون توضیحات  روی عکس .  حالا که این همه زحمت کشیدید یک سوال دیگه منو هم جواب بدید. من 3 تا از این نمونه بردها داشتم که الان تبدیل به یک دونه شده ! دلیلش فکر میکنم الکتریسیته ساکن دستم بوده باشه. آیا واقعا این بردها اینقدر حساس هستن؟! من با برد کاتالیست سری  F4 سایت ECA هم کار کردم اینقدر حساس نبودناما این برد ها حساسیتشون باور نکردنیه . اولی چون اولین تجربه لمس بود با صدای جرقه ریزی از کار افتاد ( دیگه کیل میکرو رو نشناخت). دومی هم با علم به این موضوع اصلا از سر صندلی تکون نخوردم که مبادا الکتریسیته ساکن ایجاد بشه ولی باز هم  بعد از لمس دیگه کیل میکرو رو نشناخت . شما مشکلی در این مورد نداشتین؟ ببخشید از موضوع تاپیک خارج شد

Colonel II
Colonel II
نمایه کاربر
پست: 7131
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9211 بار
سپاس‌های دریافتی: 21267 بار
تماس:

Re: مثال ها با میکروکنترولر STM32F030(ارسال از طریق usart)

پست توسط sinaset » دو شنبه 30 مهر 1397, 10:03 am

سلام دوباره
خواهش میکنم.خوشحالم مشکلات حل شد.

سوالاتتان را بپرسید مشکلی از بابت پرسش سوال نیست! اینجا انجمن گفتگو است.و مبحاث علمی علاوه بر شما،توسط افراد دیگری که به مشکل برمیخورند،خوانده خواهد شد
--
من تابحال برد، که شما گفته اید،را نداشتم! ولی یک برد STM32f103ret6 از eca خریداری کردم،مشکلی از بابت الکتریسته ساکن نداشتم! ولی یکه بار،ایسی ان سوخت! بخاطره اینکه ولتاژ 12 ولت به اشتباه،به یکی از پایه ها ان دادم! و با تعویض میکروکنترولر ،مشکل برطرف شد.

برد دست ساز،خودم از stm32f030f4 نیز، تابحال مشکل بخصوصی نداشتم،اتفاقا بنظرم،خوب و با دوام هستن! 

شاید میکروهای شما تقلبی بوده اند! و شاید اشکال چیزی دیگری بوده است!  و شاید برد ها شما بد طراحی شده بودند! بهتر است،سعی کنید،از جایی معتبر بردهای خودتان را خریداری کنید!

همچنین اگر احتمال میدهید، الکتریسته ساکن باشد! من فکر میکنم،بهتر است،یک دست بنده،ضد الکتریسته ساکن تهیه کنید، تا مشکل شما نیز برطرف شود.

باتشکر.
"قرآن"(کلام خدا) ...راه سعادت و خوشبختی.

ارسال پست

بازگشت به “میکروکنترلرهای ARM”