Top.Mail.Ru
Уведомления
Очистить все

STM8S103F3 не запустить таймер в отладчике ST Visual Develop

(@yuriy)
Level 3

Пока ожидается плата с STM8S103F3 пробую освоить, используя эмулятор ST Visual Develop. Подключаю TIM1, в эмуляторе вижу, что необходимые значения предделителя, порога перезапуска, разрешение на работу прописываются, но движения самого таймера нет (Counter не меняется), хотя значение Count_Otl меняется, что говорит о работающем генераторе. Испробовал кучу вариантов и по своему разумению и из инета, но результат пока никакой - чего-то не учитываю - чего? Один из вариантов программы такой:

#include "stm8s.h"
#include "math.h"
#include "stm8s_clk.h"
#include "stm8s_tim1.h"
uint16_t Counter = 0;
uint16_t Count_Otl = 0;
 
main()
{ 
CLK_DeInit();  
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1 | CLK_PRESCALER_CPUDIV1);  // 16 мГц
  //TIM1_InternalClockConfig();
  //TIM1_TimeBaseInit(25 - 1, TIM1_COUNTERMODE_UP, 8 - 1, 0);
  TIM1_TimeBaseInit(25 - 1, TIM1_COUNTERMODE_UP, 65536 - 1, 0);
  //TIM1_SetCounter(0);
  CLK->SWCR = CLK_SWCR_SWEN;    // Включаем тактирование
  TIM1_Cmd(ENABLE);
 
while (1)
  {
    Counter = TIM1_GetCounter();
    Count_Otl++;   
  }
}

Цитата
Создатель темы Размещено : 15.01.2026 17:10
Aveal
(@aveal)
Top level Admin

Добрый день, не помню детально по STM8, такой вариант набросал, будет собираться и работать?

#include "stm8s.h"
#include "stm8s_clk.h"
#include "stm8s_tim1.h"

uint16_t Counter = 0;

main()
{ 
    CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
    CLK_PeripheralClockConfig(CLK_PERIPHERAL_TIMER1, ENABLE);
        
    TIM1_DeInit();
    TIM1_TimeBaseInit(24,
                      TIM1_COUNTERMODE_UP, 
                      65535,
                      0);
                      
    TIM1_GenerateEvent(TIM1_EVENTSOURCE_UPDATE);
    TIM1_ClearFlag(TIM1_FLAG_UPDATE);
    TIM1_Cmd(ENABLE);
    
    while (1)
    {
        Counter = TIM1_GetCounter();
    }
}

 


ОтветитьЦитата
Размещено : 15.01.2026 18:08
(@yuriy)
Level 3

Спасибо за отклик, не прокатило. Может, что-то надо настроить в среде, хотя регистры прописываются while (1) крутится.


ОтветитьЦитата
Создатель темы Размещено : 15.01.2026 18:25
Aveal
(@aveal)
Top level Admin

@yuriy А регистр CNT сам эмулятор тоже нулевым отображает?


ОтветитьЦитата
Размещено : 15.01.2026 18:36
(@yuriy)
Level 3

Вот интересно. Какое бы значение перезапуска в вашем варианте не поставил бы, значение  CNTR после пуска всегда 0. Но, если за  Вашим кодом ставлю строку TIM1_SetCounter(10);, то после запуска значение CNTR адекватное, но как и первом случае не меняется.


ОтветитьЦитата
Создатель темы Размещено : 15.01.2026 19:00
Aveal
(@aveal)
Top level Admin

@yuriy а в CLK->PCKENR1 и CLK->PCKENR2 какие значения?


ОтветитьЦитата
Размещено : 16.01.2026 21:21
(@yuriy)
Level 3

@aveal CLK->PCKENR1 = С4, CLK->PCKENR2 = F3. Всё больше склоняюсь к мысли, что не я дурак, а глючить может эмулятор. Хочу скачать IAR, но пока интернет никакой. Было бы здорово, если кто нибудь попробовал запустить программу у себя в ST Visual Develop.


ОтветитьЦитата
Создатель темы Размещено : 16.01.2026 21:44
Aveal
(@aveal)
Top level Admin

@yuriy У меня были изначально мысли, что проблема может быть в самой ST Visual Develop, как в других симуляторах, но решил пока все-таки другие варианты рассмотреть... Регистры в порядке судя по всему.


ОтветитьЦитата
Размещено : 16.01.2026 21:50
(@yuriy)
Level 3

 IAR скачать не удалось, но зато пришли платки. Подключил и сразу всё заработало в отладчике ST Visual Develop.


ОтветитьЦитата
Создатель темы Размещено : 19.01.2026 23:16
Aveal
(@aveal)
Top level Admin

@yuriy отлично 👍


ОтветитьЦитата
Размещено : 22.01.2026 12:43
Поделиться:
Обзор конфиденциальности

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