Программирование STM8

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Встал на лапы
Аватара пользователя
Сообщения: 124
Зарегистрирован: Сб окт 20, 2012 14:07:16

Сообщение Yusff »

Все получилось. Спасибо! :beer:
Реклама
Родился
Сообщения: 2
Зарегистрирован: Вт июн 03, 2014 14:59:22

Сообщение Zugus »

Здравствуйте. Подскажите пожалуйста, каким образом после сброса МК STM8S003 задается альтернативная функция на его ножках.
Например, для корпуса LQFP32 на порту PC1 (Pin20) требуется организовать выход таймера TIM1 канал CH1 (по даташиту это возможно).
Никак не могу найти в явном виде, как происходит выбор альтернативной функции или порта ввода вывода на отдельно взятой ноге микроконтроллера.
Как, например, это делается STM32.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3832
Зарегистрирован: Сб сен 10, 2011 17:46:25

Сообщение oleg110592 »

PC1 наверное pin18
Capture/compare enable register 1 (TIM1_CCER1)
Bit 0 CC1E: Capture/compare 1 output enable
CC1 channel is configured as output:
0: Off - OC1 is not active. OC1 level is then a function of the MOE, OSSI, OSSR, OIS1, OIS1N and
CC1NE bits.
1: On - OC1 signal is output on the corresponding output pin depending on the MOE, OSSI, OSSR,
OIS1, OIS1N and CC1NE bits.
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

не сходится что-то с вашими словами
в STM8S003K3 LQFP32
PIN 20 - PC3 (TIM1_CH3)
PIN18 - PC1(TIM1_CH1)
и все это альтернативные функции вывода, без ремапа. Требуется лишь включить требуемую доп. функцию периферии. Ремап не требуется.
Про ремап можно прочитать в даташите на конкретный контроллер. Он задается в разделе Option Bytes
Ставим плюсы: )
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 2
Зарегистрирован: Вт июн 03, 2014 14:59:22

Сообщение Zugus »

С ножкой - опечатка вышла. Надо было надо так PIN18 - PC1(TIM1_CH1).
Теперь стало ясно. Спасибо.
Реклама
Вымогатель припоя
Аватара пользователя
Сообщения: 505
Зарегистрирован: Пт окт 15, 2010 10:26:31
Откуда: Украина

Сообщение Yuri_93 »

Подскажите пожалуйста учебник для начинающего осваивать STM8 (на русском языке)
и какой компилятор лучше использовать (из тех к которым есть crack в сети или которые бесплатные)
Реклама
Это не хвост, это антенна
Сообщения: 1355
Зарегистрирован: Вт май 20, 2014 18:14:20
Откуда: Белгород

Сообщение ССтанислав »

День добрый.
Наступил на грабли на ровном месте.
Начинаю разбираться с STM8. Использую "ST Visual Develop" + Cosmic8 + библиотеку "STM8S Firmware Library ".
Написал тестовую программу для таймера TIM4.
Запускаю ее на кристалле stm8s105k6 - работает, на stm8s103f2 - не хочет ни в какую :(
Делаю все в точности как в хелпе на библиотеку + смотрел на этом сайте статью про таймеры.
В чем может быть проблема?
Дорогу осилит идущий.
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

Критерий определения исправности работы какой?
Лучше бы Вы код привели. По линейке STM8S все таймеры с соответствующими номерами работают одинаково.
Ставим плюсы: )
Это не хвост, это антенна
Сообщения: 1355
Зарегистрирован: Вт май 20, 2014 18:14:20
Откуда: Белгород

Сообщение ССтанислав »

ibiza11 писал(а):Лучше бы Вы код привели.
Хорошо.

main.c
// Инициализация таймера
TIM4_DeInit();
TIM4_TimeBaseInit(TIM4_PRESCALER_64, 0x9F);
TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE);
TIM4_Cmd(ENABLE);
enableInterrupts();
TIM4_Cmd(ENABLE);

stm8s_it.c
// собственно само прерывание
void TIM4_UPD_OVF_IRQHandler(void) interrupt 23
{
uFlag++;
TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
}
ibiza11 писал(а):Критерий определения исправности работы какой?
запуская среду в режиме "debug" и смотрю переменную uFlag. Собственно все.
stm8s105k6 - переменная "мельтешит", выдавая разные числа, что собственно понятно, так как дебугер отлавливает переменную в произвольный момент времени.
stm8s103f2 - uFlag = 3 - ВСЕ время.
Дорогу осилит идущий.
Контактная информация:
Поставщик валерьянки для Кота
Аватара пользователя
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

Сообщение ibiza11 »

как объявлена uFlag?
Ставим плюсы: )
Это не хвост, это антенна
Сообщения: 1355
Зарегистрирован: Вт май 20, 2014 18:14:20
Откуда: Белгород

Сообщение ССтанислав »

main.c
u8 uFlag = 3;

stm8s_it.c
extern u8 uFlag;
Дорогу осилит идущий.
Контактная информация:
Это не хвост, это антенна
Сообщения: 1355
Зарегистрирован: Вт май 20, 2014 18:14:20
Откуда: Белгород

Сообщение ССтанислав »

Все, разобрался. Надо было в stm8s.h, раскомментарить определение 103 кристалла и закомментарить 105.
Дорогу осилит идущий.
Контактная информация:
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

Да ничего там не надо...
В свойствах проекта в C Compiler в строке Preprocessor Definition просто вбить свой камень... всё...
"Я не даю готовых решений, я заставляю думать!"(С)
Это не хвост, это антенна
Сообщения: 1355
Зарегистрирован: Вт май 20, 2014 18:14:20
Откуда: Белгород

Сообщение ССтанислав »

HHIMERA писал(а):В свойствах проекта в C Compiler в строке Preprocessor Definition просто вбить свой камень... всё...
И так наверно можно.
Но я по наивности думал что определение #define STM8S103 в main.c более чем достаточно, тем более далее в stm8s.h
была конструкция вида:
#if !defined (STM8S208) && !defined (STM8S207) && !defined (STM8S105) && !defined (STM8S103) && !defined (STM8S903)
// #define STM8S208
/* #define STM8S207 */
// #define STM8S105
#define STM8S103
/* #define STM8S903 */
#endif

Так вот, пока я не определил STM8S103 здесь, ни фига ни чего не работало :(
а с учетом того что там и на вкладке "MCU Selection" мы выбираем процессор, так вообще все очень запущено :(

Сейчас проверил твой вариант - ДА, действительно так тоже можно :) Спасибо за ответ, хоть и слегка запоздалый :)
Меня теперь мучает другой вопрос - почему не сработало МОЕ определение? - хотя вопрос скорее риторический :)
Дорогу осилит идущий.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

ССтанислав писал(а): Меня теперь мучает другой вопрос - почему не сработало МОЕ определение? - хотя вопрос скорее риторический :)
Ну пАтАмуШта определенное в main и видеться будет только в main , а дефайн в опциях компиля во всем проекте .
Да и
на вкладке "MCU Selection" мы выбираем процессор
из другое оперы...
Это не хвост, это антенна
Сообщения: 1355
Зарегистрирован: Вт май 20, 2014 18:14:20
Откуда: Белгород

Сообщение ССтанислав »

dosikus писал(а):определенное в main и видеться будет только в main
а почему тогда определение в stm8s.h видно во всем проекте?
на вкладке "MCU Selection" мы выбираем процессор - из другое оперы...
Да, я понимаю для чего это сделано, я не совсем понимаю почему из этой вкладки разработчики не могли взять тип процессора?
Или на вкладке можно поставить к примеру 105, а Definition определить 103? вряд ли :)
Дорогу осилит идущий.
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

ССтанислав писал(а): а почему тогда определение в stm8s.h видно во всем проекте?
Не во всем, а только там где подключен stm8s.h :)))
Да, я понимаю для чего это сделано, я не совсем понимаю почему из этой вкладки разработчики не могли взять тип процессора?
Во первых это ключ для компилятора/линкера , а не дефайн препроцессора и ему же он не виден.

А так, весьма примечательно что ты этим интересуешься .
Почитай мануал на компиляторы , многое станет прозрачным ...
Или на вкладке можно поставить к примеру 105, а Definition определить 103? вряд ли
Можно, только будет ли потом работать - вот вопрос. :)))
Последний раз редактировалось dosikus Пн июн 30, 2014 10:05:38, всего редактировалось 1 раз.
Родился
Сообщения: 7
Зарегистрирован: Чт янв 16, 2014 10:43:00

Сообщение Dingo »

Добрый день.
Возникла следующая проблема: не компилится библиотека "stm8s.h". Выводит ошибку:
Fatal Error[Pe035]: #error directive: "Unsupported Compiler!" /* Compiler defines not found */
Использую IAR версии 1.42.2.

Ошибка предположительно возникает в следующем участке кода:
#if defined(__CSMC__)
#undef _RAISONANCE_
#define _COSMIC_
#elif defined(__RCST7__)
#undef _COSMIC_
#define _RAISONANCE_
#else
#error "Unsupported Compiler!" /* Compiler defines not found */
#endif

Я понимаю, что какая-то ошибка с компилятором, но что именно может быть не так?
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

Dingo , на 100% - проект создается через ж...
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

А где откопали этот "stm8s.h" ???
Должно быть...

Код: Выделить всё

/******************************************************************************/
/*                   Library configuration section                            */
/******************************************************************************/
/* Check the used compiler */
#if defined(__CSMC__)
 #define _COSMIC_
#elif defined(__RCST7__)
 #define _RAISONANCE_
#elif defined(__ICCSTM8__)
 #define _IAR_
#else
 #error "Unsupported Compiler!"          /* Compiler defines not found */
#endif
"Я не даю готовых решений, я заставляю думать!"(С)
Ответить

Вернуться в «Разные вопросы по МК»