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