Jump to content
mr_smit

Вопросы По Coocox Coide

Recommended Posts

Добрый день. Использую отладочную плату discovery. Подключил по SPI дисплей от Siemens S65. Всё работает, но не могу понять как работать со sprintf в CooCox ??? В чистом виде не компилируется. Показывает не понятные ошибки привязанные к ядру. Погуглил, нашел: http://www.coocox.or...ae-001d7d723e56

Кокосовцы в курсе и предлагают прикрепить к проекту доп. файлик. Прикрепил. Всё стало компилироваться. Но sprintf не работает. Может кто прояснит ситуацию.

char convert[32];
float temp = 23.9;
...
put_string(50,22,"ТЕМПЕРАТУРА",0x0000,2);

sprintf(convert,"%.1f",temp);
put_string(50,50,convert,0x0000,2);

Слово "температура" выводится, а само значение нет.

Посмотрел их измененный файл. У них там написано:

signed int sprintf(char *pStr, const char *pFormat, ...)

Что значит троеточие??? И где форматирование точка с запятой ' f ' ?

/* Parse type */
switch (*pFormat) {
case 'd':
case 'i': num = PutSignedInt(pStr, fill, width, va_arg(ap, signed int)); break;
case 'u': num = PutUnsignedInt(pStr, fill, width, va_arg(ap, unsigned int)); break;
case 'x': num = PutHexa(pStr, fill, width, 0, va_arg(ap, unsigned int)); break;
case 'X': num = PutHexa(pStr, fill, width, 1, va_arg(ap, unsigned int)); break;
case 's': num = PutString(pStr, va_arg(ap, char *)); break;
case 'c': num = PutChar(pStr, va_arg(ap, unsigned int)); break;
default:
return EOF;
}

Думал modf использовать, но эта функция всё равно дробную часть в виде точки с запятой выдает. Умножение на 10 не помогает. Как тогда число с плавающей точкой перевести в строку то? :wall:

Share this post


Link to post
Share on other sites

Попробуйте так:

sprintf(convert,"%f",temp);

Троеточия подразумевают бесконечное число параметров. Т.е. можно не только одну но и более переменных выводить одной командой в один буфер, кроме вывод тут можно сделать сразу всего, например sprintf(convert,"Температура = %f",temp);

* так работает в классическом Си, не знаю как с микроконтроллерами.

** судя по тому, что f не прописан, оно скорее всего и не заработает

Edited by tcoder

Share this post


Link to post
Share on other sites

Попробуйте так:

sprintf(convert,"%f",temp);

** судя по тому, что f не прописан, оно скорее всего и не заработает

Так оно и не работает. Я пробовал. Дурдом какой то :(

Edited by mr_smit

Share this post


Link to post
Share on other sites

Конденсаторы Panasonic. Часть 4. Полимеры – номенклатура

В заключительной, четвертой статье из цикла «Конденсаторы Panasonic» рассматриваются основные достоинства и особенности использования конденсаторов этого японского производителя на основе полимерной технологии. Главной конструктивной особенностью таких конденсаторов является полимерный материал, используемый в качестве проводящего слоя. Полимер обеспечивает конденсаторам высокую электрическую проводимость и пониженное эквивалентное сопротивление (ESR). Номинальная емкость и ESR отличается в данном случае высокой стабильностью во всем рабочем диапазоне температур. А повышенная емкость при низком ESR идеальна для решения задач шумоподавления и ограничения токовых паразитных импульсов в широком частотном диапазоне.

Читать статью

А если разбить float на два целых числа и вывести их через точку ?

Share this post


Link to post
Share on other sites

А если разбить float на два целых числа и вывести их через точку ?

Можно и так (кстати как?). Но всё же почему нет стандартной функции :(

Share this post


Link to post
Share on other sites
                     

STM32G0 - средства противодействия угрозам безопасности

Результатом выполнения требований безопасности всегда является усложнение разрабатываемой системы. Особенно чувствительными эти расходы стали теперь, в процессе массового внедрения IoT. Обладая мощным набором инструментов информационной безопасности, микроконтроллеры STM32G0 производства STMicroelectronics, объединив в себе невысокую цену, энергоэффективность и расширенный арсенал встроенных аппаратных инструментов, способны обеспечить полную безопасность разрабатываемого устройства.

Подробнее...

Может кто знает лучший вариант... я делал так:

float pi = 3.14;
int pi_int = pi; //здесь будет целая часть - 3
int pi_float = ((pi*100)-(pi_int*100)); //здесь будет дробная часть - 14

Если в дробной части нужна точность до тысячных, то ((pi*1000)-(pi_int*1000)) и т.д...

Далее просто выводим pi_int и pi_float через точку и получим 3.14

Edited by TDSS

Share this post


Link to post
Share on other sites

Служба поддержки кокоса молчит. Так жаль. Мне понравился этот компилятор. А ля кодевижн для Мег.

Edited by mr_smit

Share this post


Link to post
Share on other sites

Я вообще не понимаю что за `_sbrk_r' `_lseek' `_kill' `__exidx_start' ему нужны

[cc] c:/program files/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-sbrkr.o): In function `_sbrk_r':

[cc] writer.c:(.text+0x10): undefined reference to `_write'

[cc] sbrkr.c:(.text+0xc): undefined reference to `_sbrk'

[cc] c:/program files/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-writer.o): In function `_write_r':

[cc] c:/program files/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-closer.o): In function `_close_r':

[cc] closer.c:(.text+0xc): undefined reference to `_close'

[cc] c:/program files/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-lseekr.o): In function `_lseek_r':

[cc] lseekr.c:(.text+0x10): undefined reference to `_lseek'

[cc] c:/program files/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-readr.o): In function `_read_r':

[cc] readr.c:(.text+0x10): undefined reference to `_read'

[cc] c:/program files/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/armv7-m\libgcc.a(unwind-arm.o): In function `get_eit_entry':

[cc] unwind-arm.c:(.text+0x144): undefined reference to `__exidx_start'

[cc] unwind-arm.c:(.text+0x148): undefined reference to `__exidx_end'

[cc] c:/program files/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-abort.o): In function `abort':

[cc] abort.c:(.text+0xa): undefined reference to `_exit'

[cc] c:/program files/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-signalr.o): In function `_kill_r':

[cc] signalr.c:(.text+0xe): undefined reference to `_kill'

[cc] c:/program files/arm-none-eabi-gcc-4_6/bin/../lib/gcc/arm-none-eabi/4.6.2/../../../../arm-none-eabi/lib/armv7-m\libg.a(lib_a-signalr.o): In function `_getpid_r':

[cc] signalr.c:(.text+0x28): undefined reference to `_getpid'

[cc] collect2: ld returned 1 exit status

BUILD FAILED

Total time: 1 second

Share this post


Link to post
Share on other sites

Ответ с кокосового форума:

//do the following:


float float1;
snprintf(buf, sizeof(buf), "blablabla %d.%d", (int8_t) float1, (((int16_t)(float1 * 10.0)) % 10));

Edited by mr_smit

Share this post


Link to post
Share on other sites

При отладке проекта в CoIDE 1.6.0 в вкладке Variables, переменные выводятся по умолчанию в DEC формате, каждый раз приходится переключать на HEX. Нигде не могу найти настройки, чтобы все время выводилось по умолчанию в шестнадцатеричном формате.

Share this post


Link to post
Share on other sites
Guest Илья

Здравствуйте. Все наверно сталкивались с возможностью автозамены кода. (К примеру вывод конструкции if-else когда начинаешь набирать if). Но вид в котором выстраиваются скобки совершенно не устраивает. Может кто знает, где это можно изменить?

Share this post


Link to post
Share on other sites
Guest Cergei

Добрый день. Использую отладочную плату discovery. Подключил по SPI дисплей от Siemens S65. Всё работает, но не могу понять как работать со sprintf в CooCox ??? В чистом виде не компилируется. Показывает не понятные ошибки привязанные к ядру. Погуглил, нашел: http://www.coocox.or...ae-001d7d723e56

Кокосовцы в курсе и предлагают прикрепить к проекту доп. файлик. Прикрепил. Всё стало компилироваться. Но sprintf не работает. Может кто прояснит ситуацию.

char convert[32];
float temp = 23.9;
...
put_string(50,22,"ТЕМПЕРАТУРА",0x0000,2);

sprintf(convert,"%.1f",temp);
put_string(50,50,convert,0x0000,2);

Слово "температура" выводится, а само значение нет.

Посмотрел их измененный файл. У них там написано:

signed int sprintf(char *pStr, const char *pFormat, ...)

Что значит троеточие??? И где форматирование точка с запятой ' f ' ?

/* Parse type */
switch (*pFormat) {
case 'd':
case 'i': num = PutSignedInt(pStr, fill, width, va_arg(ap, signed int)); break;
case 'u': num = PutUnsignedInt(pStr, fill, width, va_arg(ap, unsigned int)); break;
case 'x': num = PutHexa(pStr, fill, width, 0, va_arg(ap, unsigned int)); break;
case 'X': num = PutHexa(pStr, fill, width, 1, va_arg(ap, unsigned int)); break;
case 's': num = PutString(pStr, va_arg(ap, char *)); break;
case 'c': num = PutChar(pStr, va_arg(ap, unsigned int)); break;
default:
return EOF;
}

Думал modf использовать, но эта функция всё равно дробную часть в виде точки с запятой выдает. Умножение на 10 не помогает. Как тогда число с плавающей точкой перевести в строку то? :wall:

У меня тоже сейчас похожая проблема. Ссылка, что ты прикрепил ведёт на несуществующую станицу. Можешь рассказать, что за файлик, и как его подключить?

Share this post


Link to post
Share on other sites

Можешь рассказать, что за файлик, и как его подключить?

На стартовой странице кокоса где галочками выбираются используемые библиотеки надо поставить глочку "retarget printf". Сейчас вроде поправили эту библиотеку и всё работает корректно.

Share this post


Link to post
Share on other sites

я подключил так

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

а потом сделал так

void PrintTarget(uint32_t Value, char *End)
{
char str_buf_V[8];
char str_buf[8];

sprintf(str_buf_V, "%04u%s", Value, End);
str_buf[0] = str_buf_V[0];
str_buf[1] = str_buf_V[1];
str_buf[2] = 0x2E;
str_buf[3] = str_buf_V[2];
str_buf[4] = str_buf_V[3];
str_buf[5] = str_buf_V[4];
str_buf[6] = str_buf_V[5];
MT_WH1602_SetDDRAMAddress(0x0A);
while (MT_WH1602_ReadBusy()!=FALSE);
lcd_write_str(str_buf);
}

в реализации тупо, но на деле работает )

вся эта билиберда с массивом только для того, чтобы точку в нужное место поместить. Так как у меня не флоат, а целое с определенной точностью

Edited by mail_robot

Share this post


Link to post
Share on other sites
ся эта билиберда с массивом только для того, чтобы точку в нужное место поместить.
А в строке форматирования sprintf её добавить ? :)

Share this post


Link to post
Share on other sites

Всем привет. Нахожусь на стадии изучения этого камня параллельно языка C, возникают вопросы на которые ищу ответ среди вас.

Решил включить диодики на плате STM32VLDISCOVERY c STM32F100RB.

void main()
{
 //Enable port C clocking
 *(unsigned long*)(0x40021018) |= 0x10;
 /*0x40021000 - адрес регистра AHB, 0x018 - добавка для APB2, 0x10 значение для IOPCEN
 */
 //little delay for GPIOC get ready
 volatile unsigned long i=0;
 i++; i++; i++;
 i=0;
 //режим работы C 8
 *(unsigned long*)(0x40011004) |= 0x10;
 /* 0x40011000 адрес GPIOC , 0x04 - адрес CRH , 0x10 - значение для 8 пина пуш-пул, 2 МГц
 */
 //Turn LED ON!
 *(unsigned long*)(0x40011010) = 0x100;
 /* 0x40011000 адрес GPIOC , 0x10 - адрес BSRR, 0x100 - значение для 8 пина
 */
 while(1);
}

К сожалению диоды не горят. Все мои попытки как-то запустить сей процесс не помогли.

Есть ли здесь ошибка?

Информацию брал с сайта STM, и хабра .

Этот камень для меня первый.

Буду благодарен за вашу помощь.

Share this post


Link to post
Share on other sites

вот ты извращенец

наверняка гденить в адресах этих напутался. Есть же нормальный метод инициализации порта, почти человеческим языком

GPIO_InitTypeDef GPIO_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOF, ENABLE);
// GPIO A
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOA, &GPIO_InitStructure);
// GPIO B
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOB, &GPIO_InitStructure);
// GPIO C
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
GPIO_Init(GPIOC, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
GPIO_Init(GPIOC, &GPIO_InitStructure);

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

лучше сразу привыкнуть к нормальной записи и ей пользоваться. Тем более в кокосе великолепнейшая справка по всем функциям и библиотекам со встроенными примерами

Edited by mail_robot

Share this post


Link to post
Share on other sites

mail_robot, спасибо за ответ.

Но, хотелось бы, для общего развития и понимания работы данного девайса действовать через регистры.

К сожалению, смотря в библиотеки к стмке, я так и непонял как они, там, работают, поэтому пришлось заниматься сочинительством.

Буду рад участию всех кто понял эту вундервафлю.

Edited by atrel

Share this post


Link to post
Share on other sites

в стм НЕ надо через регистры. Это совсем другой класс процессора. И адреса в нем знать совершенно не обязательно. Модель программирования отличается от AVR и PIC. Там ресурсов немного, регистры - по пальцам. А тут их просто море, на каждый чих по флагу, на каждый пук свой регистр. На каждое действие куча перекрестных взаимодействий. Если вы будете продолжать в том же духе, думаю знакомство с стм будет весьма мрачным

И кстати не стоит шибко экономить ресурсы и ужимать код. Тут это уже не требуется. Нет, соблюдать правила писанины конечно надо, но не настолько жестко. Производительности по сравнению с 8-битками просто пипец как много...

В целом понять нужно немного.

1. Вся периферия живет своей жизнью. Каждый модуль может произвольно подключаться к любому другому, каскадироваться и работать независимо от ядра.

2. В СТМ все просто, не надо усложнять наследием прошлого.

3. Все надо писать понятным языком библиотеки CMSIS

4. Писать лучше на С++. Процедурный код уже не пойдет на такие обьемы. Поэтому начать лучше с кокоса, но потом все равно пересаживаться на Keil

Edited by mail_robot

Share this post


Link to post
Share on other sites

Вам Не надо. А Мне Интерестно!

Поэтому я и ищу соучастников.

К стати, работаю я в кокосе. Может он неможет так? (ошибок при компиляции не выдаёт).

Edited by atrel

Share this post


Link to post
Share on other sites

Короче, работает так

void main()
{
 //Enable port C clocking
 *(unsigned long*)(0x40021018) |= 0x10;
 /*0x40021000 - адрес регистра AHB, 0x018 - добавка для APB2, 0x10 значение для IOPCEN
 */
 //little delay for GPIOC get ready
 volatile unsigned long i=0;
 i++; i++; i++;
 i=0;
 //режим работы C 8
  *(unsigned long*)(0x40011004) = 0x02;
 /* 0x40011000 адрес GPIOC , 0x04 - адрес CRH , 0x10 - значение для 8 пина пуш-пул, 2 МГц
 */
 //Turn LED ON!
  //*(unsigned long*)(0x4001100c) = 0xffff;
  *(unsigned long*)(0x40011010) = 0x100;
 /* 0x40011000 адрес GPIOC , 0x10 - адрес BSRR, 0x100 - значение для 8 пина
 */
 while(1);
}

Всё дело было в неправильном значении в CRH и просто = вместо |=.

Share this post


Link to post
Share on other sites

Теперь, вопрос стоит об атомарных операциях.

1. Как их делать?

2. Их преимущество?

3. Почему во многих источниках говорится об группах битов, а не единицах?

Всегда рад Вашему участию.

Share this post


Link to post
Share on other sites

почитайте на тему битовых массивов. Там достаточно много инструментов описано. Но честно говоря смысла в этом не много. Экономии на грош, а потери времени на кодинг существенные. Тем более что С++11 вроде как умеет это дело автоматически оптимизировать даже если и не объявлять битовых структур (по непроверенным слухам). GCC таким свойством не владеет, но зато более толерантен к другим моментам, поэтому код из GCC далеко не всегда прямо переносится на С++11

В остальном битовые операции те же самые что и в восьмибитках (если речь идет о битовом доступе к регистрам и переменным). Синтаксис языка тот же самый

Edited by mail_robot

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By ChaNger16ua
      Здравствуйте, недавно начал заниматься stm32, до этого занимался только Arduino/AVR. Купил себе плату с чипом STM32F103C8T6, и программатор ST-Link v2.
      Сразу же начал искать себе подходящую IDE, остановил свой выбор на CoIDE. И когда начал, проблем с загрузкой, и компиляцией программы не было, управлял всем через регистры, и радостно мигал светодиодом, но когда решил проверить как работает отладка, столкнулся с проблемой. При запуске отладки проект компилировался и загружался, но сама отладка выдавала ошибку: Cannot execute this command without a live selected thread. Перерыл весь интернет, ничего не помогло. 
      Взял уже пример с миганием светодиода из библиотеки GPIO, поменял название функции на int main, поставил return, и дописал строку которая включает SWD. Вот сам код:
      #include "stm32f10x.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" int main(void) { int i; /* Initialize Leds mounted on STM32 board */ GPIO_InitTypeDef GPIO_InitStructure; /* Initialize LED which connected to PC6,9, Enable the Clock*/ RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); /* Configure the GPIO_LED pin */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable , ENABLE); while (1) { /* Toggle LEDs which connected to PC6*/ GPIOC->ODR ^= GPIO_Pin_13; /* delay */ for(i=0;i<0x100000;i++); } return 0; } Запускаю, и ничего та же ошибка.
      После решил сам все не делать, а создать проект в STM32CubeMX. Делал по многим примерам(код кидать не буду он стандартный). Правильно настраивал порты, в пинах sys выставил значение Serial Debug, выставил тактирование. Кидаю проект, все правильно выставляю(папки Drivers, Src, Inc), потом в конфигурации во вкладке компилятор, выставляю переменные. Компилирую, выдает такую строку:
      Program Size: text data bss dec hex filename 0 0 0 0 0 NewMain.elf тоесть программы по сути нет, это в настройках линкера во вкладке options стоит галочка на: Use memory layout from memory window.
      Окей знаю что линкер просто не подключает нужные библиотеки и файлы, поэтому программа ничего не весит.
      Снимаю галочку, ставлю Scatter file, который сделала STM32CubeMX, запускаю.
      Дальше выдает ошибку, но не компиляции, вылазит окно Problem Occurred, нажимаю details, там такое:
      An internal error occurred during: "Building". String index out of range: -1 И все, компиляция прервана. НО если очистить проект, и потом сбилдить(либо ребилд), то работает, но заветный светодиод не моргает.
      Дальше касательно отладки, в нее не могу зайти, потому что при отладке проект компилируется, но я его не могу скомпилировать, могу перебилдить, и поэтому отладка тупо не включается, но есть я очищу проект, то отладка просто не работает.
       
      P.S перемычки на плате менял, как угодно, и с одной прошивкой и другой, не работает. Пытался освоить uVision, не пошло, куча проблем с ней, хотя уже и по гайдам делал(по нескольким), и сам все пытался. Но в итоге как не работало, так и не работает.
      Поэтому прошу помощи.
    • Guest Александр
      By Guest Александр
      Добрый день
      Проблема с оценочной платой STM32F4-DISCOVERY в части работы USART
      суть вопроса
      по USART шлется и принимается блоки данных по 3 байта (в принципе сколько угодно) при этом если подключен USB разъем ST-LINKа то все работает должным образом (данные снуют туда сюда без проблем), но при отключении USB ST-LINKа данные из платы STM32F4-DISCOVERY идут а вот принимать данные плата отказывается (естественно подаю внешнее питание +5 вольт на одноименный контакт). Если кто сталкивался с подобной проблемой прошу хотя бы направить в сторону железа или софта.
      На плате STM32F4-DISCOVERY убраны перемычки SB11(T_NRST) и SB12(T_SWO) а так же отпаян резистор R68 (MCO). Плата при этом прошивается без проблем, и стартует при внешнем питании(не от USB ST-LINKа) тоже без каких то заморочек.
      код прикладывать на данный момент не вижу смысла там все просто, при чем при подключении USB ST-LINKа программа работает.
      Проект пишется на IARe, конфигурация формируется в STM32Cube.
      Заранее спасибо за ответ
    • By oops13
      Простите, продублирую свой пост в новой теме:
      Форумчане, коллеги! Подскажите, пожалуйста. CoIDE выдает вот такую ошибку при записи во флешпамять:  Error: Connect failed, check config and cable connection. Со шнуром USB всё в порядке, ST-Link Utility установил. Но в диспетчере устройств драйвер STM32 почему-то именно в разделе дисковых устройствах отображается(в контроллерах USB его нет). На отладочной плате Discovery горит Красный светодиод. Настройки дебаггера в CoIDE прилагаю. Спасибо.

×
×
  • Create New...