Поиск сообщества
Показаны результаты для тегов 'STM32F0'.
Найдено: 4 результата
-
Подскажите, как подключить электретный микрофон к отладочной плате stm32f0discovery. Выбрал микрофон VS4011S36, 4,5 В, 4 мм. Нужно знать конкретно какие провода к каким входам подключать. Заранее спасибо! https://static.chipdip.ru/lib/735/DOC000735976.pdf --- Datasheet на плату
-
Здравствуйте. Нужно разобраться с принципом работы интерфейса I2C на Stm32. понимаю, что материала в интернете много, но почему-то даже просто структура, где определяются параметры, у меня другая. Моя вот такая: typedef struct { uint32_t I2C_Timing; uint32_t I2C_AnalogFilter; uint32_t I2C_DigitalFilter; uint32_t I2C_Mode; uint32_t I2C_OwnAddress1; uint32_t I2C_Ack; uint32_t I2C_AcknowledgedAddress; }I2C_InitTypeDef; Те, что даются в примерах, в статьях, такая: typedef struct { uint32_t I2C_ClockSpeed; uint16_t I2C_Mode; uint16_t I2C_DutyCycle; uint16_t I2C_OwnAddress1; uint16_t I2C_Ack; uint16_t I2C_AcknowledgedAddress; }I2C_InitTypeDef; Найдя пример на этом форуме (https://forum.cxem.net/index.php?/topic/202586-i2c-%D0%B2-stm32f030/) увидел, что используются параметры такие же, что и у меня, но теперь не понятно, откуда такие значения берут и по какой логике. Прошу не пинать ногами и кидать в меня гнилые помидоры, а помочь разобраться в этом всём или подсказать, где можно найти исчерпывающую информацию, где хорошо и по полочкам всё разложено. Программирую в keil uVision v5 Отладочная плата stm32f0 disco МК stm32f0030r8 Благодарю заранее.
-
Привет коллеги! Данная публикация - для тех, кто еще не все плюшки UARTA попробовал )) USART1 (и только он) микроконтроллеров серии STM32F030 предоставляет возможность принимать пакеты данных с неизвестной заранее длиной пакета. Для этого можно использовать овертаймер. Работает это так: Если в течение заданного времени не будет принят старт-бит очередного байта, генерируется прерывание. Время ожидания задается не физически (в секундах), а в количестве бит, которые могли бы быть приняты на данной скорости. т.е., если мы зададим число 16, то прерывание возникнет, если в течение времени эквивалентному приему 16 бит, на вход USART не поступит старт-бит. Как включить. 1 разрешим прерывание - бит RTOIE регистра CR1 2 зададим время (количество бит) в регистре RTOR 3 разрешим работу овертаймера - бит RTOEN регистра CR2 4 при возникновении прерывания от USART1, смотрим флаг RTOF в регистре ISR, - если есть флаг, значит это оно 5 сбросим флаг прерывания - бит RTOCF в регистре ICR. Как я это использую. Включаю прерывание при инициализации порта и задаю количество бит для счетчика. Как только приходит первый байт сообщения - в прерывании разрешаю работу овертаймера. Все принятые байты сохраняю в буфер. Когда возникнет прерывание по овертайму - запрещаю овертаймер, и передаю пакет на парсинг.
-
Добрейшего всем времени суток! Случилось недавно моему заказчику захотеть защитить прошивку от считывания (да, я знаю, люди эту защиту сковыривают на раз, но это уже не моя беда). А так как делать это вручную, при прошивке каждого проца, довольно геморройно, было решено добавить в код "самозащиту". Почитав мануал на проц, погуглив, почитав комментарии в stm32F0xx_flash.h, я написал следующий код: #include "stm32F0xx_flash.h" if (RESET == FLASH_OB_GetRDP()) //checking protection status { FLASH_OB_Unlock(); //unblock the Option Byte if (FLASH_COMPLETE == FLASH_OB_RDPConfig(OB_RDP_Level_1)) FLASH_OB_Launch(); FLASH_OB_Lock(); } Казалось бы, всё сделано так, как рекомендовано. Тем не менее, этот код не работает. Гугль показал, что данная тема волнует не только меня, но и других камрадов. В общем, правильное решение выглядит так: #include "stm32F0xx_flash.h" if (RESET == FLASH_OB_GetRDP()) //checking protection status { FLASH_Unlock(); //unblock the FLASH (!!) FLASH_OB_Unlock(); //unblock the Option Byte if (FLASH_COMPLETE == FLASH_OB_RDPConfig(OB_RDP_Level_1)) FLASH_OB_Launch(); FLASH_OB_Lock(); FLASH_Lock(); } Обратите внимание, - перед тем, как разблокировать Option Byte, необходимо разблокировать саму флэшь.