Главная › Форумы › Программирование микроконтроллеров › Программирование МК STM32
Помечено: STM32
- В этой теме 168 ответов, 99 участников, последнее обновление 7 месяцев, 2 недели назад сделано Sanekfps2024.
-
АвторСообщения
-
Апрель 1, 2020 в 10:09 дп #21258shumaherУчастник
Здравствуйте. здесь есть какой нибудь код связанный микропроцессор STM32F407 с резистор переменными и с дисплеем. мне надо так, когда крутишь, на дисплей отображает цифра, от 700 до 800. когда крутишь, цифры уменьшаются или увеличиваются. среда CooCox. помогите пожалуйста.
Апрель 3, 2020 в 12:48 пп #21294LosmanУчастникПриветствую во первых спасибо большое за видео уроки! Не на одном языке нету настолько доступного объяснения в таких количествах.
Подключил по вашим видео урокам tft дисплей с такими пинами
https://static-eu.insales.ru/images/products/1/428/142721452/TFT-MSD-_02.jpg
Дисплей пришел со стиком и насколько я понял из описания он touch.
Не могу разобраться как работать с тачем. Правильно ли я понимаю что если мы
использовали fsmc то работать с тачем не получится? (возможно нужно использовать еще какой-то адрес для чтения?) Пытался нагуглить какой-то пример все примеры идут через SPI. Подскажите пожалуйста что нужно использовать чтобы заставить работать тач + дисплей.Апрель 3, 2020 в 6:25 пп #21338imperrorУчастникПытался нагуглить какой-то пример все примеры идут через SPI.
Добрых суток.
А это, скорее всего, и есть SPI:
LCD_CS — spi_cs
LCD_RS — spi_sck
LCD_WR — spi_mosi
LCD_RD — spi_misoАпрель 4, 2020 в 3:07 пп #21341LosmanУчастникВидимо вы правы, спасибо! Попробую теперь разобраться. Вообще хотел сделать вывод FFT на дисплейчик с аудио потока, но судя по всему не получится. fsmc использует ножку PD4 (FSMC_NOE) а ножка PD4 также используется для чипа аудио RESET. Правильно ли я понимаю что можно использовать или fsmc или CS43L22? Или есть какой-то выход из ситуации?
Апрель 5, 2020 в 11:19 дп #21346imperrorУчастникЯ не знаю какой у вас контроллер, но по идее можно переназначить ножку FSMC_NOE, у вас же платка LCD подключена ручками, следовательно ни что не мешает это сделать. Если чип аудио тоже не распаян на плате микроконтроллера, то можно переназначить RESET.
Апрель 5, 2020 в 3:54 пп #21348Cheerful_WindУчастникЗдравствуйте!
Не получается использование схемы распределения памяти heap_5 в IAR_Embedded_Workbench_for_ARM_8.40.
По тексту урока 131 можно представить следующее:
#if defined ( __ICCARM__ )
__no_init static uint8_t heap_sram1[32*1024] @ «.user_heap_stack»;
#else
static __attribute__((used,section(«.user_heap_stack»))) uint8_t heap_sram1[32*1024];
#endif
uint8_t heap_sram2[32*1024];
_____________________________________
Не трудно поместить блок .user_heap_stack рядом с системным стеком и кучей после .bss:
.bss zero 0x2000’f295 0x1 tcp.o [1]
.bss zero 0x2000’f296 0x1 XShttio.o [2]
— 0x2000’f297 0xf0af«P2», part 3 of 3: 0xe000
.user_heap_stack uninit 0x2000’f298 0x8000 main.o [1]
CSTACK 0x2001’7298 0x4000 <Block>
CSTACK uninit 0x2001’7298 0x4000 <Block tail>
HEAP 0x2001’b298 0x2000 <Block>
HEAP uninit 0x2001’b298 0x2000 <Block tail>
— 0x2001’d298 0xe000
_____________________________________
heap_sram1 0x2000’f298 0x8000 Data Lc main.o [1]
heap_sram2 0x2000’01e8 0x8000 Data Gb main.o [1]
_____________________________________
Путем редактирования файла *.isf у меня не получилось разместить блок перед секцией .bss.
Я не могу сказать, что эта неделя прошла не плодотворно с точки зрения вопросов распределения памяти, но пример так и не вышел из vPortDefineHeapRegions( xHeapRegions ). Точнее из heap_5.c:
/* Check blocks are passed in with increasing start addresses. */
configASSERT( xAddress > ( size_t ) pxEnd );
______________________________________
Андрей Курниц в https://www.kit-e.ru/articles/micro/2012_11_93.php заканчивает повествование heap_4.
Буду очень признателен, если кто-нибудь подробно разжует данный фрагмент урока!Апрель 10, 2020 в 6:00 пп #21403nik182УчастникЗдравствуйте. В последней реинкарнации CUBEMX престал работать VCP он же CDC на плате blue pill. При дефолтных настройках всё компилируется, запускается, порт в виндовс поднимается, но любая попытка записи в порт приводит к ошибке обмена. Изменение размера Tx Rx буферов и применение других советов не приводит к восстановления работоспособности. На плате black pill (stm32 f401cc) всё работает без проблем. Есть ли у кого положительный опыт поднятия VCP на blue pill и последнем CUBEMX?
Апрель 18, 2020 в 4:54 пп #21480inviteУчастникдоброго времени суток, что то запутался с таиминогами и настроиками sdram K4D261638F подключил против всех законов физики)))
на столе проводами к F767zi, при 8 битном в память пишется первые два символа из буфера(0x37BA0F68) > (0x37373737rn), в 16 битном первые четыре (0x37BA37BArn), подтолкните в нужном направление, инициализация из урока 62 по SDRAMМай 11, 2020 в 1:41 пп #21612fisher74УчастникДобрый день.
Решил начать осваивать SMT32, начав с Blue pill (F103c8t6). Светик, подключенный на плате к PortC13 смог зажечь, разобравшись в отличиях от F407.
А вот с морганием выходит засада: функция задержки полностью игнорируется Кейлом.123456789101112131415161718192021#include "stm32f10x.h"void mydelay(void);void mydelay(void){for (unsigned long i=0; i<2000000; i++);}int main(void){RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // включаем тактирование портаGPIOC->CRH &= ~GPIO_CRH_MODE13; // обнуляем биты модера портаGPIOC->CRH |= GPIO_CRH_MODE13_1; // выставляем скорость макс скорость порта 2МГцGPIOC->CRH &= ~GPIO_CRH_CNF13; // цифровой выход push-pullwhile(1){GPIOC->BSRR = GPIO_BSRR_BR13; // Зажигаем светик (LED включен между VCC и PortC13)mydelay(); // Ждём.... но почему-то не ждёт ((GPIOC->BSRR = GPIO_BSRR_BS13; // Тушим светикmydelay(); // Снова ждём... и снова не ждёт}}Я понимаю, что такой тип задержки самый расточительный и в практике применяться не будет, но хотелось бы разобраться в этой проблеме.
Май 11, 2020 в 3:12 пп #21613imperrorУчастникvolatile void mydelay(void){
…
}Должно помочь. volatile — говорит компилятору не оптимизировать функцию.
Май 11, 2020 в 4:19 пп #21614fisher74УчастникСпасибо, но
volatile void mydelay(void);
компилятор заворачивает варнингом <div class=»spoilerui»>function cannot return qualified void type ‘volatile void’ [-Wqualified-void-return-type]</div>
и так же игнорирует функцию.
На другие типы данных так же ругается.
А вот1234void mydelay(void){for (volatile unsigned long i=0; i<2000000; i++);}сработало. Спасибо.
P.S. И какой-то странный движок форума — не позволяет редактировать своё последнее сообщение
Май 12, 2020 в 6:35 пп #21615imperrorУчастниккомпилятор заворачивает варнингом
потому что надо было делать так:
volatile void mydelay(void)
{
for ( unsigned long i=0; i<2000000; i++);
}а не только в прототипе указывать volatile
Май 12, 2020 в 6:57 пп #21616fisher74УчастникНу уж не до такой степени ламер. Конечно же и в прототипе указывал и в самой функции.
Май 12, 2020 в 7:23 пп #21617imperrorУчастникСтранно, должно было откомпилировать, только что проверил, но у меня gcc.
Май 13, 2020 в 9:01 дп #21619IgorexaУчастникЗдравствуйте, схема STM32H7-FMC-LCD. возможно-ли преобразовывать 1-бит(на пиксель) в 16-бит посредством dma2d? Шуршал даташит, там намек на альфабленд 1-бит режим.
-
АвторСообщения
-
АвторСообщения
-
Здравствуйте. здесь есть какой нибудь код связанный микропроцессор STM32F407 с резистор переменными и с дисплеем. мне надо так, когда крутишь, на дисплей отображает цифра, от 700 до 800. когда крутишь, цифры уменьшаются или увеличиваются. среда CooCox. помогите пожалуйста.
Приветствую во первых спасибо большое за видео уроки! Не на одном языке нету настолько доступного объяснения в таких количествах.
Подключил по вашим видео урокам tft дисплей с такими пинами
https://static-eu.insales.ru/images/products/1/428/142721452/TFT-MSD-_02.jpg
Дисплей пришел со стиком и насколько я понял из описания он touch.
Не могу разобраться как работать с тачем. Правильно ли я понимаю что если мы
использовали fsmc то работать с тачем не получится? (возможно нужно использовать еще какой-то адрес для чтения?) Пытался нагуглить какой-то пример все примеры идут через SPI. Подскажите пожалуйста что нужно использовать чтобы заставить работать тач + дисплей.Пытался нагуглить какой-то пример все примеры идут через SPI.
Добрых суток.
А это, скорее всего, и есть SPI:
LCD_CS — spi_cs
LCD_RS — spi_sck
LCD_WR — spi_mosi
LCD_RD — spi_misoВидимо вы правы, спасибо! Попробую теперь разобраться. Вообще хотел сделать вывод FFT на дисплейчик с аудио потока, но судя по всему не получится. fsmc использует ножку PD4 (FSMC_NOE) а ножка PD4 также используется для чипа аудио RESET. Правильно ли я понимаю что можно использовать или fsmc или CS43L22? Или есть какой-то выход из ситуации?
Я не знаю какой у вас контроллер, но по идее можно переназначить ножку FSMC_NOE, у вас же платка LCD подключена ручками, следовательно ни что не мешает это сделать. Если чип аудио тоже не распаян на плате микроконтроллера, то можно переназначить RESET.
Здравствуйте!
Не получается использование схемы распределения памяти heap_5 в IAR_Embedded_Workbench_for_ARM_8.40.
По тексту урока 131 можно представить следующее:
#if defined ( __ICCARM__ )
__no_init static uint8_t heap_sram1[32*1024] @ «.user_heap_stack»;
#else
static __attribute__((used,section(«.user_heap_stack»))) uint8_t heap_sram1[32*1024];
#endif
uint8_t heap_sram2[32*1024];
_____________________________________
Не трудно поместить блок .user_heap_stack рядом с системным стеком и кучей после .bss:
.bss zero 0x2000’f295 0x1 tcp.o [1]
.bss zero 0x2000’f296 0x1 XShttio.o [2]
— 0x2000’f297 0xf0af«P2», part 3 of 3: 0xe000
.user_heap_stack uninit 0x2000’f298 0x8000 main.o [1]
CSTACK 0x2001’7298 0x4000 <Block>
CSTACK uninit 0x2001’7298 0x4000 <Block tail>
HEAP 0x2001’b298 0x2000 <Block>
HEAP uninit 0x2001’b298 0x2000 <Block tail>
— 0x2001’d298 0xe000
_____________________________________
heap_sram1 0x2000’f298 0x8000 Data Lc main.o [1]
heap_sram2 0x2000’01e8 0x8000 Data Gb main.o [1]
_____________________________________
Путем редактирования файла *.isf у меня не получилось разместить блок перед секцией .bss.
Я не могу сказать, что эта неделя прошла не плодотворно с точки зрения вопросов распределения памяти, но пример так и не вышел из vPortDefineHeapRegions( xHeapRegions ). Точнее из heap_5.c:
/* Check blocks are passed in with increasing start addresses. */
configASSERT( xAddress > ( size_t ) pxEnd );
______________________________________
Андрей Курниц в https://www.kit-e.ru/articles/micro/2012_11_93.php заканчивает повествование heap_4.
Буду очень признателен, если кто-нибудь подробно разжует данный фрагмент урока!Здравствуйте. В последней реинкарнации CUBEMX престал работать VCP он же CDC на плате blue pill. При дефолтных настройках всё компилируется, запускается, порт в виндовс поднимается, но любая попытка записи в порт приводит к ошибке обмена. Изменение размера Tx Rx буферов и применение других советов не приводит к восстановления работоспособности. На плате black pill (stm32 f401cc) всё работает без проблем. Есть ли у кого положительный опыт поднятия VCP на blue pill и последнем CUBEMX?
доброго времени суток, что то запутался с таиминогами и настроиками sdram K4D261638F подключил против всех законов физики)))
на столе проводами к F767zi, при 8 битном в память пишется первые два символа из буфера(0x37BA0F68) > (0x37373737rn), в 16 битном первые четыре (0x37BA37BArn), подтолкните в нужном направление, инициализация из урока 62 по SDRAMДобрый день.
Решил начать осваивать SMT32, начав с Blue pill (F103c8t6). Светик, подключенный на плате к PortC13 смог зажечь, разобравшись в отличиях от F407.
А вот с морганием выходит засада: функция задержки полностью игнорируется Кейлом.123456789101112131415161718192021#include "stm32f10x.h"void mydelay(void);void mydelay(void){for (unsigned long i=0; i<2000000; i++);}int main(void){RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; // включаем тактирование портаGPIOC->CRH &= ~GPIO_CRH_MODE13; // обнуляем биты модера портаGPIOC->CRH |= GPIO_CRH_MODE13_1; // выставляем скорость макс скорость порта 2МГцGPIOC->CRH &= ~GPIO_CRH_CNF13; // цифровой выход push-pullwhile(1){GPIOC->BSRR = GPIO_BSRR_BR13; // Зажигаем светик (LED включен между VCC и PortC13)mydelay(); // Ждём.... но почему-то не ждёт ((GPIOC->BSRR = GPIO_BSRR_BS13; // Тушим светикmydelay(); // Снова ждём... и снова не ждёт}}Я понимаю, что такой тип задержки самый расточительный и в практике применяться не будет, но хотелось бы разобраться в этой проблеме.
volatile void mydelay(void){
…
}Должно помочь. volatile — говорит компилятору не оптимизировать функцию.
Спасибо, но
volatile void mydelay(void);
компилятор заворачивает варнингом <div class=»spoilerui»>function cannot return qualified void type ‘volatile void’ [-Wqualified-void-return-type]</div>
и так же игнорирует функцию.
На другие типы данных так же ругается.
А вот1234void mydelay(void){for (volatile unsigned long i=0; i<2000000; i++);}сработало. Спасибо.
P.S. И какой-то странный движок форума — не позволяет редактировать своё последнее сообщение
компилятор заворачивает варнингом
потому что надо было делать так:
volatile void mydelay(void)
{
for ( unsigned long i=0; i<2000000; i++);
}а не только в прототипе указывать volatile
Ну уж не до такой степени ламер. Конечно же и в прототипе указывал и в самой функции.
Странно, должно было откомпилировать, только что проверил, но у меня gcc.
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.