Uart working

This commit is contained in:
2024-09-15 19:29:07 +03:00
parent 419c55d807
commit cad6b45c5d
21 changed files with 1187 additions and 697 deletions

View File

@ -23,8 +23,6 @@
/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include "GlobalDefines.h"
#include "usbd_cdc_if.h"
#include "pca9685.h"
#include "IR.h"
@ -34,6 +32,7 @@
#include "SimpleTimer.h"
#include "RobotFunctions.h"
#include "ShiftReg.h"
#include "UART3_Handler.h"
/* USER CODE END Includes */
/* Private typedef -----------------------------------------------------------*/
@ -59,6 +58,7 @@ TIM_HandleTypeDef htim2;
TIM_HandleTypeDef htim3;
UART_HandleTypeDef huart3;
DMA_HandleTypeDef hdma_usart3_rx;
/* USER CODE BEGIN PV */
@ -68,8 +68,6 @@ uint8_t velosety[600];
uint8_t rxcomlite = 0;
uint8_t initcomlete = 0;
uint8_t uart_rx_buffer[UART_BUFFER_SIZE];
unsigned char Shiftreg[3];
uint8_t rejim[60]; // 0 - chislo rejimov, 1-6 - rejim1, 7-12 - rejim2...
@ -84,10 +82,6 @@ uint16_t vi = 0;
uint16_t timing1 = 0;
uint16_t timing2 = 0;
struct Shot BufShots[MAX_NUMBER_SHOTS];
struct Program BufPrograms;
struct Macro BufMacro;
extern PCD_HandleTypeDef hpcd_USB_FS;
/* USER CODE END PV */
@ -95,6 +89,7 @@ extern PCD_HandleTypeDef hpcd_USB_FS;
/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_DMA_Init(void);
static void MX_I2C1_Init(void);
static void MX_TIM1_Init(void);
static void MX_TIM2_Init(void);
@ -126,7 +121,7 @@ int main(void)
HAL_Init();
/* USER CODE BEGIN Init */
HAL_Delay(10);
/* USER CODE END Init */
/* Configure the system clock */
@ -142,10 +137,12 @@ int main(void)
__HAL_RCC_USB_FORCE_RESET();
HAL_Delay(10);
__HAL_RCC_USB_RELEASE_RESET();
HAL_Delay(10);
/* USER CODE END SysInit */
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_DMA_Init();
MX_I2C1_Init();
MX_USB_DEVICE_Init();
MX_TIM1_Init();
@ -153,29 +150,20 @@ int main(void)
MX_TIM3_Init();
MX_USART3_UART_Init();
/* USER CODE BEGIN 2 */
HAL_Delay(10);
__HAL_RCC_USART3_CLK_ENABLE();
HAL_Delay(10);
__HAL_RCC_DMA1_CLK_ENABLE();
HAL_Delay(10);
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_1); //PA8
HAL_TIM_PWM_Start(&htim1, TIM_CHANNEL_2); //PA9
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); //PA0
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_2); //PA1
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_3); //PA2
HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_4); //PA3
initPCA9685();
//BufShots[0].countRepeatShot = 5;
//BufShots[0].speedRollerTop = 120;
//BufShots[0].speedRollerBottom = 130;
//BufShots[0].speedScrew = 50;
//BufShots[0].rotationAxial = 90;
//BufShots[0].rotationHorizontal = 90;
//BufShots[0].rotationVertical = 90;
// SaveShot(0, &BufShots[0]);
// BufShots[1] = GetShot(0);
Shiftreg[0] = 0x00; Shiftreg[1] = 0x44; Shiftreg[2] = 0x00; SetShiftReg(Shiftreg); HAL_Delay(10);
Shiftreg[0] = 0x00; Shiftreg[1] = 0x66; Shiftreg[2] = 0x00; SetShiftReg(Shiftreg); HAL_Delay(10);
@ -198,6 +186,7 @@ initcomlete = 1;
HAL_TIM_Base_Start_IT(&htim3);
HAL_NVIC_EnableIRQ(TIM3_IRQn);
UART3_START();
/* USER CODE END 2 */
@ -226,148 +215,7 @@ initcomlete = 1;
{
IR_CMD_Handler();
// if (rxcomlite == 1)
// {
//
// txdata[0] = 'O';
// txdata[1] = 'K';
// txdata[2] = '?';
//
// switch (rxdata[0])
// {
//
// case 1:
// {
// SetServo(0, rxdata[1]);
// txdata[0] = 'O';
// txdata[1] = 'K';
// txdata[2] = '1';
//// CDC_Transmit_FS(txdata, 3);
// break;
// }
//
// case 2:
// {
// SetServo(1, rxdata[1]);
// txdata[0] = 'O';
// txdata[1] = 'K';
// txdata[2] = '2';
//// CDC_Transmit_FS(txdata, 3);
// break;
// }
//
// case 3:
// {
// SetServo(2, rxdata[1]);
// txdata[0] = 'O';
// txdata[1] = 'K';
// txdata[2] = '3';
//// CDC_Transmit_FS(txdata, 3);
// break;
// }
//
// case 4:
// {
// SetServo(0, rxdata[1]);
// SetServo(1, rxdata[2]);
// SetServo(2, rxdata[3]);
//
// Vz1 = rxdata[4]; // rolic verh 0..200
// Vz2 = rxdata[5]; // rolic niz 0..200
// vi = 0;
//
// // shnek 0..100
// if (rxdata[6] < 101)
// {
// TIM1->CCR1 = 0;
// TIM1->CCR2 = (uint16_t)(40 * rxdata[6]);
// }
// else
// {
// TIM1->CCR1 = 0;
// TIM1->CCR2 = 4000;
// }
//
// txdata[0] = 'O';
// txdata[1] = 'K';
// txdata[2] = '4';
//// CDC_Transmit_FS(txdata, 3);
// break;
// }
//
// case 5:
// {
// txdata[0] = LOBYTE(timing1);
// txdata[1] = HIBYTE(timing1);
//// CDC_Transmit_FS(txdata, 3);
// break;
// }
// case 6:
// {
//// CDC_Transmit_FS(velosety, 600);
// break;
// }
//
// case 7:
// {
// rejim[0] = rxdata[1];
// // copy to buffer
// for (uint8_t i = 0; i < rejim[0]; i++)
// {
// rejim[(i * 6) + 1] = rxdata[(i * 6) + 2];
// rejim[(i * 6) + 2] = rxdata[(i * 6) + 3];
// rejim[(i * 6) + 3] = rxdata[(i * 6) + 4];
// rejim[(i * 6) + 4] = rxdata[(i * 6) + 5];
// rejim[(i * 6) + 5] = rxdata[(i * 6) + 6];
// rejim[(i * 6) + 6] = rxdata[(i * 6) + 7];
// }
// // set rejim #1
// SetServo(0, rejim[1]);
// SetServo(1, rejim[2]);
// SetServo(2, rejim[3]);
// Vz1 = rejim[4];
// Vz2 = rejim[5];
// TIM1->CCR1 = 0;
// TIM1->CCR2 = (uint16_t)(40 * rejim[6]);
// // set avto
// rejim_number = 1;
// avto = 1;
// break;
// }
// case 8:
// { // stop avto
// avto = 0;
// rejim_number = 1;
// // stop mecanics
// SetServo(0, 90);
// SetServo(1, 90);
// SetServo(2, 90);
// Vz1 = 100;
// Vz2 = 100;
// TIM1->CCR1 = 0;
// TIM1->CCR2 = 0;
//
// break;
// }
//
// case 9:
// {
// txdata[0] = avto;
// txdata[1] = rejim_number;
//// CDC_Transmit_FS(txdata, 3);
//
// break;
// }
//
// default:
// break;
// }
//
// rxcomlite = 0;
//
// // // HAL_Delay(1000);
// }
UART3_Handler();
forTimer(blinkTimer, 500)
{
@ -693,7 +541,7 @@ static void MX_USART3_UART_Init(void)
/* USER CODE END USART3_Init 1 */
huart3.Instance = USART3;
huart3.Init.BaudRate = 115200;
huart3.Init.BaudRate = 9600;
huart3.Init.WordLength = UART_WORDLENGTH_8B;
huart3.Init.StopBits = UART_STOPBITS_1;
huart3.Init.Parity = UART_PARITY_NONE;
@ -705,14 +553,30 @@ static void MX_USART3_UART_Init(void)
Error_Handler();
}
/* USER CODE BEGIN USART3_Init 2 */
if (HAL_UART_Receive_IT(&huart3, uart_rx_buffer, UART_BUFFER_SIZE) != HAL_OK)
{
Error_Handler();
}
// if (HAL_UART_Receive_IT(&huart3, uart_rx_buffer, UART_BUFFER_SIZE) != HAL_OK)
// {
// Error_Handler();
// }
/* USER CODE END USART3_Init 2 */
}
/**
* Enable DMA controller clock
*/
static void MX_DMA_Init(void)
{
/* DMA controller clock enable */
__HAL_RCC_DMA1_CLK_ENABLE();
/* DMA interrupt init */
/* DMA1_Channel3_IRQn interrupt configuration */
HAL_NVIC_SetPriority(DMA1_Channel3_IRQn, 2, 0);
HAL_NVIC_EnableIRQ(DMA1_Channel3_IRQn);
}
/**
* @brief GPIO Initialization Function
* @param None
@ -763,10 +627,10 @@ static void MX_GPIO_Init(void)
HAL_GPIO_Init(IR_EXT_GPIO_Port, &GPIO_InitStruct);
/* EXTI interrupt init*/
HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);
HAL_NVIC_SetPriority(EXTI0_IRQn, 7, 0);
HAL_NVIC_EnableIRQ(EXTI0_IRQn);
HAL_NVIC_SetPriority(EXTI1_IRQn, 0, 0);
HAL_NVIC_SetPriority(EXTI1_IRQn, 7, 0);
HAL_NVIC_EnableIRQ(EXTI1_IRQn);
/* USER CODE BEGIN MX_GPIO_Init_2 */