Программирование STM8
- Сообщения: 124
- Зарегистрирован: Сб окт 20, 2012 14:07:16
- Реклама
- Сообщения: 2
- Зарегистрирован: Вт июн 03, 2014 14:59:22
Здравствуйте. Подскажите пожалуйста, каким образом после сброса МК STM8S003 задается альтернативная функция на его ножках.
Например, для корпуса LQFP32 на порту PC1 (Pin20) требуется организовать выход таймера TIM1 канал CH1 (по даташиту это возможно).
Никак не могу найти в явном виде, как происходит выбор альтернативной функции или порта ввода вывода на отдельно взятой ноге микроконтроллера.
Как, например, это делается STM32.
Например, для корпуса LQFP32 на порту PC1 (Pin20) требуется организовать выход таймера TIM1 канал CH1 (по даташиту это возможно).
Никак не могу найти в явном виде, как происходит выбор альтернативной функции или порта ввода вывода на отдельно взятой ноге микроконтроллера.
Как, например, это делается STM32.
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
PC1 наверное pin18
Capture/compare enable register 1 (TIM1_CCER1)
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.
не сходится что-то с вашими словами
в STM8S003K3 LQFP32
PIN 20 - PC3 (TIM1_CH3)
PIN18 - PC1(TIM1_CH1)
и все это альтернативные функции вывода, без ремапа. Требуется лишь включить требуемую доп. функцию периферии. Ремап не требуется.
Про ремап можно прочитать в даташите на конкретный контроллер. Он задается в разделе Option Bytes
в STM8S003K3 LQFP32
PIN 20 - PC3 (TIM1_CH3)
PIN18 - PC1(TIM1_CH1)
и все это альтернативные функции вывода, без ремапа. Требуется лишь включить требуемую доп. функцию периферии. Ремап не требуется.
Про ремап можно прочитать в даташите на конкретный контроллер. Он задается в разделе Option Bytes
Ставим плюсы: )
- Сообщения: 2
- Зарегистрирован: Вт июн 03, 2014 14:59:22
С ножкой - опечатка вышла. Надо было надо так PIN18 - PC1(TIM1_CH1).
Теперь стало ясно. Спасибо.
Теперь стало ясно. Спасибо.
- Реклама
Подскажите пожалуйста учебник для начинающего осваивать STM8 (на русском языке)
и какой компилятор лучше использовать (из тех к которым есть crack в сети или которые бесплатные)
и какой компилятор лучше использовать (из тех к которым есть crack в сети или которые бесплатные)
День добрый.
Наступил на грабли на ровном месте.
Начинаю разбираться с STM8. Использую "ST Visual Develop" + Cosmic8 + библиотеку "STM8S Firmware Library ".
Написал тестовую программу для таймера TIM4.
Запускаю ее на кристалле stm8s105k6 - работает, на stm8s103f2 - не хочет ни в какую
Делаю все в точности как в хелпе на библиотеку + смотрел на этом сайте статью про таймеры.
В чем может быть проблема?
Наступил на грабли на ровном месте.
Начинаю разбираться с STM8. Использую "ST Visual Develop" + Cosmic8 + библиотеку "STM8S Firmware Library ".
Написал тестовую программу для таймера TIM4.
Запускаю ее на кристалле stm8s105k6 - работает, на stm8s103f2 - не хочет ни в какую
Делаю все в точности как в хелпе на библиотеку + смотрел на этом сайте статью про таймеры.
В чем может быть проблема?
Дорогу осилит идущий.
Критерий определения исправности работы какой?
Лучше бы Вы код привели. По линейке STM8S все таймеры с соответствующими номерами работают одинаково.
Лучше бы Вы код привели. По линейке STM8S все таймеры с соответствующими номерами работают одинаково.
Ставим плюсы: )
Хорошо.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);
}
запуская среду в режиме "debug" и смотрю переменную uFlag. Собственно все.ibiza11 писал(а):Критерий определения исправности работы какой?
stm8s105k6 - переменная "мельтешит", выдавая разные числа, что собственно понятно, так как дебугер отлавливает переменную в произвольный момент времени.
stm8s103f2 - uFlag = 3 - ВСЕ время.
Дорогу осилит идущий.
main.c
u8 uFlag = 3;
stm8s_it.c
extern u8 uFlag;
u8 uFlag = 3;
stm8s_it.c
extern u8 uFlag;
Дорогу осилит идущий.
Все, разобрался. Надо было в stm8s.h, раскомментарить определение 103 кристалла и закомментарить 105.
Дорогу осилит идущий.
Да ничего там не надо...
В свойствах проекта в C Compiler в строке Preprocessor Definition просто вбить свой камень... всё...
В свойствах проекта в C Compiler в строке Preprocessor Definition просто вбить свой камень... всё...
"Я не даю готовых решений, я заставляю думать!"(С)
И так наверно можно.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
Ну пАтАмуШта определенное в main и видеться будет только в main , а дефайн в опциях компиля во всем проекте .ССтанислав писал(а): Меня теперь мучает другой вопрос - почему не сработало МОЕ определение? - хотя вопрос скорее риторический
Да и
из другое оперы...на вкладке "MCU Selection" мы выбираем процессор
а почему тогда определение в stm8s.h видно во всем проекте?dosikus писал(а):определенное в main и видеться будет только в main
Да, я понимаю для чего это сделано, я не совсем понимаю почему из этой вкладки разработчики не могли взять тип процессора?на вкладке "MCU Selection" мы выбираем процессор - из другое оперы...
Или на вкладке можно поставить к примеру 105, а Definition определить 103? вряд ли
Дорогу осилит идущий.
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
Не во всем, а только там где подключен stm8s.hССтанислав писал(а): а почему тогда определение в stm8s.h видно во всем проекте?
Во первых это ключ для компилятора/линкера , а не дефайн препроцессора и ему же он не виден.Да, я понимаю для чего это сделано, я не совсем понимаю почему из этой вкладки разработчики не могли взять тип процессора?
А так, весьма примечательно что ты этим интересуешься .
Почитай мануал на компиляторы , многое станет прозрачным ...
Можно, только будет ли потом работать - вот вопрос.Или на вкладке можно поставить к примеру 105, а Definition определить 103? вряд ли
Последний раз редактировалось dosikus Пн июн 30, 2014 10:05:38, всего редактировалось 1 раз.
- Сообщения: 7
- Зарегистрирован: Чт янв 16, 2014 10:43:00
Добрый день.
Возникла следующая проблема: не компилится библиотека "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
Я понимаю, что какая-то ошибка с компилятором, но что именно может быть не так?
Возникла следующая проблема: не компилится библиотека "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
А где откопали этот "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
"Я не даю готовых решений, я заставляю думать!"(С)


