Beruflich Dokumente
Kultur Dokumente
EXAMEN PREVIO
Estudiante: Vladimir Quispe Condori Fecha: 23 / 04 / 2024
Carrera: IMT Asignatura: Microprocesadores II Grupo: A
Docente: Gerson Pérez Villarroel Laboratorio:
Practica N0: 6 Título de la Practica: Comunicación Mediante Interfaz SPI
Firma Estudiante: Firma Docente:
*****************************************************************************
*
* @file : main.c
* @brief : Main program body
*****************************************************************************
*
* @attention
*
*
* This software is licensed under /* USER CODE BEGIN PV */
terms that can be found in the
LICENSE file /* USER CODE END PV */
* in the root directory of this
software component. /* Private function prototypes ----
* If no LICENSE file comes with -----------------------------------
this software, it is provided AS- --------*/
IS. void SystemClock_Config(void);
* static void MX_GPIO_Init(void);
static void MX_SPI1_Init(void);
*********************************** /* USER CODE BEGIN PFP */
*********************************** void lcdWrite4(uint8_t);
******** void lcdCommand(uint8_t cmd);
*/ void lcdData(uint8_t data);
/* USER CODE END Header */ void lcdInit(void);
/* Includes ----------------------- void lcdGotoxy(uint8_t x, uint8_t
----------------------------------- y);
--------*/ void lcdPrint(char * str);
#include "main.h" /* USER CODE END PFP */
HAL_GPIO_WritePin(GPIOA, r = valor[0];
GPIO_PIN_2, GPIO_PIN_SET); r *= r*0.0154;
HAL_Delay(100); r += 62;
v = r;
HAL_SPI_Transmit(&hspi1, v = v<<1;
&comandos[0], 1, HAL_MAX_DELAY); vel[0] = (v)&(0xFF);
vel[1] = 0;
HAL_GPIO_WritePin(GPIOA,
GPIO_PIN_3, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOB,
GPIO_PIN_0, GPIO_PIN_RESET);
HAL_GPIO_WritePin(GPIOB,
GPIO_PIN_1, GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOB,
HAL_Delay(100); GPIO_PIN_1, GPIO_PIN_SET);
HAL_Delay(100);
HAL_SPI_Receive(&hspi1, p, 2,
HAL_MAX_DELAY); HAL_SPI_Transmit(&hspi1,
&comandos[1], 1, HAL_MAX_DELAY);
HAL_GPIO_WritePin(GPIOA,
GPIO_PIN_2, GPIO_PIN_RESET); HAL_SPI_Transmit(&hspi1, &vel[1],
1, HAL_MAX_DELAY);
if(p[0]%2)
a[0] = '5'; HAL_GPIO_WritePin(GPIOB,
else GPIO_PIN_1, GPIO_PIN_RESET);
a[0] = '0';
p[0] = p[0]>>1; lcdCommand(0xC4);
if(p[1]&128) lcdPrint(" ");
sprintf(mensaje, */
"%d", v >> 1); RCC_OscInitStruct.OscillatorType
lcdCommand(0xC4); = RCC_OSCILLATORTYPE_HSI;
lcdPrint(mensaje); RCC_OscInitStruct.HSIState =
RCC_HSI_ON;
r=valor[0];
r *= r*0.0154; RCC_OscInitStruct.HSICalibrationVal
r = 64.0-r; ue = RCC_HSICALIBRATION_DEFAULT;
val = r; RCC_OscInitStruct.PLL.PLLState =
vel[0] = val; RCC_PLL_NONE;
vel[1] = 0; if
vel[0] <<= 1; (HAL_RCC_OscConfig(&RCC_OscInitStru
ct) != HAL_OK)
HAL_GPIO_WritePin(GPIOB, {
GPIO_PIN_0, GPIO_PIN_RESET); Error_Handler();
}
HAL_GPIO_WritePin(GPIOB,
GPIO_PIN_1, GPIO_PIN_SET); /** Initializes the CPU, AHB and
HAL_Delay(50); APB buses clocks
*/
HAL_SPI_Transmit(&hspi1, RCC_ClkInitStruct.ClockType =
&comandos[2], 1, HAL_MAX_DELAY); RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SY
SCLK
HAL_SPI_Transmit(&hspi1, &vel[0],
1, HAL_MAX_DELAY); |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_
PCLK2;
HAL_GPIO_WritePin(GPIOA, RCC_ClkInitStruct.SYSCLKSource =
GPIO_PIN_1, GPIO_PIN_RESET); RCC_SYSCLKSOURCE_HSI;
RCC_ClkInitStruct.AHBCLKDivider =
lcdCommand(0xCB); RCC_SYSCLK_DIV1;
lcdPrint(" "); RCC_ClkInitStruct.APB1CLKDivider
sprintf(mensaje, = RCC_HCLK_DIV1;
"%d", val); RCC_ClkInitStruct.APB2CLKDivider
lcdCommand(0xCB); = RCC_HCLK_DIV1;
lcdPrint(mensaje);
/* USER CODE END WHILE */ if
(HAL_RCC_ClockConfig(&RCC_ClkInitSt
/* USER CODE BEGIN 3 */ ruct, FLASH_LATENCY_0) != HAL_OK)
} {
/* USER CODE END 3 */ Error_Handler();
} }
}
/**
* @brief System Clock /**
Configuration * @brief SPI1 Initialization
* @retval None Function
*/ * @param None
void SystemClock_Config(void) * @retval None
{ */
RCC_OscInitTypeDef static void MX_SPI1_Init(void)
RCC_OscInitStruct = {0}; {
RCC_ClkInitTypeDef
RCC_ClkInitStruct = {0}; /* USER CODE BEGIN SPI1_Init 0 */
__HAL_RCC_GPIOB_CLK_ENABLE(); __HAL_AFIO_REMAP_SPI1_ENABLE();
/**SPI1 GPIO Configuration
PB3 ------> SPI1_SCK /* USER CODE BEGIN SPI1_MspInit 1
PB4 ------> SPI1_MISO */
PB5 ------> SPI1_MOSI
*/ /* USER CODE END SPI1_MspInit 1
GPIO_InitStruct.Pin = */
GPIO_PIN_3|GPIO_PIN_5; }
GPIO_InitStruct.Mode =
GPIO_MODE_AF_PP;
GPIO_InitStruct.Speed =
GPIO_SPEED_FREQ_HIGH;