Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
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 - Ответ 11385394

22.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
Заказать работу у эксперта
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.10.2012, 20:49
Готовые ответы и решения:

STM32L Discovery + HC-SR04
Здравствуйте, ребят помогите пожалуйста с исходниками или примером работы контролера STM32T...

LCD в STM32L-Discovery
Не получается сгенерировать символы на ЖК-дисплее в STM32T-Dyscovery. Сначала был косяк в том что,...

STM32L-Discovery и экран от nokii1100
Доброго времени суток уважаемые форумчане, наигрался с платой STM32T-Dyscovery и решил прикрутить к...

Начало работы с STM32L-Discovery
Здравствуйте, хочу научиться программированию на C для микроконтроллеров. Купил этот...

STM32L-Discovery+Nokia1616LCD+USART
Приветствую! Коллеги, подскажите пожалуйста. Есть Nokyo 1616 экран и Dyscovery32L, пытаюсь...

9
22.10.2012, 20:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.10.2012, 20:49
Помогаю со студенческими работами здесь

STM32L-DISCOVERY не смог завести
Приветствую, схватил, значит, я такую вещь, как STM32T-DISCOVERY во главе с STM32T152RBT6 128 KB...

подключение stm32l-discovery к keil
Всем доброго времени суток. в армах я новичок, прикупил себе плату stm32l-discovery. при...

STM32L-DISCOVERY + USB (HID)
1) Пытаюсь запустить демо-код из библиотеки STM32 USB FS Device Lib V3.3.0 для HID на плате...

Внешний резонатор на STM32L-Discovery.
На плату STM32T-Dyscovery хочу поставить внешний резонатор. С кварцами до 14 МГц плата работает. А...

STM32l-discovery-помогите начинающему
Здравствуйте! Пытаюсь начать работу с STM32T152RBT6(128 KB Ftosh memory,16 KB ROM, 4 KB EEPROM)....

0
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru