step motor turns, minimal example
This commit is contained in:
		
							
								
								
									
										31
									
								
								Src/main.c
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								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 */
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user