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

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


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

تشریح کد برنامه
هدرفایل های مورد نیاز پروژه
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "stm32f1xx_hal.h"
پیش تعریف توابع ایجاد شده توسط نرم افزار کیوب
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_USART2_UART_Init(void);
متغیرهای مورد استفاده در برنامه
/* Private variables ---------------------------------------------------------*/
UART_HandleTypeDef huart2;
/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/
char rx_Buffer [10];
/* USER CODE END PV */
جزئیات تابع MX_GPIO_Init
/** Configure pins as
* Analog
* Input
* Output
* EVENT_OUT
* EXTI
*/
static void MX_GPIO_Init(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
/* GPIO Ports Clock Enable */
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOD_CLK_ENABLE();
/*Configure GPIO pin Output Level */
HAL_GPIO_WritePin(GPIOC, GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5, GPIO_PIN_RESET);
/*Configure GPIO pins : PC2 PC3 PC4 PC5 */
GPIO_InitStruct.Pin = GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|GPIO_PIN_5;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
HAL_GPIO_Init(GPIOC, &GPIO_InitStruct);
}
جزئیات تابع MX_USART2_UART_Init
/* USART2 init function */
static void MX_USART2_UART_Init(void)
{
huart2.Instance = USART2;
huart2.Init.BaudRate = 115200;
huart2.Init.WordLength = UART_WORDLENGTH_8B;
huart2.Init.StopBits = UART_STOPBITS_1;
huart2.Init.Parity = UART_PARITY_NONE;
huart2.Init.Mode = UART_MODE_TX_RX;
huart2.Init.HwFlowCtl = UART_HWCONTROL_NONE;
huart2.Init.OverSampling = UART_OVERSAMPLING_16;
if (HAL_UART_Init(&huart2) != HAL_OK)
{
_Error_Handler(__FILE__, __LINE__);
}
}
تابع main
int main(void)
{
/* USER CODE BEGIN 1 */
/* USER CODE END 1 */
/* MCU Configuration----------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
/* USER CODE BEGIN SysInit */
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USART2_UART_Init();
/* USER CODE BEGIN 2 */
HAL_UART_Transmit(&huart2,(uint8_t *)"Success",7,10);
/* USER CODE END 2 */
روتین اجرای برنامه
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
/* USER CODE BEGIN 3 */
HAL_UART_Receive(&huart2,(uint8_t *) rx_Buffer,10,10);
switch ( rx_Buffer[0] ){
case '1' : HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_2);
break;
case '2' : HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_3);
break;
case '3' : HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_4);
break;
case '4' : HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_5);
break;
}
}
/* USER CODE END 3 */
پروژه سریال
کانال تلگرام نامینیک
گروه تلگرام نامینیک ARM STM32
نظر بدهید