Перейти к содержанию

Smith2007

Members
  • Постов

    93
  • Зарегистрирован

  • Посещение

Весь контент Smith2007

  1. Smith2007

    Keil mVision V5

    Вы правы. Первый раз поисковик выдал инфу с какого-то сайта и я не обратил внимание на дату публикации. Сейчас зашел на сайт атолика и там действительно свободное скачивание и без ограничений похоже (или что-то все же есть?) С Кейл я уже даже привык немного. И в инете много ссылок. На сколько трудно мигрировать с одной ide на другую? Конечно хотелось бы иметь версию без ограничений в 32Кб.
  2. Smith2007

    Keil mVision V5

    3 дня потребовалось, что бы до меня дошло в чем ошибка #ifdef __cplusplus extern "C" { #endif void USART1_IRQHandler(void) { if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) { //RX_FLAG_END_LINE = 1; //USART_ClearITPendingBit(USART1, USART_IT_RXNE); RXc=USART_ReceiveData (USART1); RX_BUF[RXi] = RXc; RXi++; if (RXc != 0x0d) { if (RXi > RX_BUF_SIZE-1) { clear_RXBuffer(); } } else { RX_FLAG_END_LINE = 1; } //Echo //USART_SendData(USART1, RXc); } } #ifdef __cplusplus } #endif Я не профессиональный программер. И понимание приходит зачастую только после написания десятков разных вариантов процедур. Т.е. через руки Но с С++ мне почему-то проще. И использование "тяжеловесных" библиотек меня на данном этапе ни как не смущает, а напротив даже помогает. Ну и что, что преобразование atoi проигрывает по скорости другим методам (в ручную написанным)? Ну и что, что sprintf тянет за собой несколько Кб кода? Мои прошивки умещаются в 16Кб. И даже 64Кб флеша на борту макетки f103c8t6 мне с избытком. Если еще учесть, что Keil допускает не более 32Кб. (с фриварной лицензией). Зато я гарантировано исключу множество ошибок, которые я могу допустить учитывая мой небольшой опыт и сокращу время разработки.
  3. Smith2007

    Keil mVision V5

    Спасибо. Учту. В другой части // Класс кнопка #ifndef button_h #define button_h #include <stdint.h> #include "stm32f10x.h" #include "stm32f10x_gpio.h" class CButton { public: GPIO_TypeDef GPIOx; uint32_t GPIO_Pin; bool mode; uint32_t countOn; uint32_t countHold; bool state; // текущее состояние кнопки bool hold; // bool btOn; // момент нажатия кнопки bool btOff; // момент отпускания кнопки bool btHold; // Press long hold // Нажатие кнопки void update(void); // Конструктор класса CButton(GPIO_TypeDef *GPIOx, uint32_t GPIO_Pin, bool mode, uint32_t countOn, uint32_t countHold); private: GPIO_TypeDef *_GPIOx; uint32_t _GPIO_Pin; uint32_t _countOn; // время задержки антидребезга uint32_t _countHold; // время задержки антидребезга uint32_t _count; bool _mode; // режим работы кнопки, задается при инициализации // -0- если нормально разомкнутая кнопка соеденена с минусом // -1- если нормально разомкнутая кнопка соеденена с плюсом через резистор 1К bool _p_state; // предыдущее состояние кнопки bool _p_hold; bool _p_state_filtr; void filtr(void); void clickOn(void); void clickOff(void); void clickHold(void); }; #endif // Создаем кнопку в main CButton bt1(GPIOB, GPIO_Pin_12, true, 2000, 300000);
  4. Smith2007

    Keil mVision V5

    Не забыл main.h зы. А Вы компилируете С++ ?
  5. Smith2007

    Keil mVision V5

    Кейл 5.25 Проект компилирую как С++
  6. Smith2007

    Keil mVision V5

    Но есть аналог: void USARTSend(const unsigned char *ptrOutBuf) Попробовал привести ее к виду void USARTSend(const char *ptrOutBuf). Результат идентичен. Кейл предупреждает о нежелательном действии но компилирует без ошибок. Кстати, на что обратил еще внимание.... В тот момент когда я компилировал программу с вызовами типа USARTSend("\r\nOK\r\n"); Размер кода составил 5005 байт. Текстовые константы поместил в массивы char и вывел char strOK[] = "OK\r\n"; char strRst[] = "RST OK\r\n"; char strError[] = "Error\r\n"; char strRstAir[] = "RST AIR OK\r\n"; char strRstFront[] = "RST Front OK\r\n"; char strRstRear[] = "RST Rear OK\r\n"; char strInfo[] = "INFO OK\r\n"; USARTSend(strOK); Размер откомпилированного кода составил 4916 байт. В компиляторе стоит уровень оптимизации - Level1 С чем это может быть связано?
  7. Smith2007

    Keil mVision V5

    Из описания... TrueSTUDIO Lite, не имеет ограничений по времени пользования и размеру создаваемого кода. Демоверсия включает откомпилированные динамические библиотеки и допускает разработку полноценных приложений. Однако в ней отсутствует поддержка С++ В общем пошел стандартным способом... Объявил массивы char strOK[] = "OK\r\n"; char strRst[] = "RST OK\r\n"; char strError[] = "Error\r\n"; char strRstAir[] = "RST AIR OK\r\n"; char strRstFront[] = "RST Front OK\r\n"; char strRstRear[] = "RST Rear OK\r\n"; char strInfo[] = "INFO OK\r\n"; void SendOK(void) { USARTSend(strOK); } void USARTSend(char *ptrOutBuf) { while (*ptrOutBuf) { USART_SendData(USART1, *ptrOutBuf++); while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) {} } } И вызовы теперь в Keil без предупреждений
  8. Smith2007

    Keil mVision V5

    Спасибо за инфу. На С++ мне проще перетащить проекты с ардуинки. Да и привычнее как-то. Больших проектов нет. В 16 кб вмещаются. Поэтому не стесняюсь использовать классы и всякие sprintf, atoil , etc. Когда упрусь в объемы - тогда можно думать. Хотя будет проще МК поменять. А в какой среде нет похожих глюков при использовании С++ ?
  9. Smith2007

    Keil mVision V5

    Так тоже пробовал. Пытаюсь понять, почему Keil выдает предупреждение о нежелательном преобразовании. Код компилируется без ошибок и без ворнингов. И исполняется тоже без ошибок. зы. Есть конечно выход. Определить заранее несколько массивов и проинициализировать их этими строками. Следующий вызов в редакторе без ворнингов sprintf(buffer, "zz= %04x \r\n", zz); USARTSend(buffer);
  10. Smith2007

    Keil mVision V5

    Если указать только void USARTSend( char *ptrOutBuf) { ... } То выдает ошибку при компиляции на вызовы USARTSend("\r\nUSART1 is ready.\r\n");
  11. Smith2007

    Keil mVision V5

    Такая конструкция уже есть. Смотрите выше. При помощи этой процедуры я вывожу значения переменные из массива char sprintf(buffer, "zz= %x \r\n", zz); USARTSend(buffer);
  12. Smith2007

    Keil mVision V5

    Исследую платку stm32f103c8t6. В качестве ide - Keil mVision v5. Проект на Си++ При работе с UART мне требуется вывести некоторую информацию. Делаю это при помощи следующих функций: void USARTSend(char *ptrOutBuf) { while (*ptrOutBuf) { USART_SendData(USART1, *ptrOutBuf++); while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) {} } } void USARTSend(int val) { int i = 0; sprintf(buffer, "%x", val); while (buffer[i]) { USART_SendData(USART1, buffer[i]); i++; while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) {} } } void USARTSend(const unsigned char *ptrOutBuf) { while (*ptrOutBuf) { USART_SendData(USART1, *ptrOutBuf++); while(USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET) { } } } В некоторых строках вывожу текст следующим вызовом: USARTSend("\r\nUSART1 is ready.\r\n"); Компилируется без ошибок. Вывод сообщений в UART тоже без ошибок. Но в редакторе кода Keil на против последней записи появляется значок warning! Код выполняется верно Как можно избавиться от неприятного предупреждения?
  13. Для начала попробую измерить токи в цепи потребления. Вполне допускаю, что там будут очень низкие токи.
  14. Спасибо! Сегодня привез lm358 и подключил. В обратной связи поставил подстроечный резистор 10 кОм (что был в наличии). В общем вполне приемлемо. На входе усилителя поставил RC фильтр с огромной t. 100кОм, 10мФ. Осцилограф ловит только помехи самого питания. В общем схема получилась. На lm358 падает почти 1В. Питание 11.6В, на выходе получаю максимум 10.6В
  15. Добрый день уважаемые форумчане. Необходимо получить изменяемое программно напряжение от 0 до 12В. Выходной ток не более 200мА. Дискретизация достаточна 255 уровней. Вижу 2 варианта: 1. ШИМ и на выходе ключ, который будет коммутировать 12В. На выходе ключа поставить RC (или LC) фильтр. 2. Использовать какой либо внешний ЦАП. В качестве контроллера предполагаю использование stm32f344c8t6. В контроллере имеется встроенный DAC, но совсем не понял как ему на выходе получить напряжение до 12В. Собственно вопроса 2: 1. Будет ли рабочим вариант 1? 2. Можно ли на stm32f334c8t6 получить на выходе DAC напряжение до 12В?
  16. Использую STM32CubeMX. Мне это не помогло. Прошивка и отладка не работают. В файле stm32f1xx_hal_msp.c Закомментировал строку //__HAL_AFIO_REMAP_SWJ_DISABLE(); После этого загрузка и отладка стали работать нормально. МК - STM32F103C8T6
  17. Ищу библиотеку с ardiuno nano v7 (32 контакта). В интернете встречаю только в 30-ти контактном исполнении. Если кто видел, дайте пожалуйста ссылку.
  18. Добрый день форумчане! Помогите определиться с выбором настольного мультиметра. Хочу настольный, с питанием от сети. Среди возможных вариантов смотрел: 1. mastech ms8050 2. VC8246B 3. Uni-t UT804 (Uni-t UT805 -уже слишком дорог) Использоваться будет для отладки схем на основе Arduino. Бюджет хотелось выдержать до 15 т.р. Сейчас имеется простенький Mastech MY65
×
×
  • Создать...