Главная › Форумы › Программирование микроконтроллеров › Программирование МК STM32
Помечено: STM32
- В этой теме 168 ответов, 99 участников, последнее обновление 10 месяцев назад сделано
Sanekfps2024.
-
АвторСообщения
-
Ноябрь 11, 2017 в 9:13 пп #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 вручную?Заранее большое спасибо за ответ!Ноябрь 17, 2017 в 6:42 дп #13206Rocket
УчастникЗдравствуйте. пытался перекомпилировать проект для тача под кеил
И выдает такие сообщения.
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.Что делать ?
Ноябрь 20, 2017 в 7:55 дп #13300Narod Stream
ХранительА Вы в Cube MX собирали код сначала?
Ноябрь 20, 2017 в 9:12 дп #13302Rocket
УчастникДа. Я уже решил проблему. Оказалось что половина файлов не подцепилась в проект. И пришлось подключить их вручную через FIle Extensions
Спасибо Вам большое за труды.
Ноябрь 23, 2017 в 11:16 дп #13381imperror
УчастникУважаемый автор, а вы не хотите попробовать связку: Cube MX — makefile, VSCode, arm-none-eabi-gcc/gdb. Удобно тем, что работает под всеми операционками. Очень толковый редактор с отладкой.
выглядит вот так:
<div class=»spoilerui»></div>
Ноябрь 28, 2017 в 2:33 пп #13457Mihail
УчастникСоздал проект LTDC, за основу взял проект из куба с двумя слоями «STM32Cube\Repository\STM32Cube_FW_F4_V1.версия.0\Projects\STM32F429I-Discovery\Examples\LTDC».
В проекте картинка двигается вверх и вниз, скорость зависит времени прерывания, в прерывании от LTDC меняется флаг(под рукой нет проекта, не помню название флага).
Весь код перерыл, даташит перечитал, но не могу найти по какому событию происходит прерывание и как изменить время прерывания, чтобы изменить скорость движения картинки.
Если убрать флаг и сделать задержку, то скорость движения меняется(но задержка это плохо, хочу изменить время в прерывании).
Помогите разобраться.Ноябрь 29, 2017 в 3:42 пп #13463imperror
УчастникТакое чувство, что задержка там: HAL_Delay(500), а флаг ReloadFlag в прерывании отвечает только за то, что картинка отрисовалась и можно начать новый шаг.
Ноябрь 30, 2017 в 2:44 пп #13479Mihail
УчастникДа,но HAL_Delay(500) это задержка между движением вверх и вниз, т.е. одна картинка плавно двигается в верх вторая вниз(в первом цикле for()), потом задержка HAL_Delay(500), потом меняются первая двигается в низ, а вторая вверх(во второмм цикле for()), потом опять задержка HAL_Delay(500) и потом в цикл while все повторяется. А флаг ReloadFlag меняется после того, картинка сдвигается на один пиксель.
Декабрь 4, 2017 в 4:04 пп #13524imperror
Участник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>Декабрь 23, 2017 в 8:29 пп #13791Roman
УчастникПодскажите пожалуйста, настраиваю dhcp на плате wiznet5500 с stm32VLdiscovery. После получения адреса, программа падает в hard fault interrupt. В отладчике вижу, что переменным и массивам присваивается одно и тоже значение 0x3D. В чём собака зарыта?
Январь 6, 2018 в 1:38 пп #13996fireweb
УчастникЗдраствуйте! Сейчас у меня есть задача сдружить 2 контроллера stm8 при поможи rfm69cw. Работали ли вы с таким и можете дать какую то подсказку? Работаю в IAR. Спасибо)
Январь 9, 2018 в 4:21 дп #14004Narod Stream
Хранительfireweb. Лично я не работал. Если кто-то работал, думаю ответит.
-
Ответ изменён 7 лет, 1 месяц назад пользователем
Narod Stream.
-
Ответ изменён 7 лет, 1 месяц назад пользователем
Narod Stream.
Январь 9, 2018 в 4:23 дп #14006Narod Stream
ХранительRoman. Скорей всего дело в неправильном написании кода.
Январь 20, 2018 в 11:26 дп #14373Zandy
УчастникТолько недавно начал знакомиться с Вашими уроками. Уроки хорошие, слов нет. Но есть небольшие нюансики, о которых и хотел рассказать. Если брать ваши проекты (по ссылке «Исходный код»), то все компилируется, проблем нет. Но мне было интереснее делать все самому в соответствии с Вашими уроками. Тут и появились проблемы, проекты не компилируются. Ошибки, типа «декларация … не определена». Анализ показал, что в вашем и в моем случае разные версии стандартных файлов, которые CubeMX подсовывает в проект (наверное у меня более свежая версия CubeMX). Короче говоря, в одном из таких файлов автоматом присоединен файл main.h (кстати говоря, main.h тоже создается автоматически) со всеми вытекающими последствиями. А последствия такие. В ваших проектах в main.h подключены заголовочные файлы вами созданных файлов с прототипами функций, а так как main.h подсоединен не только к main.с, но и к др. файлам (писал выше), вылазят упомянутые выше ошибки.
Бороться с этим надо так. Подключать «хедеры» только к сишным файлам, а не к другим хедерам. Вообще, в хедерах надо прописывать только прототипы функций, константы, и внешние переменные. Я так думаю, может и ошибаюсь в силу своей неопытности. Если не так, поправьте.Январь 20, 2018 в 5:42 пп #14374Narod Stream
ХранительZandy
Это да, более старые проекты могут неправильно собраться. Ну ничего страшного. Создавайте проект самостоятельно, а из моих проектов берите USER код из файлов, и будет всё нормально. -
Ответ изменён 7 лет, 1 месяц назад пользователем
-
АвторСообщения
-
АвторСообщения
-
Доброго времени суток! Решил попробовать сделать ШИМ с помощью 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 вручную?Заранее большое спасибо за ответ!Здравствуйте. пытался перекомпилировать проект для тача под кеил
И выдает такие сообщения.
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.Что делать ?
А Вы в Cube MX собирали код сначала?
Да. Я уже решил проблему. Оказалось что половина файлов не подцепилась в проект. И пришлось подключить их вручную через FIle Extensions
Спасибо Вам большое за труды.
Уважаемый автор, а вы не хотите попробовать связку: Cube MX — makefile, VSCode, arm-none-eabi-gcc/gdb. Удобно тем, что работает под всеми операционками. Очень толковый редактор с отладкой.
выглядит вот так:
<div class=»spoilerui»></div>
Создал проект LTDC, за основу взял проект из куба с двумя слоями «STM32Cube\Repository\STM32Cube_FW_F4_V1.версия.0\Projects\STM32F429I-Discovery\Examples\LTDC».
В проекте картинка двигается вверх и вниз, скорость зависит времени прерывания, в прерывании от LTDC меняется флаг(под рукой нет проекта, не помню название флага).
Весь код перерыл, даташит перечитал, но не могу найти по какому событию происходит прерывание и как изменить время прерывания, чтобы изменить скорость движения картинки.
Если убрать флаг и сделать задержку, то скорость движения меняется(но задержка это плохо, хочу изменить время в прерывании).
Помогите разобраться.Такое чувство, что задержка там: HAL_Delay(500), а флаг ReloadFlag в прерывании отвечает только за то, что картинка отрисовалась и можно начать новый шаг.
Да,но HAL_Delay(500) это задержка между движением вверх и вниз, т.е. одна картинка плавно двигается в верх вторая вниз(в первом цикле for()), потом задержка HAL_Delay(500), потом меняются первая двигается в низ, а вторая вверх(во второмм цикле for()), потом опять задержка HAL_Delay(500) и потом в цикл while все повторяется. А флаг ReloadFlag меняется после того, картинка сдвигается на один пиксель.
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>Подскажите пожалуйста, настраиваю dhcp на плате wiznet5500 с stm32VLdiscovery. После получения адреса, программа падает в hard fault interrupt. В отладчике вижу, что переменным и массивам присваивается одно и тоже значение 0x3D. В чём собака зарыта?
Здраствуйте! Сейчас у меня есть задача сдружить 2 контроллера stm8 при поможи rfm69cw. Работали ли вы с таким и можете дать какую то подсказку? Работаю в IAR. Спасибо)
fireweb. Лично я не работал. Если кто-то работал, думаю ответит.
-
Ответ изменён 7 лет, 1 месяц назад пользователем
Narod Stream.
-
Ответ изменён 7 лет, 1 месяц назад пользователем
Narod Stream.
Roman. Скорей всего дело в неправильном написании кода.
Только недавно начал знакомиться с Вашими уроками. Уроки хорошие, слов нет. Но есть небольшие нюансики, о которых и хотел рассказать. Если брать ваши проекты (по ссылке «Исходный код»), то все компилируется, проблем нет. Но мне было интереснее делать все самому в соответствии с Вашими уроками. Тут и появились проблемы, проекты не компилируются. Ошибки, типа «декларация … не определена». Анализ показал, что в вашем и в моем случае разные версии стандартных файлов, которые CubeMX подсовывает в проект (наверное у меня более свежая версия CubeMX). Короче говоря, в одном из таких файлов автоматом присоединен файл main.h (кстати говоря, main.h тоже создается автоматически) со всеми вытекающими последствиями. А последствия такие. В ваших проектах в main.h подключены заголовочные файлы вами созданных файлов с прототипами функций, а так как main.h подсоединен не только к main.с, но и к др. файлам (писал выше), вылазят упомянутые выше ошибки.
Бороться с этим надо так. Подключать «хедеры» только к сишным файлам, а не к другим хедерам. Вообще, в хедерах надо прописывать только прототипы функций, константы, и внешние переменные. Я так думаю, может и ошибаюсь в силу своей неопытности. Если не так, поправьте.Zandy
Это да, более старые проекты могут неправильно собраться. Ну ничего страшного. Создавайте проект самостоятельно, а из моих проектов берите USER код из файлов, и будет всё нормально. -
Ответ изменён 7 лет, 1 месяц назад пользователем
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.