Гость cersham

CubeMX шим TIM1 burst DMA

2 сообщения в этой теме

Гость cersham   
Гость cersham

Есть функции в HAL 

HAL_TIM_DMABurst_WriteStart

запуска в бурст значений сразу несколько в регистры таймера,а вот такой настройки нет в самом CubeMx ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
mail_robot    1 407

куб это только конфигуратор. Он может выставить основные настройки блоков процессора и подготовить API для их использования. Но все остальное делает сам программист. Так что лишних иллюзий тут лучше не питать. Это не ардуино

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: Anton Klapatun
      День добрый!
       
      Имеется sim-карта со статическим IP и модем SIM800C, который через UART соединен с STM32F0.
      Прочитав статью на хабре, которая и являлась отправной точкой, было решено повторить подвиг, но в версии lwip 2.0.3, которой я пользуюсь, ppp изменился до неузнаваемости, что сначала внесло некоторый сумбур. Но в документации к lwip был найден текстовый файл с настройкой ppp-соединения (ppp.txt, прикреплю его ниже), в котором было все, что нужно для счастья, но когда модем начал общаться с контроллером, дальше фазы LCP дело не зашло. Как я понял из документа (ppp_connect.docx), который оказался у меня уже-и-не-помню-откуда, после конфигурирования параметров соединения в фазе LCP контроллер должен посылать в модем пакет с заголовком PAP (C0 23), но он почему-то этого не делает... Он вообще больше ничего не делает. Я пытался проследить в отладчике весь путь запроса, что приходит от модема, но это только больше меня запутало.
      Собственно, прием данных у меня организован через прерывание. После ввода AT-команды "ATD*99***1#" и получения ответа "CONNECT", устанавливается флаг "ppp_enable" и при приходе байта он кладется в очередь `xQueue_PPP_Package`.
      void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) { uint8_t u8; if(huart == &huart1) { if (ppp_enable == true) { portBASE_TYPE xHigherPriorityTaskWoken_PPP_Rx; u8 = Sim800.UsartRxTemp; xHigherPriorityTaskWoken_PPP_Rx = pdFALSE; xQueueSendFromISR(xQueue_PPP_Package, &u8, &xHigherPriorityTaskWoken_PPP_Rx); } else { /*Reception of AT commands*/ } HAL_UART_Receive_IT(&huart1,&Sim800.UsartRxTemp,1); } } В задаче `StartLwIPTask` в бесконечном цикле проверяется эта очередь и при появлении элементов, записывает их в массив `PPPx.Data` и при фиксации второго HDLC-заголовка (0x7E), отправляет данные в lwip функцией `pppos_input`.
      P.S. Переменная `PPPx.Last_Index` это размер пришедшего ppp-пакета.
      void StartLwIPTask(void const * argument) { /* USER CODE BEGIN StartLwIPTask */ /*Создаем очередь*/ xQueue_Sim800_Package = xQueueCreate(128, sizeof(uint8_t)); xQueue_PPP_Package = xQueueCreate(128, sizeof(uint8_t)); uint8_t u8=0; volatile int setup = 0; tcpip_init( NULL, NULL ); /*Инициализация стека tcp/ip*/ /*Create a new PPPoS interface*/ ppp = pppos_create(&ppp_netif, output_cb, status_cb, 0); // /* Auth configuration, this is pretty self-explanatory */ ppp_set_auth(ppp, PPPAUTHTYPE_PAP, "beeline", "beeline"); /* Require peer to authenticate */ ppp_set_auth_required(ppp, 1); /*Only for PPPoS, the PPP session should be up and waiting for input.*/ ppp_set_silent(ppp, 1); /* * Initiate PPP listener (i.e. wait for an incoming connection), can only * be called if PPP session is in the dead state (i.e. disconnected). */ ppp_listen(ppp); /* Infinite loop */ for(;;) { if (sim800_init() == S_RESET) /*Настройка модуля Sim800*/ continue; for (;;) { if (pdPASS == xQueueReceive(xQueue_PPP_Package, &u8, 100/portTICK_RATE_MS)) { if (u8 == 0x7E) t++; PPPx.Data[PPPx.Last_Index++] = u8; if (t==2) { PPPx.Last_Index--; pppos_input(ppp, PPPx.Data, PPPx.Last_Index); t=0; memset(&PPPx, 0, sizeof(PPPx)); } } } } /* USER CODE END StartLwIPTask */ } Как я писал выше, все идет хорошо, пока идет фаза LCP, но после подтверждения контроллера запроса опций, наступает тишина.
      В интернете мне удалось найти довольно мало исчерпывающей информации и примеров по связке stm32+lwip+ppp, если кто-нибудь занимался подобным или сталкивался с похожей проблемой, буду очень признателен за помощь и за пинки в нужном направлении. Заранее спасибо.
       
       
      ppp.txt
      ppp_connect.docx
    • Автор: agbp
      Приветствую! 

      Мы - молодой стартап из Санкт-Петербурга с хорошей финансовой поддержкой. Создаём дроны.
      Нам не хватает серьезного программиста на полный загруженный график (можно удаленно). 

      Из основных задач, которые нужно будет решать: 
      1. Программа отслеживания объекта в видеопотоке (процессор STM32F4xx). 
      2. Программа стабилизации БПЛА по данным с гироскопа и наведение на цель. 
      3. Создание программы управления бесколлекторным двигателем по закрытому контуру с возможностью бесшовной интеграции с программой просчёта траектории ЧПУ станка. 
      4. Программирование бортового комплекса управления БПЛА (автопилот) 
      5. Полный пакет работ по созданию бортового и наземного комплексов управления роем БПЛА. 
      Оформление в штат. 
      ЗП обсуждаема, от 60 000 в месяц.
      P.S. дроны, беспилотники, авиамодели... это только начало!
    • Автор: Djanger
      Приобрёл "NUCLEO-F030R8, Отладочная плата на базе MCU STM32F030R8T6 (ARM Cortex-M0), ST-LINK/V2-1, Arduino-интерфейс"  хочу приобрести два модуля к ней но не знаю о совместимости , кого спрашиваю сомневаются и не отвечают уверенно, 1 модуль это 3,2 TFT ЖК дисплей сенсорный , а второй 8 бит LED 8 бит цифровой Tube 8-разрядный ключ. Кто что может подсказать или посоветовать прошу помочь 


    • Автор: alexmurphy
      Здравствуйте!

      Разовая работа для программистов из Москвы или московской области.

      Необходимо написать прошивку для отладочной платы на базе чипа BMI055
      Даташит: https://www.mouser.com/ds/2/783/BST-BMI055-DS000-08-786482.pdf

      Более подробное ТЗ вышлю кандидату.
      Железо предоставлю.
      Оплата по договоренности.

      При успешном выполнении, будут регулярные заказы, а также трудоустройство при желании, конкурентная зп по Москве.

      Если заинтересованы, просьба в комментах или в ЛС оставить контакты для связи.
    • Автор: Smith2007
      Исследую платку 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!

      Код выполняется верно

       
      Как можно избавиться от неприятного предупреждения?
  • Сообщения

    • Кстати, насколько помнится, у этого компромиссного решения на борту имелся электронный расширитель стереобазы. Хоть какое-то подобие объёмно-пространственной звуковой картины давал. ...хотя и несколько утрированной. 
    • с прошивкой всё оказалось нормально, видимо луна была под влиянием меркурия. на скорости sck 375000 шьется нормально. ничего никому не мешает. соотв, вопросы остаются принципиальные ) с 2 по 4. спасибо.
    • @Vlad90 , вы понимаете, это слишком широкая постановка вопроса. Для каждого из случаев будет оптимальна своя схема и они будут очень разные. Где-то можно здорово упростить, не вредя качеству, где-то нет. Поэтому я предлагаю вам сузить угол атаки - компьютерное применение, или другое.  1-2-3-4 компьютерных кулера (дерьмовеньких) выходят суммарно на пол ампера. А если нормальные, то по 0,5 А на каждый будет. Какие тут варианты? Я так же как и вы, перелопатил немало схем, и пришел к простейшему решению с ШИМ. Схема простая, легко потянет хоть все кулеры ПК. Если кулера трехвыводные, то можно без проблем мониторить их обороты - минус общий, сквозной. А можно и не мониторить  . Диапазон изменения напряжения вентилятора также не трудно изменить как угодно. Напряжение начала вращения и ток кулера несложно выяснить самому при помощи регулируемого БП. И, таким образом, убедиться в незначительном токе потребления вентилятора при малом напряжении.
    • Ну ладно бы Фрейд, тот, как известно, "сидел" на кокаине...
    • Я хочу чтобы диапазон был до 300 кГц (это с запасом). Я экспериментирую с мощными высокочастотными IGBT. При этом хочу быть уверенным, что на драйвере IGBT у меня та же частота и скважность, что я установил на панели управления генератора, поэтому хочу, чтобы не было искажений. Синус и пила меня сейчас, пока, в данных экспериментах не интересуют. Я хочу только ШИМ до 300 кГц, ну или хотя бы до 250, если 300 слишком много чтобы было без существенных искажений. Я пробовал отдельный регулируемый китайский модуль на 555, но мне не понравилось. Во первых у него предел 200 кГц, да и то не дотягивает, причем много. Регулируется плохо, частота плавает, скважность тоже. Поэтому я и решил использовать совсем не плохие возможности моего генератора.   Думаю, что белее исчерпывающую информацию уже вряд ли смогу представить. Давайте предложения по схемке, но не на словах, а на "картинке" или Multisim14, 13, 12 или Splan 7 ПОЖАЛУЙСТА
    • Ферриты... Кольца диам. 20мм - по 25р.,  диам. 30мм - по 45р.. Если нужны стержни, предложите цену:  
    • Не охладел. просто пытаюсь понять и разложить по полочкам новую информацию. В пользе подачи на кулер напряжения при котором он еще не вращается я пока не убедился. Пока остаюсь при своем мнении - напряжение от 0 до 6 вольт на кулер идти не должно ни при каких условиях. А вот ШИМ - неШИМ .. не знаю...