Поиск сообщества
Показаны результаты для тегов 'stm32'.
Найдено: 193 результата
-
Добрый день. Необходимо передать изображение из камеры OV9655 на ПК и отобразить его, Камера имеет выходной формат изображения RGB 565, с камеры считываю с использованием DCMI: uint32_t cameraData = DCMI_ReadData(); И после этого передаю через USART на ПК: USART_SendData(Open_USART, (uint8_t) cameraData>>24); while (USART_GetFlagStatus(Open_USART, USART_FLAG_TC) == RESET) {} USART_SendData(Open_USART, (uint8_t) cameraData>>16); while (USART_GetFlagStatus(Open_USART, USART_FLAG_TC) == RESET) {} USART_SendData(Open_USART, (uint8_t) cameraData>>8); while (USART_GetFlagStatus(Open_USART, USART_FLAG_TC) == RESET) {} USART_SendData(Open_USART, (uint8_t) cameraData); while (USART_GetFlagStatus(Open_USART, USART_FLAG_TC) == RESET) {} На компьютере принимаю через терминал и сохраняю в HEX файл. Скажите как потом его можно открыть? В качестве просмотрщика планирую использовать Java, но теперь вопрос как преобразовать данные с камеры в изображение. Может уже кто-то имел опыт работы с данной камерой? Подскажите, как можно передать изображение с нее на ПК?
-
Требуется Программист Встраиваемых Систем(Stm32)
insiderrus опубликовал тема в Вакансии и разовая работа
В московскую фирму на срочную разработку ПО требуется программист встраиваемых систем. Требования: - Опыт создания ПО для МК STM32 - I2C, USB device, SPI - Умение разбираться в больших иностранных даташитах устройств, управляемых микроконтроллером, вычленять из документации информацию, необходимую для написания ПО. Фактически требуется подключить конфигурируемый преобразователь HDMI-2xMIPI Toshiba TC358870 к стм32 и вывести видео с ПК на матрицы, плата с STM32F103 и TC358870 уже есть. Далее - продемонстрировать управление изображением с помощью МК и показать исходный код прошивки. Оплата обговаривается на собеседовании, после чего заключается договор. Сумма ориентировочно - 100 000. Контакты: http://vk.com/digialex +79057785454 -
Здравствуйте. В stm32cubemx создал проект, выбрал камень, настроил одну ножку на вывод и сгенерировал проект для Keil5. В Keil-e добавил только мигание светодиодом. Контроллер прошился и заработал как и планировалось (начал мигать светодиодом). Вот только второй раз я его прошить не могу, пишет "no target connected". Как можно его реанимировать? И не допускать подобных ситуаций? Как мне кажется, я что-то не доделал в stm32cubemx.
-
Сегодня вечером начал изучать стм32, конкретно stm32f103c8t6. Уже на попытке прилепить к нему кнопку возникла проблема. Пытаюсь притянуть встроенными резисторами кнопку к земле или к питанию, но читая входной регистр получаю единицу в независимости даже от того к чему подтягиваю. Если же я меняю код таким образом что вход плавает без подтяжки, он внезапно начинает работаьт корректно. #include "stm32f10x.h" int main(void) { RCC->APB2ENR |= RCC_APB2ENR_IOPCEN; RCC->APB2ENR |= RCC_APB2ENR_IOPAEN; GPIOC->CRH |= GPIO_CRH_MODE13_0; GPIOA->CRH |= GPIO_CRH_CNF8_1; //вот эта строка. Меняю конец на CNF8_0 - порт начинает работаь корректно, но без подтяжек разумеется GPIOA->ODR |= GPIO_ODR_ODR8; //этой строкой задается подтяжка, никакой разницы в поведении порта не заметно будь она закоменчена(тогда тянется к земле) или нет(тогда к питанию) while (1) { if(GPIOA->IDR & GPIO_IDR_IDR8){ GPIOC->BRR |= GPIO_BRR_BR13; } else{ GPIOC->ODR |= GPIO_ODR_ODR13; } } } Результат такой что диод на ПЦ13 все время выклчюен (инпут на А8 как будто бы есть хотя порт отключен от всего и может быть подтянут к земле). Пробовал другой порт, другой пин, результат тот же. Разумеется пробовал и Тыкать проводком от порта и в землю и в питание - никакой реакции, если пытаться его подтянуть, а если не подтягивать - работает корректно. Никаких описаний такого поведения в рефе нет. Пробовал добавлять строку которая ставит MODE биты пина в CRH порта в 00, но это никакого результата не принесло разумеется потому что они в 00 с момента старта) Ах да, пока не научусь рулить регистрами вручную, библиотекой пользоваться не хочу. Короче где то я косячу но уже часа 2 не могу понять где=)
-
С помощью программатор, который встроен в STM32VLDISCOVERY прошиваю мк на HY-STM32. И он успешно прошивался по трех-проводному интерфейсу (GND, SWCLK, SWDIO). А потом начал выдавать ошибку: рис. 1 и потом Если джамперы SN3 вернуть на место и прошивать мк на самой плате, то все работает. Подскажите пожалуйста почему так произошло или с чем это связано. Подключено все это дело так рис. 3 Подключаю по usb обе платы. Провода целые, позванивал. И неправильное подключение исключено т.к. я его прошил и он заработал. Нечего не отключая попробовал залить др. прошивку и не смог. (рис. 1) (рис. 2) (рис. 3)
-
С помощью прогромматор, который встроин в плату STM32VLDISCOVERY прошиваю мк на плате HY-STM32. И он успешно прошивался по трех-проводному интерфейсу (GND, SWCLK, SWDIO). А потом начал выдовать ошибку: ... Если джамперы SN3 вернуть наместо и прошивать мк на самой плате, то все работает. Подскажите пожалуйста почему так произошло или с чем это связано
-
Всем привет. У меня не работает сервомотор, контроллер stm32f407discovery. Вот код: #include #include #include #include void delay_ms(uint32_t ms) { volatile uint32_t nCount; //переменная для счета RCC_ClocksTypeDef RCC_Clocks; //переменная для считывания текущей частоты RCC_GetClocksFreq (&RCC_Clocks); //считываем текущую тактовую частоту nCount=(RCC_Clocks.HCLK_Frequency/10000)*ms; //пересчитываем мс в циклы for (; nCount!=0; nCount--); //гоняем пустые циклы } int main(void) { int x = 1023; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE); //включить тактирование GPIO_InitTypeDef PORT_SETUP; //структура настройки ножки PORT_SETUP.GPIO_Mode = GPIO_Mode_AF; //альтернативная функция ножки PORT_SETUP.GPIO_OType = GPIO_OType_PP; //ножка пуш-пул PORT_SETUP.GPIO_Pin = GPIO_Pin_12; //12 ножка PORT_SETUP.GPIO_Speed = GPIO_Speed_2MHz; GPIO_Init(GPIOD, &PORT_SETUP); GPIO_PinAFConfig(GPIOD,GPIO_PinSource12,GPIO_AF_TIM4); //использовать таймер4 для 12 ножки TIM_TimeBaseInitTypeDef TIM_SETUP; //структура настройки таймера TIM_SETUP.TIM_CounterMode = TIM_CounterMode_Up; //считаем вверх TIM_SETUP.TIM_Period = 4096; //период таймера 1023 отсчета TIM_SETUP.TIM_Prescaler = 334; //предделитель откл TIM_TimeBaseInit(TIM4, &TIM_SETUP); TIM_OCInitTypeDef PWM_SETUP; //структура настройки ШИМ PWM_SETUP.TIM_Pulse = 254; //начальное заполнение PWM_SETUP.TIM_OCMode = TIM_OCMode_PWM1; //режим1 center align PWM_SETUP.TIM_OutputState =TIM_OutputState_Enable; //подключаем к выходу PWM_SETUP.TIM_OCPolarity = TIM_OCPolarity_High; //положительная полярность TIM_OC1Init(TIM4, &PWM_SETUP); TIM_Cmd(TIM4, ENABLE); while(1) { TIM4->CCR1=0; delay_ms(500); TIM4->CCR1=2047; delay_ms(500); TIM4->CCR1=4095; delay_ms(500); } } Что с этим делать?
- 12 ответов
-
- stm32
- сервомотор
-
(и ещё 1 )
C тегом:
-
Доброго времени суток, у меня такая задача измерить данные из 1-го АЦП используя 2 канала и данные сохранять в DMA. Значения 1-го канала сохр. в одну переменную а другой в другую. Это задача для измерения напряжения и тока. Я ни как не могу собрать не могу добавить 2 канал. Подскажите пожалуйста, как можно решить эту проблему void init_adc() // АЦП { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2ENR_ADC1EN, ENABLE); ADC1->SMPR2 |= (ADC_SMPR2_SMP1_2 | ADC_SMPR2_SMP1_1 | ADC_SMPR2_SMP1_0); ADC1->CR2 |= ADC_CR2_JEXTSEL; ADC1->CR2 |= ADC_CR2_JEXTTRIG; ADC1->CR2 |= ADC_CR2_CONT; ADC1->CR1 |= ADC_CR1_JAUTO; ADC1->JSQR |= (1<<18); ADC1->CR2 |= ADC_CR2_ADON; ADC1->CR2 |= ADC_CR2_JSWSTART; while (!(ADC1->SR & ADC_SR_JEOC)); }
-
Добрый день, компания CPS Lab ищет на постоянную работу в офис в центре Москвы разработчика под микроконтроллеры STM32: Вашими обязанностями будет: - разработка программных модулей для работы с GPS, GSM, BLE- модулями - разработка интерфейсов для TFT-дисплеев (SPI, DMA, FSMC) - работа с периферией по интерфейсам UART, I2C, SPI, SDIO - написание кода математической обработки Нашего кандидата мы видим со следующими навыками: - Опыт программирования на C/С++ под микроконтроллеры семейства STM32 (STM32F4) не менее 2 лет - Опыт установки операционных систем для микроконтроллеров (RTOS) и работа с ними Наличие следующих компетенций (минимум 2 из перечисленных): - Работа с файловой системой для внешней Flash-памяти. - Опыт работы со следующими интерфейсами: SPI, I2C, FSMC - Опыт работы с беспроводными модулями - BLE, GSM (2G,3G), GPS (хотя бы часть) - Опыт работы с TFT дисплеями (цветные) по параллельной шине, емкостным тач-скрином Мы предлагаем: - комфортный офис в районе м.Новослободская/м.Менделеевская (3 мин. пешком) - гибкость в определении начала рабочего дня (присутственные часы 11:00-17:00) - интересные задачи по современным направлениям - чай/кофе/кондиционер в офисе Кандидатам, при обращении, требуется прислать примеры содержательного кода из 2-3 разных проектов, которые были реализованы ранее. Резюме и примеры присылайте на: id@cps-lab.com os@cps-lab.com (лучше на оба сразу)
-
Народ, кто подскажет, как можно реализовать подводную камеру? Тут, вся штука вот в чем: Нужно сделать камеру (скорее всего будет взята какая-нибудь камера из старенькой нокии (т. к. у меня знакомых много в ремонте =0 )). , которая влезет в маленикий корпус и подключится к микросхеме. Микросхема будет выдавать Композитный (это важно) видеосигнал. Тут первым встает вопрос... Что лучше взять? Хватит ли, скажем, STM32F103? Или STMf4? Или не париться и взять CHIP (он-то должен справиться с этой задачей, т. к. композит у него есть сразу, Система на чипе в 1ГГЦ с видеоядром... Много озу... Linux)? Следом встает вопрос где размещать? Корпус – усеченый конус размерами (длина) 5см*(диаметр большего основания) 4 см * (диаметр малого основания) 3.5 см. Чип туда не влезет... А т.к. это подводная камера, у которой длина провода может достигать 20 (!) м. , то, скорее всего будут просадки сигнала от камеры до чипа... Может, кто подскажет, как это лучше организовать?
-
Научно-медицинской фирме требуется инженер-электронщик-программист. Полная неделя 9:00 - 18:00. ст. м. Авиамоторная. Основная деятельность - разработка и программирование устройств на мк STM-32.
- 2 ответа
-
-1
-
- Инженер
- Электронщик
-
(и ещё 3 )
C тегом:
-
Добрый день. Есть несколько вопросов по созданию USB соединения ПК и STM32F4. Использоваться будет разъем microUSB. Соединение нужно только для заливки прошивки и считывания данных из памяти (внешней), следовательно плата должна определяться к периферийное устройство (режим хоста не требуется). 1. Куда нужно девать ногу ID на разъеме? Оставить не соединенной ни с чем или припаять на землю? В схеме с STM32F4DISCOVERY в STLink она припаяна к земле. В схеме с самим МК она идет в контроллер. А где-то вообще читал, что ее можно оставить висящей. 2. Нужно ли ставить внешний кварцевый резонатор? На странице 185 в параграфе "USB OTG full speed (FS) interface solutions" на рисунке он вроде как указан (выводы OSC_IN и OSC_OUT), но так и не ясно, нужно ли и на какую частоту. В Дискореви стоит на 8MГц, хотя где проскакивала цифра в 48МГц. Спасибо.
-
ЗДРАВСТВУЙТЕ Я СОЗДАЛ ПРОЕКТ МИГАНИЕМ СВЕТОДИОДОМ КОД ПРОЕКТА ВНИЗУ #include <system_stm32f0xx.h> int main(void) { RCC->AHBENR |= RCC_AHBENR_GPIOCEN; GPIOC->MODER |= (GPIO_MODER_MODER8_0 | GPIO_MODER_MODER9_0) ; } void delay (int a) { volatile int i,j; for (i=0 ; i < a ; i++) { j++; } return; } ПРИ КОМПИЛЯЦИИ ПРОЕКТА ВЫВОДИТ ОШИБКУ ".\output\keil_project.axf" - 29 Errors, 0 Warning(s). Target not created В ЧЕМ ПРОБЛЕМА КАК МОЖНО ЕГО РЕШИТЬ
-
Здравствуйте уважаемые любители МК) Пытаюсь организовать такую задачу на STM32f407VG: 1. Принимаем данные по USART, помещаем их во временный буфер( Recieve_buff). 2. Если попадается символ '+' читаем (Recieve_buff) и записываем данные после '+' в массив данных (massive). 3. Выводим данные на жки wh1602. с 1 и 3 пунктом проблем как бы нет, но вот со вторым вовсе не клеится. К примеру: отправляю +suprima, после 1, а то и 3 отправки приходит только один символ 's', т.е. и не каждый раз выводятся данные. Прошу помощи у Гуру сообщества. Всем Благ! #include "main.h" uint16_t delay_count=0; uint32_t i; uint32_t i3; int i2=123; char str1[50]; uint8_t massive[256]; // massive buffer uint8_t Recieve_buff[256]; // recieved buffer uint8_t Recieve_W=0, Recieve_R=0, Recieve_C=0; char Send_buffer[100]; uint8_t Send_count=0; void SysTick_Handler(void)// counter { if (delay_count > 0) { delay_count --; } } void(delay_ms(uint16_t delay_temp)) // schitayem nashe vremya, kotoroe zadano v osnovnom tele { delay_count = delay_temp; while(delay_count) {} } //---------------------------------------------------// //recieved data interrupt //---------------------------------------------------// void USART2_IRQHandler(void) { if(USART_GetITStatus(USART2, USART_IT_RXNE) == SET) // if flag interrupt set up we will do next... { USART_ClearITPendingBit(USART2, USART_IT_RXNE); // reset interrupt Recieve_buff[Recieve_W] =USART_ReceiveData(USART2); Recieve_W++; Recieve_C++; } } //---------------------------------------------------// int main(void) { USART2_init(); SystemCoreClockUpdate(); SysTick_Config(SystemCoreClock/1000);// 1ms delay_ms(50); LCD_ini(); while(1) { if(Recieve_C>0) { if(Recieve_buff[Recieve_R++]=='+') { massive[i3++]=Recieve_buff[Recieve_R++]; sprintf(str1, "%s", massive); //sprintf(str7, "%s %d %s", "one", i2, str); LCD_Send_String8(0,str1); } Recieve_C--; Recieve_R++; } } }
-
Проблема с настройкой внешнего прерывания на PA1 Настройки прерывания: #include "stm32f0xx_exti.h" #include "stm32f0xx_gpio.h" #include "stm32f0xx_rcc.h" #include "stm32f0xx_misc.h" #include "stm32f0xx_syscfg.h" EXTI_InitTypeDef exti; NVIC_InitTypeDef nvic; GPIO_InitTypeDef gpio; void RCC_Set(void); void exti_setting(void); void GPIO_Set(void); //############################################################// //##################Включаем тактирование#####################// //############################################################// void RCC_Set(void) { RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA,ENABLE); RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC,ENABLE); } //############################################################// //############################################################// //############################################################// //############################################################// //#######################Настройка GPIO#######################// //############################################################// void GPIO_Set(void) { gpio.GPIO_Mode=GPIO_Mode_OUT; gpio.GPIO_OType=GPIO_OType_PP; gpio.GPIO_Pin=GPIO_Pin_8|GPIO_Pin_9; gpio.GPIO_PuPd=GPIO_PuPd_NOPULL; gpio.GPIO_Speed=GPIO_Speed_Level_2; GPIO_Init(GPIOC,&gpio); gpio.GPIO_Mode=GPIO_Mode_IN; gpio.GPIO_OType=GPIO_OType_PP; gpio.GPIO_Pin=GPIO_Pin_1; gpio.GPIO_PuPd=GPIO_PuPd_NOPULL; gpio.GPIO_Speed=GPIO_Speed_Level_2; GPIO_Init(GPIOA,&gpio); } //############################################################// //############################################################// //############################################################// //############################################################// //###################Настройка Прерывания#####################// //############################################################// void exti_setting(void) { exti.EXTI_Line=EXTI_Line1; exti.EXTI_LineCmd=ENABLE; exti.EXTI_Mode=EXTI_Mode_Interrupt; exti.EXTI_Trigger=EXTI_Trigger_Rising_Falling; EXTI_Init(&exti); nvic.NVIC_IRQChannel=EXTI0_1_IRQn; nvic.NVIC_IRQChannelCmd=ENABLE; nvic.NVIC_IRQChannelPriority=0; NVIC_Init(&nvic); SYSCFG_EXTILineConfig(EXTI_PortSourceGPIOA,EXTI_PinSource1); NVIC_EnableIRQ(EXTI0_1_IRQn); } //############################################################// //############################################################// //############################################################// int main(void) { RCC_Set(); GPIO_Set(); exti_setting(); while(1) { } } //############################################################// //##################Обработчик Прерывания#####################// //############################################################// void EXTI0_1_IRQHandler(void) { GPIOC->ODR^=GPIO_Pin_8; //Инвертируем состояние светодиода EXTI_ClearITPendingBit(EXTI_Line1); } //############################################################// //############################################################// //############################################################// Чтобы не подать на PA1, обработчик не отрабатывает! Что не так, что я упустил?
-
Написал прогу для инициализации и считывания данных с LIS3DH. Со значениями творится полная ерунда. На одно истиное значение приходится 1-5 ложных (лежащих в пределах -200 до 300). Если данные визуализировать, получается дёрганная кривая. Прерывания не использовал. Как с этим бороться?
-
Представляю вам свой проект, предназначенный для повторения начинающими роботостроителям: Android-управление машинкой по Bluetooth при помощи акселерометра. Проект полностью Open Source, все исходники прикреплены внизу статей. Видео работы: Вводная статья на сайте Проект под STM32 Проект под Arduino Проект под .NET Micro Framework Данный топик - тема поддержки проекта, т.к. по связи Android <-> МК возникает много вопросов, как правило по части ПО (Java). Видео работы на другом шасси: