Есть ещё и такая штука для STM32 с кучей примочек. Пока потихоньку осваиваю.
CooCox CooIDE
Сообщений 1 страница 30 из 42
Поделиться22018-01-06 15:36:00
Есть ещё и такая штука для STM32 с кучей примочек.
Читал про него тоже...
Например:
https://myklad.org/3/7/4/coocox-coide-1 … v-arm.html
Судя по описаниям - проект умер...
Стоит ли углубляться в прошлое ? 
Поддержка будет вряд ли, а "железо" на месте не стоит...
Поделиться32018-01-06 15:38:41
А тогда что взять за основу? Еклипс?
Поделиться42018-01-06 15:47:07
А тогда что взять за основу? Еклипс?
Тут я невеликий советчик... 
Пока отложил это направление...
Поделиться52018-01-06 16:14:01
Я общался с программистами на STM. Они говорят, что нет очень большой разницы между платформами и с небольшими переделками всё успешно мигрируется с платформы на платформу.
Поделиться62018-01-06 16:29:48
Я общался с программистами на STM. Они говорят, что нет очень большой разницы между платформами и с небольшими переделками всё успешно мигрируется с платформы на платформу.
Ну, если так, то - удачи в работе !
Я просто высказал свое мнение... 
PS. Хотя "на сейчас" с радостью бы откатился с Win7 на WinXP, но материнка с ее "проверкой легетимности" (AsusP5B) на дает... Выбрасывает на первых шагах установки...
Поделиться72018-01-06 18:35:50
Есть ещё и такая штука для STM32 с кучей примочек.
Кокос не тормозит при запуске и работе?
материнка с ее "проверкой легетимности" (AsusP5B) на дает
На нее WinXP не ставится?
На официальном сайте для нее есть драйвера даже для Win98 и DOS не говоря уже про WinXP.
WinXP должна устанавливаться. Возможно дело в драйвере диска.
Поделиться82018-01-06 18:45:12
Тормозит при запуске, в инете поди что ищет.
Компилирует раз а 10 медленнее баскома.
Ооочень там всё не просто, сначала нужно точно и конкретно знать то, что ты хочешь и как это будет хотя-бы примерно выглядеть - и только потом уже кодить.
Например с операционкой или без подходы вААще разные.
В общем примерно всё одно и то-же, только вот там синтаксис пипец нИпанятный, сижу и тихо офигеваю.
Ну а куда деваться... 16 мГц уже маловасто! )))
Поделиться92018-01-06 18:46:16
Чего это он "умер"? Слухи? )))
Последнее обновление - 05.10.2017
http://www.coocox.org/software.html
Он бесплатный для М1 М0 М3 М4 семейств ARM...но до М7 еще есть простор )))
Отредактировано access777 (2018-01-06 18:53:31)
Поделиться102018-01-06 19:14:12
Тормозит при запуске, в инете поди что ищет.
Компилирует раз а 10 медленнее баскома.
Это одна из причин почему отказался от кокоса.
EmBitz запускается быстрее и компилирует также быстрее, за счет использования всех ядер процессора.
Поделиться112018-01-06 19:19:25
На нее WinXP не ставится?На официальном сайте для нее есть драйвера даже для Win98 и DOS не говоря уже про WinXP.WinXP должна устанавливаться. Возможно дело в драйвере диска.
Ставилась на нее хрюша до какого-то времени, но только из одной сборки, которую мне таки дали в магазине, где ее и брал когда-то.
Хорошо, что там работали знакомые ребята.
Они же и рассказали про "уникальнось" этой материнки...
В 2016-м при попытке переустановить систему вывалилось сообщение (уже не помню дословно), что "данная ОС не поддерживается".
Можно перепрошить биос, но уже попадал на неудачные попытки с другими материнками и экспериментировать не хочется...
А 7-ка меня не устраивает в первую очередь своим желанием занять все свободное место на разделе... 
Из 60 гигов она оставила на сегодняшний день менее 6...
При этом устанавливаемые программы в основной массе на других разделах...
Отредактировано Nord (2018-01-06 19:20:17)
Поделиться122018-01-06 19:41:16
Значит ставь 10-ку 
Поделиться132018-01-06 20:57:16
Значит ставь 10-ку
Ага...
Та сожрет, что осталось и другие разделы ? 
Поделиться142018-01-06 21:06:50
Не знаю что у тебя за беда... и 7-ка и 10-ка ничего не "жрут". Может что в настройках или "гриппер" какой зацепил???
Да и BIOS перепрошить дело плёвое... неужели нет программатора???
Поделиться152018-01-06 21:12:00
Не знаю что у тебя за беда... и 7-ка и 10-ка ничего не "жрут". Может что в настройках или "гриппер" какой зацепил???Да и BIOS перепрошить дело плёвое... неужели нет программатора???
Оставим этот вопрос... 
А то проснутся рожденственские модераторы - они злее июньских комаров ! 
Поделиться162019-09-29 16:52:51
Как настроить АЦП,вход PA1,надо 8 бит на максимально быстрой скоростью с записью в DMA?
Пытаюсь переделать LORI на STM32F303,хочу на его примере освоить COOCOX
Мигание светодиодом,опрос кнопок опробовал,программатор ST-LINK,плата по этой схеме (плюс светодиод на PORTC.13 и кнопка на PORTB.0 ссылка
Управление дисплеем работает (инит,рисование точек,вывод символов)
Поделиться172019-09-29 18:08:39
Пытаюсь переделать LORI на STM32F303
Изначально проект для 103, который отличается от 303. Если нет времени изучать документацию, ищите в сети примеры работы с АЦП и DMA для 303 и переделывайте код по аналогии.
Поделиться182019-09-29 18:52:30
Ну так и делаю,я не могу найти пример где АЦП в режиме 8 бит...
Поделиться192019-09-29 19:02:52
я не могу найти пример где АЦП в режиме 8 бит
АЦП настраивается используя SPL? Тогда в поле ADC_Resolution экземпляра структуры ADC_InitTypeDef нужно указать параметр ADC_Resolution_8b.
Если настройка через регистры, смотрите описание регистра CFGR. Разрешение задается в 3 и 4 бите.
Поделиться202019-09-29 20:11:17
Не доходит как...
Ладно-проехали,думаю ставить внешний АЦП-мне проще снять данные с него
Спасибо за помощь!
("АЦП настраивается используя SPL?"-а что это?)
Поделиться212019-09-29 20:32:34
Не доходит как...
В коде нашли место где настраивается АЦП?
Это функция adc_and_dma_init из файла ADC.c. Там есть строка
// настройки ADC ADC_InitTypeDef ADC_InitStructure;
Так вот, после нее пишите
ADC_InitStructure.ADC_Resolution = ADC_Resolution_8b;
Кроме этого, вообще код нужно адаптировать под 303.
думаю ставить внешний АЦП-мне проще снять данные с него
Если важно снимать данные с максимальной скоростью, вероятно со встроенным будет быстрее за счет DMA (если все правильно настроить).
SPL?"-а что это?
SPL это Standard Peripheral Libraries - библиотека функций упрощающая настройку периферии чтобы не приходилось от и до изучать все регистры МК.
Поделиться222019-09-30 14:02:42
Спасибо!
АЦП сразу хотел ставить,AD9280,буду переделывать плату
"ADC_InitStructure.ADC_Resolution = ADC_Resolution_8b;" нашел,было ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
Поделиться232019-09-30 15:45:08
Используя встроенный АЦП в 8-ми битном и в сдвоенном режиме, теоретически можно получить скорость оцифровки около 14 Msps. Не думаю что читать из внешнего АЦП получится быстрее. Ведь тактовая частота МК 72 МГц и при 14 миллионах выборок, число тактов между ними около 5. При внешнем АЦП за это время нужно прочитать данные и поместить в массив. На это 5 тактов не хватит.
Поделиться242019-09-30 18:36:43
как 5 тактов не хватит? BASCOM Avr атмега328 надо всего 3 такта,а тут больше?
$asm
IN R16, PIND
STS {osc(1)}, R16
IN R16, PIND
STS {osc(2)}, R16
IN R16, PIND
STS {osc(3)}, R16
IN R16, PIND
STS {osc(4)}, R16
IN R16, PIND
STS {osc(5)}, R16
IN R16, PIND
STS {osc(6)}, R16
IN R16, PIND
STS {osc(7)}, R16
IN R16, PIND
STS {osc(8)}, R16
IN R16, PIND
STS {osc(9)}, R16
IN R16, PIND
STS {osc(10)}, R16
......
$end Asm
Поделиться252019-09-30 18:39:34
К тому же с внешним ацп меньше шумов...
ОК,буду рыть с внутренним ацп-опыта набираться
(хана гуглу- сейчас я его замучаю
)
Поделиться262019-09-30 21:30:09
BASCOM Avr атмега328 надо всего 3 такта,а тут больше?
Код на ассемблере. Для ARM он (ассемблер) совсем другой.
Нужно учитывать что возможны циклы ожидания при обмене через матрицу шин и то что асм код будет выполнятся скажем 8 тактов совсем не значит что в реальности будет именно так. Нужно еще учесть работу конвейера.
Чтобы узнать за сколько тактов будут скопированы данные, нужно запустить код под отладчиком и замерить время выполнения с помощью DWT или таймера.
Поделиться272019-10-28 19:14:35
Не получается
void initialization()
{
Delay_Init();
Config_SPI_Pins_n_Display();
ls020_init();
// Включаем тактирование DMA1, ADC12 и GPIOA
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_ADC12, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
// Настраиваем пин на работу в режиме аналогового входа
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// Настройки DMA http://www.avislab.com/blog/stm32-dma_ru/
DMA_DeInit(DMA1_Channel1);
// Данные будем брать из регистра данных ADC1
DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)&(ADC1->DR);//адрес периферийного устройства
// Переправлять данные будем в переменную ADC_Results_Buffer;
DMA_InitStructure.DMA_MemoryBaseAddr =(uint32_t)ADC_Results_Buffer[0];//(uint32_t)&ADC_Result;
// Передача данных из периферии в память
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
// Размер буфера
DMA_InitStructure.DMA_BufferSize = DMA_BUFF_SIZE;
// Адрес источника данных не инкрементируем - он всегда один и
// тот же
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
// Аналогично, и с памятью
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;//DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
// Настройки размера данных
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
DMA_InitStructure.DMA_Priority = DMA_Priority_VeryHigh;//Приоритет (VeryHigh наивысший, High высокий, Medium средний, Low низкий)
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;// Отключить режим передачи от памяти к памяти
DMA_Init(DMA1_Channel1, &DMA_InitStructure);
// Включаем первый канал DMA1
DMA_Cmd(DMA1_Channel1, ENABLE);
// Настраиваем тактирование АЦП
RCC_ADCCLKConfig(RCC_ADC12PLLCLK_Div2);
ADC_StructInit(&ADC_InitStructure);
// Калибровка АЦП
ADC_VoltageRegulatorCmd(ADC1, ENABLE);
ADC_SelectCalibrationMode(ADC1, ADC_CalibrationMode_Single);
ADC_StartCalibration(ADC1);
// Настраиваем непрерывные преобразования
ADC_CommonInitStructure.ADC_Mode = ADC_Mode_Independent;
ADC_CommonInitStructure.ADC_Clock = ADC_Clock_AsynClkMode;
ADC_CommonInitStructure.ADC_DMAAccessMode = ADC_DMAAccessMode_Disabled;
ADC_CommonInitStructure.ADC_DMAMode = ADC_DMAMode_OneShot;
ADC_CommonInitStructure.ADC_TwoSamplingDelay = 0;
ADC_CommonInit(ADC1, &ADC_CommonInitStructure);
// Включаем работу ДМА через АЦП
ADC_DMACmd(ADC1, ENABLE);
ADC_DMAConfig(ADC1, ADC_DMAMode_Circular);
while(ADC_GetCalibrationStatus(ADC1) != RESET );
// Продолжается настройка АЦП
ADC_InitStructure.ADC_ContinuousConvMode =ENABLE; // измерение ADC_ContinuousConvMode_Enable;
ADC_InitStructure.ADC_Resolution = ADC_Resolution_12b;
ADC_InitStructure.ADC_ExternalTrigConvEvent = ADC_ExternalTrigConvEvent_0;
ADC_InitStructure.ADC_ExternalTrigEventEdge = ADC_ExternalTrigEventEdge_None;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;//выравнивание битов результат - прижать вправо
ADC_InitStructure.ADC_OverrunMode = ADC_OverrunMode_Disable;
ADC_InitStructure.ADC_AutoInjMode = ADC_AutoInjec_Disable;
ADC_InitStructure.ADC_NbrOfRegChannel = 1; //количество каналов
ADC_Init(ADC1, &ADC_InitStructure);
//Ну и тут мы все включаем и поехали
ADC_DMAConfig(ADC1, ADC_DMAMode_Circular);
ADC_DMACmd(ADC1, ENABLE);
DMA_Cmd(DMA1_Channel1, ENABLE);
ADC_Cmd(ADC1, ENABLE);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_RDY));
//ls020_setka();
}
/*******************************************************************/
int main(void)
{
initialization();
//while(1){ADC_StartConversion(ADC1); }
ADC_StartConversion(ADC1);
while(1)
{
// Замер - начало
ls020_fillrect(0, 0, maxX, maxY, Red);delay_ms(100);
DMA_Cmd(DMA1_Channel1, DISABLE);// Отключаем DMA канал
DMA1_Channel1->CNDTR = DMA_BUFF_SIZE;// Количество пересылаемых значений
DMA1->IFCR |= DMA_IFCR_CTCIF1; // Сбрасываем флаг окончания обмена
ADC_DMAConfig(ADC1, ADC_DMAMode_Circular);
ADC_DMACmd(ADC1, ENABLE);
DMA_Cmd(DMA1_Channel1, ENABLE);
ADC_Cmd(ADC1, ENABLE);
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_RDY));//Включаем DMA
//ADC_DMACmd(ADC1, ENABLE);
//ADC_Cmd(ADC1, ENABLE);
ls020_fillrect(0, 0, maxX, maxY, Green);delay_ms(100);---[b]вот здесь программа стоит на месте[/b]
while(!(DMA1->ISR & DMA_ISR_TCIF1));//Ждем заполнения DMA
ls020_fillrect(0, 0, maxX, maxY, 0x00);//delay_ms(100);
ls020_setka();
delay_ms(100);
}
}Поделиться282019-10-28 21:35:36
DMA_InitStructure.DMA_MemoryBaseAddr =(uint32_t)ADC_Results_Buffer[0];
Адрес находится в первом элементе массива? Скорее всего имелось в виду
DMA_InitStructure.DMA_MemoryBaseAddr =(uint32_t) &ADC_Results_Buffer[0];
ls020_fillrect(0, 0, maxX, maxY, Green);delay_ms(100);---вот здесь программа стоит на месте
Если в строке выше, в первом элементе массива не адрес буфера, а данные, скорее всего программа уходит в прерывание HardFault или аналогичное, вызываемое при ошибке. Я о нем писал (правда МК другой). Отладка программы
Попробуйте в момент зависания остановить отладчик и посмотрите на какую строку он укажет.
Поделиться292019-10-29 17:29:27
Скорее всего нет флага заполнения DMA,частично победил,но работает минута две и виснет
Еще снятие семплов ровно в 2 раза ниже чем указано в таблице

Как запустить отладчик я не знаю-мой STLINK V2 кокос не видит,прошиваю через STM32 ST-LINK Utiliti
Исходник сейчас немного изменил,позже выложу
Черт меня дернул изучать эти стм,но теперь дороги назад нет-интересно узнать что и как...
Отредактировано bulat943 (2019-10-29 17:29:54)
Поделиться302019-10-29 17:41:49
Еще снятие семплов ровно в 2 раза ниже чем указано в таблице
Т. е. 2.5 миллиона в секунду?
Каким образом это было измерено? Попробуйте переводить ядро в спящий режим (Sleep) чтобы программа не выполнялась и не мешала DMA копировать данные.
Как запустить отладчик я не знаю-мой STLINK V2 кокос не видит,прошиваю через STM32 ST-LINK Utiliti
В настройках проекта выбран ST-Link в качестве отладчика?
Разобраться с отладчиком лучше как можно скорее, потому что без него будет сложно, особенно поначалу...