STM32 новичку в ARM что к чему

Кто любит RISC в жизни, заходим, не стесняемся.
Ответить
Родился
Сообщения: 12
Зарегистрирован: Пт дек 14, 2012 21:07:49
Откуда: Екатеринбург

Сообщение GHOST_J_D »

приобрел F3 discavery, запутался с софтом, посоветуйте в чем писать. Какое IDE + компилятор и все нужное для отладки?. Скачал кукокс но там нужного камня нет. Скачал библиотеку с сайта ST, положил в папку библиотек у кукокса. Семейство камней есть а выбора модели нету.
1) Стоит ли писать в кукоксе или нужно еще что то куда-то скопировать чтобы появился выбор камня?
2) Заменить кукокс на эклипс и танцевать с бубном вокруг эклиса?
3) Все это фигня и есть нормально ломаные IDE для ST32F3 cемейства?
Вопщем запутался :(
На данный момент окно выбора выглядит так Изображение
Контактная информация:
Реклама
Вымогатель припоя
Сообщения: 502
Зарегистрирован: Чт фев 16, 2012 19:00:11

Сообщение zöner »

все эти кукоксы и прочие - ненужная фигня.
для работы достаточно голого Эклипса с CDT плагином (а именно опцией GCC Cross-compilation).
тулчейн - бесплатный Codesourcery.
тип контроллера задается в опциях компилятора (Cortex-M0/M3/M4).
поддержка конретного камня - в библиотеках от производителей (ST StdperiphLib для STM32F1/2/3/4).
количество памяти для конкретного камня задается в скрипте линкера.
Последний раз редактировалось zöner Вс июл 14, 2013 19:01:35, всего редактировалось 1 раз.
Реклама
Родился
Сообщения: 12
Зарегистрирован: Пт дек 14, 2012 21:07:49
Откуда: Екатеринбург

Сообщение GHOST_J_D »

Cпасибо за ответ.
Еще может ктонибудь напишет как весь програмный пакет собрать и поставить? С каких сайтов и в какой последовательности.
Еклипс скачал. Sourcery G++ Lite это скачал и поставил как тут написано http://ziblog.ru/2011/01/06/pervyiy-sta ... ast-2.html
Сейчас пытаюся вот это прикрутить http://we.easyelectronics.ru/STM32/otla ... segcc.html Заполняю поле work with и не находит :( .
Контактная информация:
Друг Кота
Аватара пользователя
Сообщения: 3604
Зарегистрирован: Пн июл 28, 2008 22:12:01

Сообщение dosikus »

У ZiB'а вручную, что не всем подходит из за лени.
Читайте . Выложил в pdf . Ссылки на оригинал присутствуют .
http://kazus.ru/forums/showthread.php?t=105029
Реклама
Эиком - электронные компоненты и радиодетали
Родился
Сообщения: 12
Зарегистрирован: Пт дек 14, 2012 21:07:49
Откуда: Екатеринбург

Сообщение GHOST_J_D »

http://kazus.ru/forums/showthread.php?t=105029 вот за это спасибо
Контактная информация:
Реклама
Опытный кот
Аватара пользователя
Сообщения: 725
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Сообщение amv2000 »

Пробую ШИМ на плате STM32VL Discovery, сделал ремап на на PC8,9 от Tаймера3. Посредством кнопки PA0, увеличиваю или уменьшаю яркость светодиода PC9, только не пойму почему на краях (в начале и конце) регулируется через раз, в середине всё стабильно.
Спойлер//========================
// Подключаем в код содержимое файлов
//========================
#include "stm32f10x.h" // "stm32f10x.h" - Файл описания периферии
#include "initall.h" // "initall.h" - инициализации портов и таймера
#include "interrupt.h" // "interrupt.h" - обработчик прерывания

//========================
// Объявляем переменные, макросы и константы
//========================
#define CPU_CLK 8000000 // частота кварца 8 Мгц
#define Push_Button (GPIOA->IDR & 1) // Кнопка нажата
uint8_t flag; // флаг состояния
uint8_t i=1;

uint32_t pwm_arr[]={0,0,6553,13107,19660,26214, // 0%, 10%, 20%, 30%, 40%,
32768,39321,45875,52428,58982,65535}; // 50%, 60%, 70%, 80%, 90%, 100%

/**=======================
* @описание : Обработчик прерывания по переполнению таймера SysTick.
* @параметр : Нет
* @возвр значение: Нет
*=====================*/
void SysTick_Handler()
{
/* Обработка кнопки */
static unsigned button_cnt = 0; // счетчик периода нажатия
if (Push_Button) // Если нажата кнопка
{
if (++button_cnt == 100) flag=!flag; // запускаем счетчик, если в этот период кнопка еще нажата
} else button_cnt = 0; // инвертируем флаг, если нет обнуляем счетчик


int main(void)/*============ Основная программа ===========*/
{
//------------------------------------------------------------------------------
//Настройка Синего и зеленого светодиода на плате STM32-Discovery для использования ШИМ.
//------------------------------------------------------------------------------
RCC->APB2ENR |= RCC_APB2ENR_IOPCEN | RCC_APB2ENR_IOPAEN | RCC_APB2ENR_AFIOEN; // Тактирование порта C и альтернативных функций
GPIOC->CRH &= ~(GPIO_CRH_MODE8|GPIO_CRH_MODE9|GPIO_CRH_CNF8|GPIO_CRH_CNF9); // очистить разряды MODE, CNF (поскольку после сброса мк задан режим "Input Floating = 01")
GPIOC->CRH |= GPIO_CRH_MODE8|GPIO_CRH_MODE9|GPIO_CRH_CNF8_1|GPIO_CRH_CNF9_1; // Максимальная скорость порта PC8,9 = 50 MHz / выход Push-Pull в режиме альтернативной функции
AFIO->MAPR |= AFIO_MAPR_TIM3_REMAP; // Ремап TIM3 вывод PC8 настраивается для работы с выходом TIM3_CH3, PC9 с TIM3_CH4

GPIOA->CRL &= ~ GPIO_CRL_MODE0; // Кнопка "USER" PA0 - на вход.

//========================
// инициализация таймера TIM3
// Для формирования сигнала ШИМ используется канал 3 и 4 (TIM3_CH3, TIM3_CH4 )
//========================
RCC->APB1ENR |= RCC_APB1ENR_TIM3EN; // Тактирование таймера TIM3
TIM3->CCER |= (TIM_CCER_CC3E | TIM_CCER_CC4E); // Разрешаем ШИМ использовать лапки РС8, РС9 (Выход канала захвата/сравнения включен на каналах 3 и 4)
TIM3->CCMR2 |= (TIM_CCMR2_OC3M_2 | TIM_CCMR2_OC3M_1 | // Прямой ШИМ на канал 3 (PWM1 OCxM=110), активен пока TIMx_CNT<TIMx_CCRx при счете “вверх”, “вниз” пока TIMx_CNT>TIMx_CCRx
TIM_CCMR2_OC4M_2 | TIM_CCMR2_OC4M_1); // Прямой ШИМ на канал 4 ( при инверсном ШИМ PWM2(OCxM = 111) все прямо противоположно.
TIM3->CR1 |= TIM_CR1_CEN; // старт таймера TIM3

/*=========== Вызов функции конфигурации системного таймера SysTick. =========*/
SysTick_Config(SystemCoreClock / 100);/* Конфигурируем таймер SysTick на срабатывание 100 раз в секунду */

while(1)/*=================== Основной цикл ==============*/
{

if (flag) // Если флаг установлен
for (;(Push_Button && (i<=10));i++) // Увеличиваем яркость, пока нажата кнопка и i<=11
{
TIM3->CCR4=pwm_arr; // Записываем данные в TIM3->CCRx - и меняем яркость светодиода
Delay_ms(100); // Через указанный промежуток времени = 100 мс
}
if (!flag) // Если флаг сброшен
for (;(Push_Button && (i>=1));i--) // Уменьшаем яркость, пока нажата кнопка и i>=1
{
TIM3->CCR4=pwm_arr; // Записываем данные в TIM3->CCRx - и меняем яркость светодиода
Delay_ms(100); // Через указанный промежуток времени = 100 мс
}
}
}
Реклама
Прорезались зубы
Аватара пользователя
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

Сообщение optima »

А для чего в начале массива два нулевых значения?
Грызет канифоль
Аватара пользователя
Сообщения: 271
Зарегистрирован: Вт авг 09, 2011 15:01:44
Откуда: Харьков

Сообщение drakon »

amv2000, попробуй заменить на:

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

const uint16_t pwm_arr[]={0,6553,13107,19660,26214, // 0%, 10%, 20%, 30%, 40%,
32768,39321,45875,52428,58982,65535}; // 50%, 60%, 70%, 80%, 90%, 100%
Опытный кот
Аватара пользователя
Сообщения: 725
Зарегистрирован: Вт апр 26, 2011 13:58:36
Откуда: Ростовская область

Сообщение amv2000 »

Без этого нуля регулируется скачком(один раз моргает в конце и начале), с нулём плавно.
Пример массива брал здесь http://easystm32.ru/for-beginners/35-pwm-in-stm32
Прорезались зубы
Аватара пользователя
Сообщения: 232
Зарегистрирован: Вт май 08, 2012 10:42:29

Сообщение optima »

Скачки может от дребезга кнопочки!
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

Добрый день! Не знал, куда написать, так что будет тут.
Такая проблема: Есть плата STM32VLDISCOVERY/ На ней встроенный программатор/отладчик. Так получилось, что я уронил на него провод с +12В. Понятно, что контроллер в отладчике не замешкался выпустить волшебный дым, на котором работал.
Собственно вопрос: Если я заменю контроллер в программаторе, то где мне взять для него прошивку и как предпочтительнее прошить? Или лучше купить новую плату?
Дело в том, что эту плату я использую в качестве программатора для своих проектов. И сейчас у меня стоит вопрос: купить отдельный отладчик с поддержкой JTAG/SWD/SWIM, или попробовать восстановить горелый.
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
Поставщик валерьянки для Кота
Сообщения: 2222
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Откуда: Tashkent

Сообщение uk8amk »

Все дело в ST-шном бутлодере без которого это просто кирпич.

Ребята попотели и хакнули его. Попробуйте прошить хотя бы через USART, потом из ST-link-а законнектиться и обновиться.
Взял на просторах интернета, где уже не помню. Сам не пробовал.

ЗЫ. Это фирмваре на ST-LINK2, на VL Discovery ST-LINK1, там какие-то схемные отличия были, надо в мануале схемы сравнивать.

ЗЫ2. Проверьте еще стаб на плате на 3.3В, он тоже пострадать мог.
Вложения
STLinkV2.J16.S4.zip
(30.26 КБ) 234 скачивания
stlink.zip
(23.86 КБ) 215 скачиваний
Грызет канифоль
Аватара пользователя
Сообщения: 271
Зарегистрирован: Вт авг 09, 2011 15:01:44
Откуда: Харьков

Сообщение drakon »

РадиоЛоматель, вы мой друг по несчастью, только у меня +25 упало. на этой плате стоит st-link v1, к сожалению на эту версию я не нашел прошивку. у меня еще есть дискавери f0, я ее вытянул и тоже спалил, но на ней стоит st-link v2, прошивку на него я нашел (ПОЛНАЯ взломанная), впаял новый мк и все пошло. разница в схеме v1 и v2 есть, но можно переделать.
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

Спасибо за ответы. Ну, раз такие пироги, то уж раскошелюсь на нормальный программатор. А плату попробую на досуге как-нибудь восстановить.
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
Грызет канифоль
Аватара пользователя
Сообщения: 271
Зарегистрирован: Вт авг 09, 2011 15:01:44
Откуда: Харьков

Сообщение drakon »

так он стоит не меньше 350грн. я себе рисую плату урезаного линка как на дискавери.
Мудрый кот
Аватара пользователя
Сообщения: 1733
Зарегистрирован: Чт авг 21, 2008 22:03:30
Откуда: Одесса(Украина)

Сообщение РадиоЛоматель »

drakon писал(а):так он стоит не меньше 350грн.
Есть удачный клон за 200. Тоже не дешево. Но уже ощутимо дешевле.

Посмотрел сейчас схемы. Да, при наличии прошивки самому собрать можно за день от начала и до конца. Деталей там гривен на 40 соберется с текстолитом и процессором. Если не секрет, где добыть прошивку можно?
(*tmp) &= ~( ( (param1 & (1<<PARAM1_BIT6)) || ((param2==PARAM2_TRUE)&&(--param3)) ) ? (param1 & (~param2)) : (Func1() | FUNC1_FLAGS) );
Люблю Си...
Контактная информация:
Друг Кота
Сообщения: 4583
Зарегистрирован: Вс дек 05, 2010 06:10:34
Откуда: ЮВ

Сообщение HHIMERA »

Возьмите глаза в руки и посмотрите... тремя постами выше!!!
"Я не даю готовых решений, я заставляю думать!"(С)
Встал на лапы
Сообщения: 108
Зарегистрирован: Пт июл 06, 2012 14:28:17
Откуда: Россия. г.Смоленск

Сообщение The_D »

А не проще купить нормальный полноценный ST-LINK/V2?
Изображение

Или на крайняк клоны и аналоги:
CoLinkEx - http://www.coocox.org/Colinkex.htm
TE-ST-LINK - http://www.compel.ru/infosheet/%D0%A0%D ... E-ST-LINK/
Друг Кота
Аватара пользователя
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Сообщение Satyr »

Вы че народ ?
самый кошерный J-link клон из китая с ДОСТАВКОЙ стоит до 20$
Грызет канифоль
Аватара пользователя
Сообщения: 271
Зарегистрирован: Вт авг 09, 2011 15:01:44
Откуда: Харьков

Сообщение drakon »

РадиоЛоматель, вот ссылка http://forum.easyelectronics.ru/viewtop ... 0&start=50 на тему, там и скачаете.
Ответить

Вернуться в «ARM»