Программирование МК STM32

 

 

 

Помечено: , ,

В этой теме 64 ответа, 34 участника, последнее обновление  Evgeny 1 час, 40 мин. назад.

Просмотр 15 сообщений - с 31 по 45 (из 65 всего)
  • Автор
    Сообщения
  • #12598

    Andrej15041982
    Участник

    Доброго времени суток! Решил попробовать сделать ШИМ с помощью DMA и таймера TIM1, тоесть 1) запрос к DMA от таймера в режиме ШИМ 2)DMA пересылает(в circular режиме) в регистр сравнения данные из памяти. Процессор — stm32f030f4 (на 20 контактов).
    НО CubeMX DMA не инициализирует а только пишет такой код:

    static void MX_DMA_Init(void)
    {
    /* DMA controller clock enable */
    __HAL_RCC_DMA1_CLK_ENABLE();

    /* DMA interrupt init */
    /* DMA1_Channel4_5_IRQn interrupt configuration */
    HAL_NVIC_SetPriority(DMA1_Channel4_5_IRQn, 0, 0);
    HAL_NVIC_EnableIRQ(DMA1_Channel4_5_IRQn);

    }

    Я так понимаю, здесь нет привязки dma конкретно к таймеру и вообще никаких настроек,
    только включается тактирование и NVIC.Так и должно быть? нужно инициализировать и связывать dma и tim1 вручную?Заранее большое спасибо за ответ!

    #13206

    Rocket
    Участник

    Здравствуйте. пытался перекомпилировать проект для тача под кеил

    И выдает такие сообщения.

    linking…
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol DMA2D_LayersAlphaReconfig (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol Font12 (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol Font16 (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol Font20 (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol Font24 (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol Font8 (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol MT48LC4M32B2_init (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_DisplayString (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_DrawBitmap (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_DrawBitmapToMem (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_DrawChar (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_DrawLine (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_DrawPixel (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_FillRectangle (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_FillScreen (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_SetBackColor (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_SetFont (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_SetTextColor (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TS_GetState (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol Touch_Ini (referred from main.o).
    Not enough information to list image symbols.
    Finished: 1 information, 0 warning and 20 error messages.
    «TOUCH_FT5336\TOUCH_FT5336.axf» — 20 Error(s), 0 Warning(s).
    Target not created.

    Что делать ?

    #13300

    Narod Stream
    Хранитель

    А Вы в Cube MX собирали код сначала?

    #13302

    Rocket
    Участник

    Да. Я уже решил проблему. Оказалось что половина файлов не подцепилась в проект. И пришлось подключить их вручную через FIle Extensions

    Спасибо Вам большое за труды.

    #13381

    imperror
    Участник

    Уважаемый автор, а вы не хотите попробовать связку: Cube MX — makefile, VSCode, arm-none-eabi-gcc/gdb. Удобно тем, что работает под всеми операционками. Очень толковый редактор с отладкой.
    выглядит вот так:
    <div class=»spoilerui»> VSCode</div>

    #13457

    Mihail
    Участник

    Создал проект LTDC, за основу взял проект из куба с двумя слоями «STM32Cube\Repository\STM32Cube_FW_F4_V1.версия.0\Projects\STM32F429I-Discovery\Examples\LTDC».
    В проекте картинка двигается вверх и вниз, скорость зависит времени прерывания, в прерывании от LTDC меняется флаг(под рукой нет проекта, не помню название флага).
    Весь код перерыл, даташит перечитал, но не могу найти по какому событию происходит прерывание и как изменить время прерывания, чтобы изменить скорость движения картинки.
    Если убрать флаг и сделать задержку, то скорость движения меняется(но задержка это плохо, хочу изменить время в прерывании).
    Помогите разобраться.

    #13463

    imperror
    Участник

    Такое чувство, что задержка там: HAL_Delay(500), а флаг ReloadFlag в прерывании отвечает только за то, что картинка отрисовалась и можно начать новый шаг.

    #13479

    Mihail
    Участник

    Да,но HAL_Delay(500) это задержка между движением вверх и вниз, т.е. одна картинка плавно двигается в верх вторая вниз(в первом цикле for()), потом задержка HAL_Delay(500), потом меняются первая двигается в низ, а вторая вверх(во второмм цикле for()), потом опять задержка HAL_Delay(500) и потом в цикл while все повторяется. А флаг ReloadFlag меняется после того, картинка сдвигается на один пиксель.

    #13524

    imperror
    Участник

    ReloadFlag меняется досле движения на 1 пиксель только в этом примере, а вообще, он меняется когда ReloadEventCallback, название функции говорит само за себя.
    Но я вас понял, то что вы хотите вот здесь:
    <div class=»spoilerui»>
    static void PicturesPosition(uint32_t* x1, uint32_t* y1, uint32_t* x2, uint32_t* y2, uint32_t index)
    {
    /* picture1 position */
    *x1 = 0;
    *y1 = index*4;

    /* picture2 position */
    *x2 = 0;
    *y2 = 160 — index*4;
    }
    </div>

    #13791

    Roman
    Участник

    Подскажите пожалуйста, настраиваю dhcp на плате wiznet5500 с stm32VLdiscovery. После получения адреса, программа падает в hard fault interrupt. В отладчике вижу, что переменным и массивам присваивается одно и тоже значение 0x3D. В чём собака зарыта?

    #13996

    fireweb
    Участник

    Здраствуйте! Сейчас у меня есть задача сдружить 2 контроллера stm8 при поможи rfm69cw. Работали ли вы с таким и можете дать какую то подсказку? Работаю в IAR. Спасибо)

    #14004

    Narod Stream
    Хранитель

    fireweb. Лично я не работал. Если кто-то работал, думаю ответит.

    • Ответ изменён 5 мес., 2 нед. назад пользователем  Narod Stream.
    • Ответ изменён 5 мес., 2 нед. назад пользователем  Narod Stream.
    #14006

    Narod Stream
    Хранитель

    Roman. Скорей всего дело в неправильном написании кода.

    #14373

    Zandy
    Участник

    Только недавно начал знакомиться с Вашими уроками. Уроки хорошие, слов нет. Но есть небольшие нюансики, о которых и хотел рассказать. Если брать ваши проекты (по ссылке «Исходный код»), то все компилируется, проблем нет. Но мне было интереснее делать все самому в соответствии с Вашими уроками. Тут и появились проблемы, проекты не компилируются. Ошибки, типа «декларация … не определена». Анализ показал, что в вашем и в моем случае разные версии стандартных файлов, которые CubeMX подсовывает в проект (наверное у меня более свежая версия CubeMX). Короче говоря, в одном из таких файлов автоматом присоединен файл main.h (кстати говоря, main.h тоже создается автоматически) со всеми вытекающими последствиями. А последствия такие. В ваших проектах в main.h подключены заголовочные файлы вами созданных файлов с прототипами функций, а так как main.h подсоединен не только к main.с, но и к др. файлам (писал выше), вылазят упомянутые выше ошибки.
    Бороться с этим надо так. Подключать «хедеры» только к сишным файлам, а не к другим хедерам. Вообще, в хедерах надо прописывать только прототипы функций, константы, и внешние переменные. Я так думаю, может и ошибаюсь в силу своей неопытности. Если не так, поправьте.

    #14374

    Narod Stream
    Хранитель

    Zandy
    Это да, более старые проекты могут неправильно собраться. Ну ничего страшного. Создавайте проект самостоятельно, а из моих проектов берите USER код из файлов, и будет всё нормально.

  • Автор
    Сообщения
  • #12598

    Andrej15041982
    Участник
    • Оффлайн

    Доброго времени суток! Решил попробовать сделать ШИМ с помощью DMA и таймера TIM1, тоесть 1) запрос к DMA от таймера в режиме ШИМ 2)DMA пересылает(в circular режиме) в регистр сравнения данные из памяти. Процессор — stm32f030f4 (на 20 контактов).
    НО CubeMX DMA не инициализирует а только пишет такой код:

    static void MX_DMA_Init(void)
    {
    /* DMA controller clock enable */
    __HAL_RCC_DMA1_CLK_ENABLE();

    /* DMA interrupt init */
    /* DMA1_Channel4_5_IRQn interrupt configuration */
    HAL_NVIC_SetPriority(DMA1_Channel4_5_IRQn, 0, 0);
    HAL_NVIC_EnableIRQ(DMA1_Channel4_5_IRQn);

    }

    Я так понимаю, здесь нет привязки dma конкретно к таймеру и вообще никаких настроек,
    только включается тактирование и NVIC.Так и должно быть? нужно инициализировать и связывать dma и tim1 вручную?Заранее большое спасибо за ответ!

    #13206

    Rocket
    Участник
    • Оффлайн

    Здравствуйте. пытался перекомпилировать проект для тача под кеил

    И выдает такие сообщения.

    linking…
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol DMA2D_LayersAlphaReconfig (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol Font12 (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol Font16 (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol Font20 (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol Font24 (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol Font8 (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol MT48LC4M32B2_init (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_DisplayString (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_DrawBitmap (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_DrawBitmapToMem (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_DrawChar (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_DrawLine (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_DrawPixel (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_FillRectangle (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_FillScreen (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_SetBackColor (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_SetFont (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TFT_SetTextColor (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol TS_GetState (referred from main.o).
    TOUCH_FT5336\TOUCH_FT5336.axf: Error: L6218E: Undefined symbol Touch_Ini (referred from main.o).
    Not enough information to list image symbols.
    Finished: 1 information, 0 warning and 20 error messages.
    «TOUCH_FT5336\TOUCH_FT5336.axf» — 20 Error(s), 0 Warning(s).
    Target not created.

    Что делать ?

    #13300

    Narod Stream
    Хранитель
    • Оффлайн

    А Вы в Cube MX собирали код сначала?

    #13302

    Rocket
    Участник
    • Оффлайн

    Да. Я уже решил проблему. Оказалось что половина файлов не подцепилась в проект. И пришлось подключить их вручную через FIle Extensions

    Спасибо Вам большое за труды.

    #13381

    imperror
    Участник
    • Оффлайн

    Уважаемый автор, а вы не хотите попробовать связку: Cube MX — makefile, VSCode, arm-none-eabi-gcc/gdb. Удобно тем, что работает под всеми операционками. Очень толковый редактор с отладкой.
    выглядит вот так:
    <div class=»spoilerui»> VSCode</div>

    #13457

    Mihail
    Участник
    • Оффлайн

    Создал проект LTDC, за основу взял проект из куба с двумя слоями «STM32Cube\Repository\STM32Cube_FW_F4_V1.версия.0\Projects\STM32F429I-Discovery\Examples\LTDC».
    В проекте картинка двигается вверх и вниз, скорость зависит времени прерывания, в прерывании от LTDC меняется флаг(под рукой нет проекта, не помню название флага).
    Весь код перерыл, даташит перечитал, но не могу найти по какому событию происходит прерывание и как изменить время прерывания, чтобы изменить скорость движения картинки.
    Если убрать флаг и сделать задержку, то скорость движения меняется(но задержка это плохо, хочу изменить время в прерывании).
    Помогите разобраться.

    #13463

    imperror
    Участник
    • Оффлайн

    Такое чувство, что задержка там: HAL_Delay(500), а флаг ReloadFlag в прерывании отвечает только за то, что картинка отрисовалась и можно начать новый шаг.

    #13479

    Mihail
    Участник
    • Оффлайн

    Да,но HAL_Delay(500) это задержка между движением вверх и вниз, т.е. одна картинка плавно двигается в верх вторая вниз(в первом цикле for()), потом задержка HAL_Delay(500), потом меняются первая двигается в низ, а вторая вверх(во второмм цикле for()), потом опять задержка HAL_Delay(500) и потом в цикл while все повторяется. А флаг ReloadFlag меняется после того, картинка сдвигается на один пиксель.

    #13524

    imperror
    Участник
    • Оффлайн

    ReloadFlag меняется досле движения на 1 пиксель только в этом примере, а вообще, он меняется когда ReloadEventCallback, название функции говорит само за себя.
    Но я вас понял, то что вы хотите вот здесь:
    <div class=»spoilerui»>
    static void PicturesPosition(uint32_t* x1, uint32_t* y1, uint32_t* x2, uint32_t* y2, uint32_t index)
    {
    /* picture1 position */
    *x1 = 0;
    *y1 = index*4;

    /* picture2 position */
    *x2 = 0;
    *y2 = 160 — index*4;
    }
    </div>

    #13791

    Roman
    Участник
    • Оффлайн

    Подскажите пожалуйста, настраиваю dhcp на плате wiznet5500 с stm32VLdiscovery. После получения адреса, программа падает в hard fault interrupt. В отладчике вижу, что переменным и массивам присваивается одно и тоже значение 0x3D. В чём собака зарыта?

    #13996

    fireweb
    Участник
    • Оффлайн

    Здраствуйте! Сейчас у меня есть задача сдружить 2 контроллера stm8 при поможи rfm69cw. Работали ли вы с таким и можете дать какую то подсказку? Работаю в IAR. Спасибо)

    #14004

    Narod Stream
    Хранитель
    • Оффлайн

    fireweb. Лично я не работал. Если кто-то работал, думаю ответит.

    • Ответ изменён 5 мес., 2 нед. назад пользователем  Narod Stream.
    • Ответ изменён 5 мес., 2 нед. назад пользователем  Narod Stream.
    #14006

    Narod Stream
    Хранитель
    • Оффлайн

    Roman. Скорей всего дело в неправильном написании кода.

    #14373

    Zandy
    Участник
    • Оффлайн

    Только недавно начал знакомиться с Вашими уроками. Уроки хорошие, слов нет. Но есть небольшие нюансики, о которых и хотел рассказать. Если брать ваши проекты (по ссылке «Исходный код»), то все компилируется, проблем нет. Но мне было интереснее делать все самому в соответствии с Вашими уроками. Тут и появились проблемы, проекты не компилируются. Ошибки, типа «декларация … не определена». Анализ показал, что в вашем и в моем случае разные версии стандартных файлов, которые CubeMX подсовывает в проект (наверное у меня более свежая версия CubeMX). Короче говоря, в одном из таких файлов автоматом присоединен файл main.h (кстати говоря, main.h тоже создается автоматически) со всеми вытекающими последствиями. А последствия такие. В ваших проектах в main.h подключены заголовочные файлы вами созданных файлов с прототипами функций, а так как main.h подсоединен не только к main.с, но и к др. файлам (писал выше), вылазят упомянутые выше ошибки.
    Бороться с этим надо так. Подключать «хедеры» только к сишным файлам, а не к другим хедерам. Вообще, в хедерах надо прописывать только прототипы функций, константы, и внешние переменные. Я так думаю, может и ошибаюсь в силу своей неопытности. Если не так, поправьте.

    #14374

    Narod Stream
    Хранитель
    • Оффлайн

    Zandy
    Это да, более старые проекты могут неправильно собраться. Ну ничего страшного. Создавайте проект самостоятельно, а из моих проектов берите USER код из файлов, и будет всё нормально.

Просмотр 15 сообщений - с 31 по 45 (из 65 всего)

Для ответа в этой теме необходимо авторизоваться.