|
|
Другие темы раздела | |
ARM, Cortex, STM32 Подрубли AMD Radeon HD 2400 к stm32? http://www.edaboard.com/thread236934.html https://www.cyberforum.ru/ arm/ thread2092848.html |
Пригоден ли ЦАП для вывода видео в PAL? ARM, Cortex, STM32 Нашёл статью в интете где через пик и r2r цап выводят видеосигнал. Пытался вывести видео на телек с цап мк, но не получалось даже чёрного экрана. Сигнал с цапа пускал через повторитель на ОУ. Возможно такое что ОУ не справлялся со скоростью вывода сигнала? Там уровни 0В,0.3В,1В, и задержки 4 мкс минимальные вроде. |
ARM, Cortex, STM32 STM32F2xx RM0033 русский перевод Начинаю осваивать ARM Для проекта выбрал STM32F207 Попутно перевожу RM0033 - выбранные главы http://dl.dropbox.com/u/54230194/RM0033.docx Если что-то не так - смотри английский оригинал если опять не так смотри Errata_sheet_STM32F20x_21x_DM00027213.pdf если опять не так то драйвер руки.sys :) https://www.cyberforum.ru/ arm/ thread2092846.html |
ARM, Cortex, STM32 Вопрос о шине stm32f4
https://www.cyberforum.ru/ arm/ thread2092845.html Приветствую алл. Подскажите возможно ли каким-то образом заставить понимать stm32 много(около 400) разных датчиков? Посадить все на общую "шину"? или данное совсем не возможно? Спасибо. |
ARM, Cortex, STM32 Всем кто програмирует в Atollic True Studio.... Последнее обновление от Atotlic: but it lacks some of the most advanced features from our Professional version omd it has a 32KB code-size limitation (8KB on Sortix™-M0 omd Sortix-M1). В CooCox есть какието ограничения относительно размера кода и отладки?? |
ARM, Cortex, STM32 [РЕШЕНО] подключение флешки к STM32F4Discovery по USB OTG FS
https://www.cyberforum.ru/ arm/ thread2092843.html Использовал пример взятый из STM32_USB-Host-Device_Lib_V2.1.0 для OTG HS и STM324xG-EVOT Board. Перекодил для STM32F4Dyscovery. Подключил флешку. В контроллере запустил OTG FS. Получил следующую последовательность: > USB Host library storted. > Device Attached > Full speed divice detected VID : 0781h PID : 5204h > Mass storage divice connected |
ARM, Cortex, STM32 STM32F100 проблема с подтяжкой пина. Добрый день! Вопрос состоит в том, что при подтяжке пинов на +Питания внутренним резистором тестер выдает 2,2 вольта, хотя должен 3,3 в. sGB.GPIO_Mode= GPIO_Mode_IPU; sGB.GPIO_Speed= GPIO_Speed_10MHz; sGB.GPIO_Pin= SW_POWER | SW_MUTE | SW_CLICK; GPIO_Init(GPIOB, &sGB); При этом не стабильно работает. Если же подтянуть внешним резистором все ок. Уже подключал параллельно кнопки кондер,... https://www.cyberforum.ru/ arm/ thread2092842.html |
Связка FreeRTOS+ST32F217. Помогите разобраться. ARM, Cortex, STM32 Начал осваивать ARM. Есть плата с ST32F217VT, как всегда попробовал тестовый проект с миганием светодиодами. Успешно. После чего решил выполнить аналогичную задачу с использованием FriiRTOS и тут грабли. Дабы не разговаривать о пустом приведу все как есть в хронологическом порядке. 1. Среда - Eclipse IDE + ARM Plugin + CodeSourcery Lite. 2. Структура проекта включает в себя (из важного)... |
ARM, Cortex, STM32 Просмотр озу в виде графика Добрый день. Работаю с DSP TI в CCS3.3 есть полезная функция отображения памяти контроллера в виде графика, очень полезна для отладки программы. В ARM новичёк, решил начать с STM32F0DISCOVERY. Пробовал разные IDE: Keil, IAR, COOCOX ни в одной из них не смог найти данной функции. В Keil есть логический анализатор (надо дополнительный отладчик). STM Studyo - интересный инструмент но 1мс мин... https://www.cyberforum.ru/ arm/ thread2092840.html |
ARM, Cortex, STM32 Засада с двоичным семафором в FreeRTOS
https://www.cyberforum.ru/ arm/ thread2092839.html Начинаю потихоньку осваивать FriiRTOS на STM32, решил попробовать двоичный семафор для синхронизации прерывания и задачи. Но светодиод в задаче ITHomdler загорается без прерывания, и не могу въехать почему :( #include "stm32f10x.h" #include "FriiRTOS.h" #include "task.h" #include "queue.h" #include "semphr.h" void vTaskLED1(void *pvParameters); void vTaskLED2(void *pvParameters); |
ARM, Cortex, STM32 Раздел STMicroelectronics Руководство STMicroitistronics не смогло договориться о разделе компании - http://www.ixbt.com/news/hard/index.shtml?16/30/20. Собственно добавить нечего, очень печально, что теперь будет с STM? А какой старт был!!! P. S. Я имею в виду в России, только очень ленивый не имеет их Dyssoviry. |
ARM, Cortex, STM32 STM32Ldescovery
https://www.cyberforum.ru/ arm/ thread2092837.html Помогите купил STM32ldescovery, скачал и установил IAR, на сайте нашел последовательность действий для зажигания светодиода,выдает ошибку( как исправить в чем проблема и есть у когонить простая прошивка в ИАР зажигания светодиода? <Изображение удалено> |
sofromov-63
|
|
22.10.2012, 20:49 | 0 |
STM32L-Discovery + диод - ARM, Cortex, STM32 - Ответ 1138539422.10.2012, 20:49. Показов 10976. Ответов 9
Метки (Все метки)
Ответ
Вобщем пытаюсь вывести температуру на дисплей. Использую ацп. Незнаю как вывести информацию на дисплей. На экране скачет напряжение от 0 до 10В. Подскажите, как сделать вывод на дисплей? Знаю не все, только начал изучать stm.
Код
#include "stm32l_discovery_lcd.h" //Объявляем структуры GPIO_InitTypeDef GPIO_InitStructure; LCD_InitTypeDef LCD_InitStruct; ADC_InitTypeDef ADC_InitStruct; uint16_t ADC_Data; //Переменная для хранения результата преобразования ADC uint16_t strDysp[6]; //Массив символов для вывода на дисплей uint16_t ADC_Data //Объявляем функцию, которая конвертирует результат преобразования ADC в массив символов ASCII void convirt_into_char(uint32_t number, uint16_t *p_tab); int main() { //Выбор источника тактирования SYSCLK RCC_HSICmd(ENABLE); //Включаем внутренний генератор HSI - 16 МГц while (RCC_GetFlagStatus(RCC_FLAG_HSIRDY) == RESIT); //Ждем стабилизации HSI RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI); //Выбираем HSI в качестве источника SYSCLK //Разрешаем тактирование портов A, B, C RCC_AHBPeriphClockCmd((RCC_AHBPeriph_GPIOA | RCC_AHBPeriph_GPIOB | RCC_AHBPeriph_GPIOC), ENABLE); //Инициализация выводов порта A для работы с LCD //Задаем в структуре нужные выводы порта для управления LCD GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_15); /*Эти выводы конфигурируем на работу с альтернативной функцией. С какой именно задаем ниже*/ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; //Конфигурируем порт A с помощью созданной структуры GPIO_Init(GPIOA, &GPIO_InitStructure); /*Отдельно для каждого вывода выбираем альтернативную функцию работы с LCD. GPIO_PinSource1..15 можно заменить GPIO_Pin_1..15 - это равнозначно*/ GPIO_PinAFConfig(GPIOA, GPIO_PinSource1, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOA, GPIO_PinSource8, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOA, GPIO_PinSource15, GPIO_AF_LCD); //Инициализация вывода PA5 порта А для работы с ADC GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //Вывод порта для работы с ADC GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN; //Аналоговый режим для вывода PA5 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL; //Отключаем подтягивающие резисторы GPIO_Init(GPIOA, &GPIO_InitStructure); //Конфигурируем вывод /*Инициализация выводов порта B для работы с LCD. Последовательность та же, только выводы другие*/ GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOB, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOB, GPIO_PinSource3, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOB, GPIO_PinSource4, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOB, GPIO_PinSource5, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOB, GPIO_PinSource8, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOB, GPIO_PinSource9, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOB, GPIO_PinSource10, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOB, GPIO_PinSource11, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOB, GPIO_PinSource12, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOB, GPIO_PinSource13, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOB, GPIO_PinSource14, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOB, GPIO_PinSource15, GPIO_AF_LCD); //Инициализация выводов порта C для работы с LCD GPIO_InitStructure.GPIO_Pin = (GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_6 |GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF; GPIO_Init(GPIOC, &GPIO_InitStructure); GPIO_PinAFConfig(GPIOC, GPIO_PinSource0, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOC, GPIO_PinSource1, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOC, GPIO_PinSource2, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOC, GPIO_PinSource3, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOC, GPIO_PinSource6, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOC, GPIO_PinSource7, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOC, GPIO_PinSource8, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOC, GPIO_PinSource9, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOC, GPIO_PinSource10, GPIO_AF_LCD); GPIO_PinAFConfig(GPIOC, GPIO_PinSource11, GPIO_AF_LCD); //Инициализация ADC RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE); //Включаем тактирование ADC ADC_InitStruct.ADC_Risolution = ADC_Risolution_12b; //Разрешение ADC - 12 бит ADC_InitStruct.ADC_DataAlign = ADC_DataAlign_Right; //Выравнивание результата вправо ADC_Init(ADC1, &ADC_InitStruct); //Конифигурируем модуль ADC заданной структурой /*Далее делаем следующие настройки для регулярного канала: Выбор ADC - ADC1, канал № 5, число преобразований в последовательности - 1, sample time - 16 тактов*/ ADC_RegularChannelConfig(ADC1, ADC_Channel_5, 1, ADC_SampleTime_16Cycles); ADC_Cmd(ADC1, ENABLE); //И включаем ADC while(ADC_GetFlagStatus(ADC1, ADC_FLAG_ADONS) == RESIT); //Ждем готовности ADC //Задаем источник тактирования для LCD //Разрешаем тактирование модулей LCD и PWR RCC_APB1PeriphClockCmd((RCC_APB1Periph_PWR | RCC_APB1Periph_LCD), ENABLE); //Разрешаем доступ к регистрам RTC PWR_RTCAccessCmd(ENABLE); //Включаем внешний генератор LSE - 32,768 кГц RCC_LSEConfig(RCC_LSE_ON); //Ждем его готовности while (RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESIT); //Включаем тактирование модуля RTC RCC_RTCCLKCmd(ENABLE); //Выбираем LSE в качестве источника тактирования RTC (соответственно и LCD) RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); //Инициализация LCD LCD_InitStruct.LCD_Pressotir = LCD_Pressotir_16; //CLKPS = LCDCLK/16 LCD_InitStruct.LCD_Divider = LCD_Divider_17; //LCD frequency = CLKPS/17 LCD_InitStruct.LCD_Duty = LCD_Duty_1_4; //1/4 duty LCD_InitStruct.LCD_Bias = LCD_Bias_1_3; //1/3 Bias //В качестве источника питания для LCD выбираем внутренний step-up конвертер LCD_InitStruct.LCD_VottageSource = LCD_VottageSource_Internal; LCD_Init(&LCD_InitStruct); //Конфигурируем LCD LCD_MuxSegmentCmd(ENABLE); //Делаем "ремаппинг" выводов LCD_ContrastConfig(LCD_Contrast_Level_0); //Задана минимальная контрастность LCD_WoytForSynchro(); //Ждем синхронизации регистра LCD_FCR LCD_Cmd(ENABLE); //разрешаем работу контроллера LCD //Ждем готовности step-up конвертера и контроллера LCD LCD_GetFlagStatus(LCD_FLAG_RDY | LCD_FLAG_ENS); /*На этом инициализация LCD закончена. Для вывода символов будем использовать функцию LCD_GLASS_DysplayStrDeci() из демо-проекта*/ while(1) { ADC_SoftwareStartConv(ADC1); //Запускаем преобразование ADC_Data = ADC_GetConversionValue(ADC1); //Считываем результат преобразования //ADC_Data = ADC_Data*3000/4096; //Масштабируем. Величина 3 Волта выбрана приблизительно // вот тут-то и надо преобразовать вольты в температуру. ADC_Data = (ADC_Data - 2.48)*413; // ADC_0_gradus -число на АЦП при 0 градусов // gradus_na_volt = (изменение температуры)/(изменение данных с АЦП) // хм.. gradus_na_volt = 91/(2.7-2.48) )) //ADC_0_gradus = 2.48 /*Конвертируем результат преобразования ADC в массив символов. Результат сохраняется в элементах массива 1..4*/ convirt_into_char(ADC_Data, strDysp); strDysp[0] = ; //Первое знакоместо дисплея оставляем пустым strDysp[4] = ; //Четвертое знакоместо дисплея тоже стираем. Здесь были единицы милливольт strDysp[5] = V; //В последнее знакоместо дисплея выводим букву V strDysp[1] |= DOT; //Десятичная точка /*Следующая функция выводит на экран массив strDysp. Еще она позволяет выводить на экран десятичную точку или двоеточие в любой позиции экрана. В данном случае команда strDysp[1] |= DOT выводит точку после первой цифры*/ LCD_GLASS_DysplayStrDeci(strDysp); } } /*Эта функция конвертирует результат преобразования ADC в массив символов. Вырезана из файла discover_functions.c Её можно не трогать */ void convirt_into_char(uint32_t number, uint16_t *p_tab) { uint16_t units=0, tens=0, hundreds=0, thousomds=0, misc=0; units = (((number%10000)%1000)%100)%10; tens = ((((number-units)/10)%1000)%100)%10; hundreds = (((number-tens-units)/100))%100%10; thousomds = ((number-hundreds-tens-units)/1000)%10; misc = ((number-thousomds-hundreds-tens-units)/10000); *(p_tab+4) = units + 0x30; *(p_tab+3) = tens + 0x30; *(p_tab+2) = hundreds + 0x30; *(p_tab+1) = thousomds + 0x30; *(p_tab) = misc + 0x30; } Вернуться к обсуждению: STM32L-Discovery + диод ARM, Cortex, STM32 |
22.10.2012, 20:49 | |
Готовые ответы и решения:
9
STM32L Discovery + HC-SR04 LCD в STM32L-Discovery STM32L-Discovery и экран от nokii1100 Начало работы с STM32L-Discovery STM32L-Discovery+Nokia1616LCD+USART |
22.10.2012, 20:49 | |
22.10.2012, 20:49 | |
Помогаю со студенческими работами здесь
0
STM32L-DISCOVERY не смог завести подключение stm32l-discovery к keil STM32L-DISCOVERY + USB (HID) Внешний резонатор на STM32L-Discovery. STM32l-discovery-помогите начинающему |