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

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

مدیران انجمن: Mahdi Mahdavi, SAMAN, sinaset, شوراي نظارت

ارسال پست

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

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

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

مثال ها با میکروکنترولر 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
نمایه کاربر
پست: 6928
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9170 بار
سپاس‌های دریافتی: 20870 بار
تماس:

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
نمایه کاربر
پست: 6928
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9170 بار
سپاس‌های دریافتی: 20870 بار
تماس:

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
نمایه کاربر
پست: 6928
تاریخ عضویت: سه شنبه 26 آذر 1387, 4:20 pm
سپاس‌های ارسالی: 9170 بار
سپاس‌های دریافتی: 20870 بار
تماس:

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

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

ارسال پست

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