Заметки электроника
Простое - надёжнее!
Меню
  • Главная
  • Погода
  • Заметки
  • Календарь
  • Фотогалерея
  • Песни
  • Чтиво
  • Программы
  • Скачать
  • Связь и ссылки
  • Чехия
  • Lavka

Живёшь в Чехии?

Step motor wires/ шаговый мотор - провода, A+, A-, B+, B-, A1, A2, B1, B2

  • Печать
  • E-mail
Информация о материале
Автор: Super User
Родительская категория: Заметки
Категория: Электроника / cхемотехника
Создано: 24 января 2024
Обновлено: 24 января 2024
Просмотров: 704
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна

STM32G031: TIM1 PWM LL: exact pulses to generate

  • Печать
  • E-mail
Информация о материале
Автор: Super User
Родительская категория: Заметки
Категория: Программирование микроконтроллеров
Создано: 23 января 2024
Обновлено: 23 января 2024
Просмотров: 627
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна


void runCmdFromUart(void){
  uint32_t frequency = 0;
  uint32_t ARR_reg_val = 0;
  uint32_t PSC_reg_val = 7;
  static uint32_t pulses = 1000; //im ms
  
  if(receiveBuffer[0] == 'f'){ //frequency
    frequency += (receiveBuffer[1] - 0x30) *100000;
    frequency += (receiveBuffer[2] - 0x30) *10000;
    frequency += (receiveBuffer[3] - 0x30) *1000;
    frequency += (receiveBuffer[4] - 0x30) *100;
    frequency += (receiveBuffer[5] - 0x30) *10;
    frequency += receiveBuffer[6] - 0x30;
   if(frequency > 10000) 
     PSC_reg_val = 0;
   else
     if(frequency > 100)
     PSC_reg_val = 7;
     else
     PSC_reg_val = 4095;
   
  ARR_reg_val = (BASE_FREQ/(PSC_reg_val+1))/frequency;
  LL_TIM_WriteReg(TIM1, PSC, PSC_reg_val);
  LL_TIM_WriteReg(TIM1, ARR, ARR_reg_val);
  
  CountTim1P = pulses-1;
  LL_TIM_WriteReg(TIM1, CCR1, 0);
  LL_TIM_OC_SetCompareCH4(TIM1, (ARR_reg_val/2)); //50% PWM, 100 kHz
  
  
  
  }
  if(receiveBuffer[0] == 'd'){
    if(receiveBuffer[1] == '1')
      LL_GPIO_ResetOutputPin(DIR_GPIO_Port,DIR_Pin);
    else
      if(receiveBuffer[1] == '0')
        LL_GPIO_SetOutputPin(DIR_GPIO_Port,DIR_Pin);
  }
  if(receiveBuffer[0] == 'e'){
    if(receiveBuffer[1] == '1')
      LL_GPIO_ResetOutputPin(ENABLE_GPIO_Port,ENABLE_Pin);
    else
      if(receiveBuffer[1] == '0')
        LL_GPIO_SetOutputPin(ENABLE_GPIO_Port,ENABLE_Pin);
  }
  if(receiveBuffer[0] == 'p'){ //pulses
   pulses = 0;
   pulses += (receiveBuffer[1] - 0x30) *100000000;
   pulses += (receiveBuffer[2] - 0x30) *10000000;
   pulses += (receiveBuffer[3] - 0x30) *1000000;
   pulses += (receiveBuffer[4] - 0x30) *100000;
   pulses += (receiveBuffer[5] - 0x30) *10000;
   pulses += (receiveBuffer[6] - 0x30) *1000;
   pulses += (receiveBuffer[7] - 0x30) *100;
   pulses += (receiveBuffer[8] - 0x30) *10;
   pulses += receiveBuffer[9] - 0x30;
  }

}

void TIM1_CC_IRQHandler(void)
{
  /* USER CODE BEGIN TIM1_CC_IRQn 0 */

  /* USER CODE END TIM1_CC_IRQn 0 */
  /* USER CODE BEGIN TIM1_CC_IRQn 1 */
  LL_TIM_ClearFlag_CC1(TIM1);
  if(CountTim1P)
    CountTim1P--;
  else 
    LL_TIM_OC_SetCompareCH4(TIM1, 0xFFFF);
  /* USER CODE END TIM1_CC_IRQn 1 */
}

 

STM32G031 LL library: freq. for control step motor appx. fast setup

  • Печать
  • E-mail
Информация о материале
Автор: Super User
Родительская категория: Заметки
Категория: Программирование микроконтроллеров
Создано: 23 января 2024
Обновлено: 23 января 2024
Просмотров: 661
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
/* USER CODE BEGIN 0 */
uint8_t receiveBuffer[BUFFER_UART_LEN];
#define BASE_FREQ 16000000

void runCmdFromUart(void){
  uint32_t frequency = 0;
  uint32_t ARR_reg_val = 0;
  uint32_t PSC_reg_val = 7;
  
  if(receiveBuffer[0] == 'f'){ //frequency
    frequency += (receiveBuffer[1] - 0x30) *100000;
    frequency += (receiveBuffer[2] - 0x30) *10000;
    frequency += (receiveBuffer[3] - 0x30) *1000;
    frequency += (receiveBuffer[4] - 0x30) *100;
    frequency += (receiveBuffer[5] - 0x30) *10;
    frequency += receiveBuffer[6] - 0x30;
   if(frequency > 10000) 
     PSC_reg_val = 0;
   else
     if(frequency > 100)
     PSC_reg_val = 7;
     else
     PSC_reg_val = 4095;
   
  ARR_reg_val = (BASE_FREQ/(PSC_reg_val+1))/frequency;
  LL_TIM_WriteReg(TIM1, PSC, PSC_reg_val);
  LL_TIM_WriteReg(TIM1, ARR, ARR_reg_val);
  LL_TIM_OC_SetCompareCH4(TIM1, (ARR_reg_val/2)); //50% PWM, 100 kHz
  }

}
/* USER CODE END 0 */


 

STM32G031: LL HAL: enabling PWM on CH4 TIM1

  • Печать
  • E-mail
Информация о материале
Автор: Super User
Родительская категория: Заметки
Категория: Программирование микроконтроллеров
Создано: 22 января 2024
Обновлено: 22 января 2024
Просмотров: 638
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна

  TIM1->BDTR |=(TIM_BDTR_MOE); // needed, see http://efton.sk/STM32/gotcha/g3.html
  LL_TIM_EnableCounter(TIM1);
  LL_TIM_CC_EnableChannel(TIM1, LL_TIM_CHANNEL_CH4);
  
  LL_TIM_OC_SetCompareCH4(TIM1, 500); //50% PWM

STM32G031: LL USART (UART) receive

  • Печать
  • E-mail
Информация о материале
Автор: Super User
Родительская категория: Заметки
Категория: Программирование микроконтроллеров
Создано: 22 января 2024
Обновлено: 22 января 2024
Просмотров: 740
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
in main.c:
/* USER CODE BEGIN 0 */
uint8_t receiveBuffer[6];
uint8_t cmdReceived = 0;
/* USER CODE END 0 */

...............

  MX_USART1_UART_Init();
  MX_TIM1_Init();
  /* USER CODE BEGIN 2 */
  LL_USART_EnableIT_RXNE(USART1);
  LL_USART_EnableIT_ERROR(USART1);
  /* USER CODE END 2 */

/* USER CODE BEGIN 4 */

void USART_CharReception_Callback(void){
  static int bytes = 0;
  uint8_t received_char;
  
  received_char = LL_USART_ReceiveData8(USART1);
  if(received_char == '@'){
      bytes = 0;
      cmdReceived = 1;
  }
  else{
    receiveBuffer[bytes] = received_char;
    bytes++;
  }
    
  
  if (bytes == sizeof(receiveBuffer)){
    bytes = 0;
    cmdReceived = 1;
  }
 
    

}

/* USER CODE END 4 */

In stm32g0xx_it.c:
/**
  * @brief This function handles USART1 global interrupt / USART1 wake-up interrupt through EXTI line 25.
  */
void USART1_IRQHandler(void)
{
  /* USER CODE BEGIN USART1_IRQn 0 */
  USART_CharReception_Callback();
  /* USER CODE END USART1_IRQn 0 */
  /* USER CODE BEGIN USART1_IRQn 1 */

  /* USER CODE END USART1_IRQn 1 */
}
  1. Kalandra - Bardaginn
  2. Kalandra - Brave New World
  3. Бохиньское озеро. 27 декабря 2023 года. Превосходные пейзажи над озером. Чистая зеркальная вода. 4k видео с дрона.
  4. Vogel. Бохиньское озеро. Словения. Полет дрона в формате 4k в горах. Вид на сам пик Триглав. Дек. 2023

Страница 24 из 193

  • 19
  • ...
  • 21
  • 22
  • 23
  • 24
  • ...
  • 26
  • 27
  • 28

Back to Top

© 2025 Заметки электроника

Top.Mail.Ru