Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
248 / 0 / 1
Регистрация: 29.11.2015
Сообщений: 230

STM8S103. Как настроить физические выводы таймера

22.01.2026, 23:05. Показов 1390. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Использую TIM1. Требуется выводить меандр в режиме TIM1_OCMODE_TOGGLE. Сам таймер дышит, значения счётчика меняются, компаратор срабатывает, а сигнала на выходе нет. Не понимаю каким образом все эти канальные OC привязываются к конкретным ножкам МК. А, может, это и не при чём.
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
  //-------------Настройка ввыходов генератора: PC3, PC4 - запуск АЦП, PC6, PC7 - SIN, COS 
   GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_OUT_OD_HIZ_FAST);  // Запуск АЦП_А. Выход с   открытым стоком
   GPIO_Init(GPIOC, GPIO_PIN_4, GPIO_MODE_OUT_OD_HIZ_FAST);  // Запуск АЦП_В. Выход с открытым стоком
   GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_OUT_PP_HIGH_FAST); // sin
   GPIO_Init(GPIOC, GPIO_PIN_7, GPIO_MODE_OUT_PP_HIGH_FAST); // cos
 
 static void TIM1_Config(void)
{
  // TIM1 Конфигурирование периферии (сброс)
  TIM1_DeInit();
 
  // Конфигурирование временной базы TIM1
  // Время счета TIM1 = 0,004096 с. Частота события сброса TIM1 = 244,140625 Гц.
  TIM1_TimeBaseInit(TIM1_PRESCALER, TIM1_COUNTERMODE_UP, TIM1_PERIOD, 0);
 
  // Channel 1 Конфигурирование в TIM1_OCMODE_TOGGLE mode 
  // TIM1_Chanel1_Pulse = 10 
  TIM1_OC1Init(TIM1_OCMODE_TOGGLE , TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_DISABLE, 0,   TIM1_OCPOLARITY_HIGH, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_SET);
 
  // Channel 2 Конфигурирование в TIM1_OCMODE_TOGGLE mode 
  // TIM1_Chanel2_Pulse = 10 
  TIM1_OC2Init(TIM1_OCMODE_TOGGLE, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_DISABLE, GradazSdvig, TIM1_OCPOLARITY_HIGH, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_SET);
 
  // Channel 3 Конфигурирование в TIM1_OCMODE_TIMING mode 
  // TIM1_Chanel3_Pulse = 20 
  TIM1_OC3Init(TIM1_OCMODE_TIMING, TIM1_OUTPUTSTATE_ENABLE, TIM1_OUTPUTNSTATE_DISABLE, Sdvig, TIM1_OCPOLARITY_HIGH, TIM1_OCNPOLARITY_HIGH, TIM1_OCIDLESTATE_SET, TIM1_OCNIDLESTATE_SET);
 
  // Channel 4 Конфигурирование в TIM1_OCMODE_TIMING mode 
  // TIM1_Chanel4_Pulse = 30 
  TIM1_OC4Init(TIM1_OCMODE_TIMING, TIM1_OUTPUTSTATE_ENABLE, Sdvig + GradazSdvig, TIM1_OCPOLARITY_HIGH, TIM1_OCIDLESTATE_SET);
 
  // Установки параметров "ДедТайм" Automatic Output enable, Break, dead time and lock configuration
  TIM1_BDTRConfig(TIM1_OSSISTATE_ENABLE,  TIM1_LOCKLEVEL_OFF, 7,  TIM1_BREAK_DISABLE, TIM1_BREAKPOLARITY_LOW,  TIM1_AUTOMATICOUTPUT_ENABLE);
 
  // TIM1_CCPreloadControl (SPL)
  TIM1_CCPreloadControl(ENABLE);
    
    CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1, ENABLE);
 TIM1_CCxCmd(TIM1_CHANNEL_1, ENABLE); 
 TIM1_CCxCmd(TIM1_CHANNEL_2, ENABLE);
 TIM1_CCxCmd(TIM1_CHANNEL_3, ENABLE); 
 TIM1_CCxCmd(TIM1_CHANNEL_4, ENABLE);
  // TIM1 Запуск в работу (SPL)
  TIM1_Cmd(ENABLE);
}
// ---------------------------TIM1 конец-----------------------------------
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.01.2026, 23:05
Ответы с готовыми решениями:

STM8S003 STM8S103 неправильный вектор преравыния ADC1
В PDF указан вектор ADC1 с номером 22, на самом деле 24 в хеадерах от IAR указан правильный

Библиотека Eagle CAD для STM8S103
Привет! Может, уже кто-то отрисовал STM8S103 в SO-20, TSSOP-20 и LQFP-32?

STM8S103, ST Visual Develop, работа с эмулятором
Пока ожидается плата с STM8S103F3 пробую освоить, используя эмулятор ST Visual Develop. Подключаю...

9
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,929
23.01.2026, 12:09
Не уверен как там в stm8, но в stm32 для подобного нужно настроить ножку в alternative function. А у вас она, похоже, GPIO.
0
248 / 0 / 1
Регистрация: 29.11.2015
Сообщений: 230
23.01.2026, 13:43  [ТС]
Цитата Сообщение от COKPOWEHEU Посмотреть сообщение
Не уверен как там в stm8, но в stm32 для подобного нужно настроить ножку в alternative function. А у вас она, похоже, GPIO.
Прочитал, что для этих МК альтернативная функция используется только для входа, да и то она устанавливается автоматически при выборе режима вывода.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,929
23.01.2026, 14:02
Точно?
Цитата Сообщение от RM0016
11.8.1
Alternate function output
Alternate function outputs provide a direct path from a peripheral to an output or to an I/O
pad, taking precedence over the port bit in the data output latch register (Px_ODR) and
forcing the Px_DDR corresponding bit to 1.
An alternate function output can be push-pull or pseudo-open drain depending on the
peripheral and Control register 1 (Px_CR1) and slope can be controlled depending on the
Control register 2 (Px_CR2) values.
Examples:
SPI output pins must be set-up as push-pull, fast slope for optimal operation.
Добавлено через 6 минут
Впрочем, быстрый гуглеж на первых же страницах выбрасывает какой-то код для ШИМ, и там настройки альтернативных функций, кажется, нет. Проверить его, как вы понимаете, я не могу.
0
339 / 98 / 6
Регистрация: 19.07.2024
Сообщений: 543
23.01.2026, 15:39
Цитата Сообщение от Юрий_48 Посмотреть сообщение
Прочитал, что для этих МК альтернативная функция используется только для входа, да и то она устанавливается автоматически при выборе режима вывода.
В какой мурзилке такую дичь вычитали??? RM пробовали читать?
Если попробовать открыть RM, то уже даже из названия соответствующих параграфов:
11.8 Output mode details
11.8.1 Alternate function output
видно, что альтернативная функция задаёт режим вывода.
0
Windows must die
676 / 860 / 103
Регистрация: 23.11.2021
Сообщений: 5,097
Записей в блоге: 18
23.01.2026, 16:47
COKPOWEHEU, там все куда проще: достаточно лишь настроить таймер.
Ну и процитирую мануал:
Alternate function input
Some I/Os can be used as alternate function input. For example as the port may be used as
the input capture input to a timer. Alternate function inputs are not selected automatically,
you select them by writing to a control bit in the registers of the corresponding peripheral.
For Alternate Function input, you should select floating or pull-up input configuration in the
DDR and CR1 registers.
Alternate function output
Alternate function outputs provide a direct path from a peripheral to an output or to an I/O
pad, taking precedence over the port bit in the data output latch register (Px_ODR) and
forcing the Px_DDR corresponding bit to 1.
В общем, нет понятия "альтернативной функции", как у STM32, где один пин может только одну альтернативную функцию иметь. Как настроил конкретную периферию, так и будет (т.е. коллизии - на совести разработчика).

P.S. Когда-то я под STM8 понемножку писал. Но как только "пощупал" STM32, понял, что эти STM8 — адская ненужная дичь. Жутко дорогая и жутко тормозная, да и периферии с гулькин нос.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,929
24.01.2026, 02:29
Цитата Сообщение от Eddy_Em Посмотреть сообщение
COKPOWEHEU, там все куда проще
Да на здоровье. Мне эти stm8 не слишком интересны. Тут, говорят, ch32h417 в продаже появились - двухъядерные с USB-3 (не говоря уж о другой периферии), скоро 1921вг1т продавать собираются - тоже двухъядерные, даже с MMU. Правда, корпуса у них... негуманные...
Цитата Сообщение от Eddy_Em Посмотреть сообщение
В общем, нет понятия "альтернативной функции", как у STM32, где один пин может только одну альтернативную функцию иметь.
Даже у stm-ок есть камни с выбором 16 альтернативных функций. Про не-stm-ки и говорить нечего.

Не по теме:


Цитата Сообщение от Eddy_Em Посмотреть сообщение
понял, что эти STM8 — адская ненужная дичь. Жутко дорогая и жутко тормозная, да и периферии с гулькин нос.
А, интереса ради, сейчас с какими камнями развлекаетесь? stm32f3?

0
248 / 0 / 1
Регистрация: 29.11.2015
Сообщений: 230
24.01.2026, 13:49  [ТС]
Интересно послушать разговор умных людей. По поводу изначального вопроса крутая необходимость рассосалась - нашёл программу, которая выводит на выход ШИМ. Что у меня не так анализ пока не проводил, но встал более насущный вопрос. При срабатывании компаратора можно ли на выход вывести импульс? Под импульсом имеется ввиду, что его длительность должна быть меньше половины величины автоперезагрузки. Или по другому: можно ли моментом компарирования аппаратно запустить АЦП, конечно в рамках STM8S103.

Добавлено через 34 минуты
Цитата Сообщение от Eddy_Em Посмотреть сообщение
Но как только "пощупал" STM32, понял, что эти STM8 — адская ненужная дичь. Жутко дорогая и жутко тормозная, да и периферии с гулькин нос.
А сейчас как Вы оцениваете стоимость STM8 и STM32
0
Windows must die
676 / 860 / 103
Регистрация: 23.11.2021
Сообщений: 5,097
Записей в блоге: 18
24.01.2026, 23:06
COKPOWEHEU, самый базовый у меня ­— STM32F072. Для всякой "попсни" — STM32F103. Ну, а если нужно что-то с флоатами или не хватает производительности, то STM32F303.
Понемногу на G-серию посматриваю, но пока что ничего на них не делал. Время нужно. Хотя, подозреваю, что будет это либо через много лет, либо вообще никогда.
0
339 / 98 / 6
Регистрация: 19.07.2024
Сообщений: 543
25.01.2026, 13:14
Цитата Сообщение от Юрий_48 Посмотреть сообщение
При срабатывании компаратора можно ли на выход вывести импульс?
Можно. Но вы не сможете. Потому что так и не разобрались как управлять ногами от таймера.

Цитата Сообщение от Юрий_48 Посмотреть сообщение
можно ли моментом компарирования аппаратно запустить АЦП, конечно в рамках STM8S103.
Ничего не понял.... Что за "момент компарирования" и какая связь между неким выводимым импульсом и АЦП?
Требуется толмач с птичьего языка на человечий.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
25.01.2026, 13:14
Помогаю со студенческими работами здесь

использование для "своих нужд" выводы RXD & TXD в контроллер
добрый день исходные данные: - arduino nano - планируем использовать для "своих нужд" выводы...

Токи через выводы STM32f030 32pin
Всем привет! Простая задача подключить 8 светодиодов через STM32f030 32 pin. Светить должны...

Как настроить прерывания для каналов таймера по сравнению ?
Здраваствуйте. Есть периферия которую нужно периодично на фоне опрашивать. С достаточно...

ATmega16. Настроить прерывание для таймера Т1
помогите настроить таймер Т1

[Решено] HardFault при попытке настроить прерывание таймера
Здравствуйте. Недавно начал изучать ARM в общем и STM32 в частности, вылезла проблема при попытке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Вывод данных через динамический список в справочнике
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Функция заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru