Перейти к содержанию

STM32 для чайника


ART_ME

Рекомендуемые сообщения

1 час назад, Aleх сказал:

С чего бы вдруг, если в кубе всё понятно даже новичку и делается всё в пару кликов мыши ? 

Даже интересно стало - кто, где и когда такое сказал? С цитатой, конечно.

Ишь, чайник, падла, посмел задать чайниковский вопрос в теме для чайников! Ату его!

Вы вообще себя слышите?

Ссылка на комментарий
Поделиться на другие сайты

Если честно, не очень хочется перелопачивать темы в форуме, чтобы доказать пиар куба как стартап для начинающего.
Если попадётся на глаза пост, я обязательно его сюда процитирую.
 

Ссылка на комментарий
Поделиться на другие сайты

Вопрос по Кубу: а Куб не прописывает альтернативные функции выводам что ли? Перенёс вход TIM_CH1 c PA0 на PA15 и не вижу где это отражено в сгенерированном коде.

Ссылка на комментарий
Поделиться на другие сайты

Сравнительное тестирование аккумуляторов EVE Energy и Samsung типоразмера 18650

Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650. 

Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

11 минуту назад, Darth_Vader сказал:

Перенёс вход TIM_CH1 c PA0 на PA15 и не вижу где это отражено в сгенерированном коде.

На 103CB ?

 

 

Цитата

Bits 7:6 TIM1_REMAP[1:0]: TIM1 remapping
These bits are set and cleared by software. They control the mapping of TIM1 channels 1 to
4, 1N to 3N, external trigger (ETR) and Break input (BKIN) on the GPIO ports.
00: No remap (ETR/PA12, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PB12,
CH1N/PB13, CH2N/PB14, CH3N/PB15)
01: Partial remap (ETR/PA1 2, CH1/PA8, CH2/PA9, CH3/PA10, CH4/PA11, BKIN/PA6,
CH1N/PA7, CH2N/PB0, CH3N/PB1)
10: not used
11: Full remap (ETR/PE7, CH1/PE9, CH2/PE11, CH3/PE13, CH4/PE14, BKIN/PE15,
CH1N/PE8, CH2N/PE10, CH3N/PE12)

 

Ссылка на комментарий
Поделиться на другие сайты

Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. 

Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств. Подробнее параметры и результаты тестов новой серии PLM по ссылке.

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Литиевые батарейки и аккумуляторы от мирового лидера  EVE в Компэл

Компания Компэл, официальный дистрибьютор EVE Energy, бренда №1 по производству химических источников тока (ХИТ) в мире, предлагает продукцию EVE как со склада, так и под заказ. Компания EVE широко известна в странах Европы, Америки и Юго-Восточной Азии уже более 20 лет. Недавно EVE была объявлена поставщиком новых аккумуляторных элементов круглого формата для электрических моделей «нового класса» компании BMW.

Продукция EVE предназначена для самого широкого спектра применений – от бытового до промышленного. Подробнее>>

Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161

Опечатался - TIM2_CH1

Только что, dosikus сказал:

Читайте выше - что куда ремапится в 103ьих. Если ваш калокуб сотворит чудо

А с чего вы взяли, что опечатка TIM_CH1 значит именно TIM1_CH1? :D

Ссылка на комментарий
Поделиться на другие сайты

 

Цитата

Bits 9:8 TIM2_REMAP[1:0]: TIM2 remapping
These bits are set and cleared by software. They control the mapping of TIM2 channels 1 to
4 and external trigger (ETR) on the GPIO ports.
00: No remap (CH1/ETR/PA0, CH2/PA1, CH3/PA2, CH4/PA3)
01: Partial remap (CH1/ETR/PA15, CH2/PB3, CH3/PA2, CH4/PA3)
10: Partial remap (CH1/ETR/PA0, CH2/PA1, CH3/PB10, CH4/PB11)
11: Full remap (CH1/ETR/PA15, CH2/PB3, CH3/PB10, CH4/PB11)

 

Ссылка на комментарий
Поделиться на другие сайты

33 минуты назад, dosikus сказал:

Добавлю только то, что для AFIO надо тактирование включать ...

__HAL_RCC_AFIO_CLK_ENABLE() вызывается в HAL_Init(), точнее в HAL_MspInit()

Ссылка на комментарий
Поделиться на другие сайты

В чем проблема-то ?

Берем отладчик и смотрим что и как конфигурируется. Одно только -дебажить простыни калокуба еще то " удовольствие", в отличии от меняемого кода. 

Ах да, для этого же надо знать периферию. :)

Изменено пользователем dosikus
Ссылка на комментарий
Поделиться на другие сайты

Проблема в том, что я и отладочная плата территориально в разных местах сейчас. До компа с Cube и Keil дотягиваюсь TeamViewer'ом :D А вот провода перекинуть ручек квалифицированных нет.

1 час назад, dosikus сказал:

Ах да, для этого же надо знать периферию.

Прикинь, да, я не знаю. Я только начал разбираться. Ужасный грех, не правда ли?

Ссылка на комментарий
Поделиться на другие сайты

6 часов назад, Aleх сказал:

Некий субъект "A" нахваливает его как отличное средство для новичка, которому чуть ли даже документацию не нужно читать.

кмк, субьект А рекламирует вовсе не куб, а HAL. И рекомендует новичкам делать упор именно на его возможности, а остальное уже с опытом и в качестве факультатива. Просто у нас привыкли от чего то ассоциировать автоматически HAL с кубом, хотя общего между ними по сути ничего.

А читать мануалки то все равно придется. Только в одном случае ты прочитал их один раз и достаточно, а в другом приходится в них жить при идентичном результате на выходе

Изменено пользователем mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

 

Гуру, подскажите - я в этом коде в упор не вижу переназначения выхода TIM2_CH1 c PA0 на PA15.

А он есть, как суслик! Светик исправно моргает.
 

Скрытый текст



/**
  ******************************************************************************
  * File Name          : main.c
  * Description        : Main program body
  ******************************************************************************
  ** This notice applies to any and all portions of this file
  * that are not between comment pairs USER CODE BEGIN and
  * USER CODE END. Other portions of this file, whether 
  * inserted by the user or by software development tools
  * are owned by their respective copyright owners.
  *
  * COPYRIGHT(c) 2017 STMicroelectronics
  *
  * Redistribution and use in source and binary forms, with or without modification,
  * are permitted provided that the following conditions are met:
  *   1. Redistributions of source code must retain the above copyright notice,
  *      this list of conditions and the following disclaimer.
  *   2. Redistributions in binary form must reproduce the above copyright notice,
  *      this list of conditions and the following disclaimer in the documentation
  *      and/or other materials provided with the distribution.
  *   3. Neither the name of STMicroelectronics nor the names of its contributors
  *      may be used to endorse or promote products derived from this software
  *      without specific prior written permission.
  *
  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  *
  ******************************************************************************
  */
/* Includes ------------------------------------------------------------------*/
#include "main.h"
#include "stm32f1xx_hal.h"

/* USER CODE BEGIN Includes */

/* USER CODE END Includes */

/* Private variables ---------------------------------------------------------*/
TIM_HandleTypeDef htim2;

/* USER CODE BEGIN PV */
/* Private variables ---------------------------------------------------------*/

/* USER CODE END PV */

/* Private function prototypes -----------------------------------------------*/
void SystemClock_Config(void);
static void MX_GPIO_Init(void);
static void MX_TIM2_Init(void);                                    
void HAL_TIM_MspPostInit(TIM_HandleTypeDef *htim);
                                

/* USER CODE BEGIN PFP */
/* Private function prototypes -----------------------------------------------*/

/* USER CODE END PFP */

/* USER CODE BEGIN 0 */

/* USER CODE END 0 */

int main(void)
{

  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration----------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_TIM2_Init();

  /* USER CODE BEGIN 2 */
	HAL_TIM_OC_Start(&htim2, TIM_CHANNEL_1);
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */

  }
  /* USER CODE END 3 */

}

/** System Clock Configuration
*/
void SystemClock_Config(void)
{

  RCC_OscInitTypeDef RCC_OscInitStruct;
  RCC_ClkInitTypeDef RCC_ClkInitStruct;

    /**Initializes the CPU, AHB and APB busses clocks 
    */
  RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI;
  RCC_OscInitStruct.HSIState = RCC_HSI_ON;
  RCC_OscInitStruct.HSICalibrationValue = 16;
  RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
  if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

    /**Initializes the CPU, AHB and APB busses clocks 
    */
  RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK
                              |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2;
  RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI;
  RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1;
  RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1;

  if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_0) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

    /**Configure the Systick interrupt time 
    */
  HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000);

    /**Configure the Systick 
    */
  HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);

  /* SysTick_IRQn interrupt configuration */
  HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0);
}

/* TIM2 init function */
static void MX_TIM2_Init(void)
{

  TIM_MasterConfigTypeDef sMasterConfig;
  TIM_OC_InitTypeDef sConfigOC;

  htim2.Instance = TIM2;
  htim2.Init.Prescaler = 7999;
  htim2.Init.CounterMode = TIM_COUNTERMODE_UP;
  htim2.Init.Period = 499;
  htim2.Init.ClockDivision = TIM_CLOCKDIVISION_DIV1;
  if (HAL_TIM_OC_Init(&htim2) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

  sMasterConfig.MasterOutputTrigger = TIM_TRGO_RESET;
  sMasterConfig.MasterSlaveMode = TIM_MASTERSLAVEMODE_DISABLE;
  if (HAL_TIMEx_MasterConfigSynchronization(&htim2, &sMasterConfig) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

  sConfigOC.OCMode = TIM_OCMODE_TOGGLE;
  sConfigOC.Pulse = 0;
  sConfigOC.OCPolarity = TIM_OCPOLARITY_LOW;
  sConfigOC.OCFastMode = TIM_OCFAST_DISABLE;
  if (HAL_TIM_OC_ConfigChannel(&htim2, &sConfigOC, TIM_CHANNEL_1) != HAL_OK)
  {
    _Error_Handler(__FILE__, __LINE__);
  }

  HAL_TIM_MspPostInit(&htim2);

}

/** Configure pins as 
        * Analog 
        * Input 
        * Output
        * EVENT_OUT
        * EXTI
*/
static void MX_GPIO_Init(void)
{

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOA_CLK_ENABLE();

}

/* USER CODE BEGIN 4 */

/* USER CODE END 4 */

/**
  * @brief  This function is executed in case of error occurrence.
  * @param  None
  * @retval None
  */
void _Error_Handler(char * file, int line)
{
  /* USER CODE BEGIN Error_Handler_Debug */
  /* User can add his own implementation to report the HAL error return state */
  while(1) 
  {
  }
  /* USER CODE END Error_Handler_Debug */ 
}

#ifdef USE_FULL_ASSERT

/**
   * @brief Reports the name of the source file and the source line number
   * where the assert_param error has occurred.
   * @param file: pointer to the source file name
   * @param line: assert_param error line source number
   * @retval None
   */
void assert_failed(uint8_t* file, uint32_t line)
{
  /* USER CODE BEGIN 6 */
  /* User can add his own implementation to report the file name and line number,
    ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
  /* USER CODE END 6 */

}

#endif

/**
  * @}
  */ 

/**
  * @}
*/ 

/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/

 

 


 

 

Ссылка на комментарий
Поделиться на другие сайты

HAL_Init()    в студию ...

И непонятно чему ты удивляешься/радуешься  - это не весь код , там тянуться тонны г.кода...

 

51 минуту назад, mail_robot сказал:

субьект А рекламирует вовсе не куб, а HAL

Ссущаямышь рекламирует ардуино стайл - тыкай не думая

51 минуту назад, mail_robot сказал:

хотя общего между ними по сути ничего.

Ой ли ? Теперь  начинаем изварачиваться аки глист?

Ссылка на комментарий
Поделиться на другие сайты

@Darth_Vader а в MX_ инитках ремапа и не будет. Смотри инитки с постфиксом _MspInit

файл stm32f1xx_hal_msp.c в проекте

Изменено пользователем mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

это не хидер. Это один из трех (минимально) файлов проекта. Третий будет содержать тексты прерываний. Можно еще поставить галку - выделить пару c/h под каждый блок периферии и вся конфигурашка каждого модуля выделится в отдельные файлы. Так удобно писать когда прога большого объема, но если ты при этом хорошо ориентируешься в областях видимости и понимаешь смысл директивы типа extern и подобных. Иначе можешь налипнуть

Изменено пользователем mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

там если один раз разобраться внимательно, то будет вообще все понятно где что и на каком месте стоит. И оно всегда именно там и будет без всякого быдлокодинга, что очень удобно и позволяет с легкостью читать сторонний код в том же формате.

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

Сидел на AVR решил перейти на STM-32, а именно для начала взял самую дешевую платку на STM32F103C8T6, но мне чето не понятно почему в даташите на него нет вообще ни примеров кусков кода на С, ни описания всех регистров, для настройки того же АЦП USART SPI I2C, и т.д., STM32cube то конечно хорошо, но хотелось бы знать за что каждый бит в регистре отвечает, и чтобюы это было в даташите от производителя, вот на AVR на каждый МК в даташите полностью все регистры и биты прописаны, и примеры куски кодов на С и ассемблере, или никто из разработчиков не заморачивается так как есть STM32cube? В cube поначалу не совсем привычно было, но сравнивая с codevision вроде и не сложно, была бы еще картинка конфигурации расписана которая кубе, а то приходится все выискивать, хотя допустим предделитель для АЦП понятно, как обычно, с ЮАРТом тоже, беспокоит пока только DMA - это как я понял какая-то память, пока не разобрался для чего конкретно NVIC - ну это я так понял вектора прерываний для STM, APB1 APB2 - как я понял шины управления с разными предделителями частоты, для разных интерфейсов а разделяются они на две для одновременной многозадачности?

И еще в какой среде лучше программировать, мне бы где библиотек побольше и менее глючная и т.д., а то выписал целый список, чтобы не получилось как на AVR, перепробовал разных остановился на codevision).

Изменено пользователем Электронщик
Ссылка на комментарий
Поделиться на другие сайты

18 часов назад, Электронщик сказал:

беспокоит пока только DMA - это как я понял какая-то память

это контроллер. Вернее модуль внутри контроллера, который умеет по определенным событиям или просто по внутренним счетчикам пересылать из памяти в память и из регистров в память (а так же наоборот) с автоинкрементом или без такового. Делает это все без участия ядра, тем и ценен. По окончании процесс и в середине может генерировать прерывания. Что тоже удобно. Без DMA не пишется практически ни одна прога. Да и смысла нет, ибо без него сам процессор по сути 32-битная деревяшка

18 часов назад, Электронщик сказал:

пока не разобрался для чего конкретно NVIC

ну это собственно контроллер прерываний и есть. Он контролирует и векторы и приоритеты и еще по мелочи.

18 часов назад, Электронщик сказал:

APB1 APB2 - как я понял шины управления с разными предделителями частоты, для разных интерфейсов а разделяются они на две для одновременной многозадачности?

разделены они для того, чтобы можно было более гибко тактировать периферию. Например быстрые и медленные таймеры или АЦП. Поймешь постом, когда столкнешься с реальной задачей.

18 часов назад, Электронщик сказал:

мне бы где библиотек побольше

нет такого ни в одной среде, все сторонее. Лучшие среды кодописания IAR, Keil и CooCox. Последняя удобная, но глюков пипец и совместимость со стандартными библиотеками не всегда полная.

18 часов назад, Электронщик сказал:

не понятно почему в даташите на него нет вообще ни примеров кусков кода на С, ни описания всех регистров

в даташите на микру этого и не будет. Качай reference manual, там все это есть.

Простой жизни с стм не жди. Там мозги включать надо гораздо чаще чем с AVR, но зато и плюшки вкуснее. Твоя "самая дешманская плата" заменит штук 50 параллельно работающих ATMega328. F103C8T6 это довольно мощный камень на полноценном ядре кортекс М3. В нем разве что нет FPU, а все остальное не хуже чем у других и рабочая частота до 72 МГц. И пусть не смущает цена, это далеко не самый дешевый камушек в линейке ST

Изменено пользователем mail_robot

Нужно делать то, что нужно. А то, что не нужно, делать не нужно. (С) Винни Пух

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...