راه اندازی واحد سریال ARM

واحد سریالARM


خلاصه

در این آموزش با واحد سریال USART میکروکنترلر آشنا می شویم و داده هایی را از میکروکنترلر به رایانه ارسال می کنیم، همچنین داده هایی از سمت رایانه به میکروکنترلر ارسال می کنیم و با پروسس این داده ها، LED های برد آموزشی را کنترل می کنیم. به عنوان مثال اگر عبارت 1 از رایانه دریافت شود LED اول برد آموزشی را روشن می کنیم و به همین ترتیب…


مشاهده ویدیو


ایجاد پروژه در نرم افزار کیوب


انتخاب پین های متناسب با LED ها و واحد سریال برد آموزشی به همراه کریستال خارجی و پورت دیباگ



انجام تنظیمات مربوط به واحد سریال


 



در نرم افزار Keil می توان از قسمت Application/User به برنامه اصلی دسترسی داشت



تشریح کد برنامه


هدرفایل های مورد نیاز پروژه


[pastacode lang=”c” manual=”%2F*%20Includes%20——————————————————————*%2F%0A%23include%20%22main.h%22%0A%23include%20%22stm32f1xx_hal.h%22″ message=”” highlight=”” provider=”manual”/]


پیش تعریف توابع ایجاد شده توسط نرم افزار کیوب


[pastacode lang=”c” manual=”%2F*%20Private%20function%20prototypes%20———————————————–*%2F%0Avoid%20SystemClock_Config(void)%3B%0Astatic%20void%20MX_GPIO_Init(void)%3B%0Astatic%20void%20MX_USART2_UART_Init(void)%3B” message=”” highlight=”” provider=”manual”/]


متغیرهای مورد استفاده در برنامه


[pastacode lang=”c” manual=”%2F*%20Private%20variables%20———————————————————*%2F%0AUART_HandleTypeDef%20huart2%3B%0A%0A%2F*%20USER%20CODE%20BEGIN%20PV%20*%2F%0A%2F*%20Private%20variables%20———————————————————*%2F%0Achar%20rx_Buffer%20%5B10%5D%3B%0A%2F*%20USER%20CODE%20END%20PV%20*%2F” message=”” highlight=”” provider=”manual”/]


جزئیات تابع MX_GPIO_Init


[pastacode lang=”c” manual=”%2F**%20Configure%20pins%20as%20%0A%20%20%20%20%20%20%20%20*%20Analog%20%0A%20%20%20%20%20%20%20%20*%20Input%20%0A%20%20%20%20%20%20%20%20*%20Output%0A%20%20%20%20%20%20%20%20*%20EVENT_OUT%0A%20%20%20%20%20%20%20%20*%20EXTI%0A*%2F%0Astatic%20void%20MX_GPIO_Init(void)%0A%7B%0A%0A%20%20GPIO_InitTypeDef%20GPIO_InitStruct%3B%0A%0A%20%20%2F*%20GPIO%20Ports%20Clock%20Enable%20*%2F%0A%20%20__HAL_RCC_GPIOC_CLK_ENABLE()%3B%0A%20%20__HAL_RCC_GPIOA_CLK_ENABLE()%3B%0A%20%20__HAL_RCC_GPIOD_CLK_ENABLE()%3B%0A%0A%20%20%2F*Configure%20GPIO%20pin%20Output%20Level%20*%2F%0A%20%20HAL_GPIO_WritePin(GPIOC%2C%20GPIO_PIN_2%7CGPIO_PIN_3%7CGPIO_PIN_4%7CGPIO_PIN_5%2C%20GPIO_PIN_RESET)%3B%0A%0A%20%20%2F*Configure%20GPIO%20pins%20%3A%20PC2%20PC3%20PC4%20PC5%20*%2F%0A%20%20GPIO_InitStruct.Pin%20%3D%20GPIO_PIN_2%7CGPIO_PIN_3%7CGPIO_PIN_4%7CGPIO_PIN_5%3B%0A%20%20GPIO_InitStruct.Mode%20%3D%20GPIO_MODE_OUTPUT_PP%3B%0A%20%20GPIO_InitStruct.Speed%20%3D%20GPIO_SPEED_FREQ_LOW%3B%0A%20%20HAL_GPIO_Init(GPIOC%2C%20%26GPIO_InitStruct)%3B%0A%0A%7D” message=”” highlight=”” provider=”manual”/]


جزئیات تابع MX_USART2_UART_Init


[pastacode lang=”c” manual=”%0A%2F*%20USART2%20init%20function%20*%2F%0Astatic%20void%20MX_USART2_UART_Init(void)%0A%7B%0A%0A%20%20huart2.Instance%20%3D%20USART2%3B%0A%20%20huart2.Init.BaudRate%20%3D%20115200%3B%0A%20%20huart2.Init.WordLength%20%3D%20UART_WORDLENGTH_8B%3B%0A%20%20huart2.Init.StopBits%20%3D%20UART_STOPBITS_1%3B%0A%20%20huart2.Init.Parity%20%3D%20UART_PARITY_NONE%3B%0A%20%20huart2.Init.Mode%20%3D%20UART_MODE_TX_RX%3B%0A%20%20huart2.Init.HwFlowCtl%20%3D%20UART_HWCONTROL_NONE%3B%0A%20%20huart2.Init.OverSampling%20%3D%20UART_OVERSAMPLING_16%3B%0A%20%20if%20(HAL_UART_Init(%26huart2)%20!%3D%20HAL_OK)%0A%20%20%7B%0A%20%20%20%20_Error_Handler(__FILE__%2C%20__LINE__)%3B%0A%20%20%7D%0A%0A%7D” message=”” highlight=”” provider=”manual”/]


تابع main


[pastacode lang=”c” manual=”int%20main(void)%0A%7B%0A%0A%20%20%2F*%20USER%20CODE%20BEGIN%201%20*%2F%0A%0A%20%20%2F*%20USER%20CODE%20END%201%20*%2F%0A%0A%20%20%2F*%20MCU%20Configuration———————————————————-*%2F%0A%0A%20%20%2F*%20Reset%20of%20all%20peripherals%2C%20Initializes%20the%20Flash%20interface%20and%20the%20Systick.%20*%2F%0A%20%20HAL_Init()%3B%0A%0A%20%20%2F*%20USER%20CODE%20BEGIN%20Init%20*%2F%0A%0A%20%20%2F*%20USER%20CODE%20END%20Init%20*%2F%0A%0A%20%20%2F*%20Configure%20the%20system%20clock%20*%2F%0A%20%20SystemClock_Config()%3B%0A%0A%20%20%2F*%20USER%20CODE%20BEGIN%20SysInit%20*%2F%0A%0A%20%20%2F*%20USER%20CODE%20END%20SysInit%20*%2F%0A%0A%20%20%2F*%20Initialize%20all%20configured%20peripherals%20*%2F%0A%20%20MX_GPIO_Init()%3B%0A%20%20MX_USART2_UART_Init()%3B%0A%0A%20%20%2F*%20USER%20CODE%20BEGIN%202%20*%2F%0A%09HAL_UART_Transmit(%26huart2%2C(uint8_t%20*)%22Success%22%2C7%2C10)%3B%0A%20%20%2F*%20USER%20CODE%20END%202%20*%2F” message=”” highlight=”” provider=”manual”/]


روتین اجرای برنامه

[pastacode lang=”c” manual=”%20%20%2F*%20Infinite%20loop%20*%2F%0A%20%20%2F*%20USER%20CODE%20BEGIN%20WHILE%20*%2F%0A%20%20while%20(1)%0A%20%20%7B%0A%20%20%2F*%20USER%20CODE%20END%20WHILE%20*%2F%0A%0A%20%20%2F*%20USER%20CODE%20BEGIN%203%20*%2F%0A%09HAL_UART_Receive(%26huart2%2C(uint8_t%20*)%20rx_Buffer%2C10%2C10)%3B%0A%09switch%20(%09rx_Buffer%5B0%5D%20)%7B%0A%09%09case%20’1’%20%3A%20HAL_GPIO_TogglePin(GPIOC%2CGPIO_PIN_2)%3B%0A%09%09%09break%3B%0A%09%09case%20’2’%20%3A%20HAL_GPIO_TogglePin(GPIOC%2CGPIO_PIN_3)%3B%0A%09%09%09break%3B%0A%09%09case%20’3’%20%3A%20HAL_GPIO_TogglePin(GPIOC%2CGPIO_PIN_4)%3B%0A%09%09%09break%3B%0A%09%09case%20’4’%20%3A%20HAL_GPIO_TogglePin(GPIOC%2CGPIO_PIN_5)%3B%0A%09%09%09break%3B%0A%09%7D%0A%20%20%7D%0A%20%20%2F*%20USER%20CODE%20END%203%20*%2F” message=”” highlight=”” provider=”manual”/]


پروژه سریال

کانال تلگرام نامینیک

گروه تلگرام نامینیک ARM STM32


Tags: , , , , , ,