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

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

STM32 not working without JTAG/ STLINK

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

Рейтинг: 5 / 5

Звезда активнаЗвезда активнаЗвезда активнаЗвезда активнаЗвезда активна
If program works under JTAG or STLINK, but flashed MCU not working, problem may lie in RESET signal generation: try to reset MCU manually after power voltage applied and see if the program started to work properly.

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

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

STM32G031: TIM1 PWM LL: exact pulses to generate

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


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
Просмотров: 1001
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна
/* 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
Просмотров: 1012
Звезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активнаЗвезда не активна

  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
  1. STM32G031: LL USART (UART) receive
  2. Kalandra - Bardaginn
  3. Kalandra - Brave New World
  4. Бохиньское озеро. 27 декабря 2023 года. Превосходные пейзажи над озером. Чистая зеркальная вода. 4k видео с дрона.

Страница 28 из 197

  • 23
  • 24
  • ...
  • 26
  • 27
  • 28
  • 29
  • ...
  • 31
  • 32

Back to Top

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

Top.Mail.Ru