From 97c86af4b71a6b912fcb9b66d45e5a203fc61161 Mon Sep 17 00:00:00 2001 From: Eggert Jung Date: Fri, 2 May 2025 02:00:51 +0200 Subject: [PATCH] step motor turns, minimal example --- Src/main.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/Src/main.c b/Src/main.c index 05407ca..7ab808f 100644 --- a/Src/main.c +++ b/Src/main.c @@ -145,6 +145,7 @@ void USART1_IRQHandler(){ } if(USART1->ISR & USART_ISR_FE){ + //TODO read rx==0 USART1->ICR = USART_ICR_FECF; //if(rxBufferPos != 514) // printf("FE after %d\n",rxBufferPos); @@ -182,6 +183,27 @@ void DMA1_Channel1_IRQHandler(){ SEGGER_SYSVIEW_PrintfHost("DMA"); SEGGER_SYSVIEW_RecordExitISR(); } + +void init_stepper(){ + RCC->IOPENR |= RCC_IOPENR_GPIOBEN; + RCC->IOPENR |= RCC_IOPENR_GPIOCEN; + RCC->IOPENR |= RCC_IOPENR_GPIOEEN; + + // Set to output (00: Input, 01: Output, 10: Alternate function, 11: Analog) + // PB4 Direction + GPIOB->MODER &= ~(0x3 << (4 * 2)); // Clear mode bits for PB4 + GPIOB->MODER |= (0x1 << (4 * 2)); // Set mode to output for PB4 + + // PC11 Enable + GPIOC->MODER &= ~(0x3 << (11 * 2)); // Clear mode bits for PC11 + GPIOC->MODER |= (0x1 << (11 * 2)); // Set mode to output for PC11 + + // PE2 Step + GPIOE->MODER &= ~(0x3 << (2 * 2)); // Clear mode bits for PE2 + GPIOE->MODER |= (0x1 << (2 * 2)); // Set mode to output for PE2 + + GPIOC->BSRR |= GPIO_BSRR_BS11; +} /* USER CODE END 0 */ /** @@ -190,9 +212,8 @@ void DMA1_Channel1_IRQHandler(){ */ int main(void) { - /* USER CODE BEGIN 1 */ - /* USER CODE END 1 */ + /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ @@ -218,11 +239,13 @@ int main(void) MX_GPIO_Init(); /* USER CODE BEGIN 2 */ init_UART1_dma(); + init_stepper(); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ //HAL_UART_Receive_DMA(&huart1, rxBuffer, BUFFER_SIZE); + uint16_t cnt = 0; while (1) { printf("buf: "); @@ -230,6 +253,10 @@ int main(void) printf("0x%02X ", rxBuffer[i]); printf("\n"); SEGGER_SYSVIEW_OnIdle(); + if(cnt++ >= 260-rxBuffer[1]){ + cnt = 0; + GPIOE->ODR ^= GPIO_ODR_OD2; + } /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */