Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
ARM, Cortex, STM32 MAX485 не работает с датчиком https://www.cyberforum.ru/ arm/ thread2279567.html
Добрый день, Хочу связать датчик, общающийся по RS485 (лазерный сканер Рифтек РФ603) с STM32 через микросхему MAX485. Но для начала хочу просто пообщаться с этим датчиком через терминальную программу компьютера, но с использованием микросхемы MAX485. RS485 трехпроводной (DATA+,DATA-,GND).Схему подключения приложена в архиве. С датчиком удалось связаться, если подключать его к компьютеру...
Nucleo-L152RE board : перестал работать USART2 ARM, Cortex, STM32
Я в Кубе создал новый проект для платы Nucleo-L152RE и указал в нем USORT2 для вывода текста на экран компьютера, через PuTTY. Если я правильно понял даташит, то USORT2 не требует дополнительных переходников, она выводит текст посредством Virtual COM, через который плата прошивается. Тем не менее экран PuTTY пустой. Код простейший: while (1) { /* USER CODE END WHILE */
ARM, Cortex, STM32 МК stm32F103C8T6 Usart2. Какое напряжение на Rx ? Хочу подключить GSM модуль SIM800L. По даташиту, на его Rx максимальное напряжение 3.1 В. Можно ли Rx модуля напрямую подключить к Tx микроконтроллера? https://www.cyberforum.ru/ arm/ thread2277502.html ARM, Cortex, STM32 Hal_uart_receive_it Всем добрый вечер Столкнулся с такой сложностью: нужно принимать по UART пакеты с данными переменной длинны, то есть принимающее устройство не знает какой длинны придет посылка, но не более 512 байт. Как можно решить задачу средствами библиотеки HAL? Пробовал использовать кольцевой буфер, но не пошло бывает пропускает один или два байта. void HAL_UART_RxCpltCallback(UART_HandleTypeDef... https://www.cyberforum.ru/ arm/ thread2277242.html
ARM, Cortex, STM32 АЦП STM32F103 настройка
здравствуйте, уважаемые форумчане. Хочу я настроить ацп STM32F103CBT6. Не могу понять регистры SQR1 - SQR3. То есть как выбрать конкретный канал ацп. На данный момент мне нужно однократное преобразование на первом канале регулярной группы. В последствии я буду запускать его по таймеру. Сейчас же хотелось бы просто разобраться как настроить. вот мой код инициализации void adc_init(void) {...
ARM, Cortex, STM32 Переменная const изменяет своё значение Привет. Суть вопроса в том что переменная типа const изменяет своё значение. uint8_t gsm_state = GSM_HANDLER_STANDBY, gsm_sim = 0, //Статус конечного автомата, статус наличия симки gsm_incorrect_code = 0, //0 - не было ошибок при вводе пин кодов, 1 - был хоть один раз неправильно введён пин или пак код симки, 2 - при изменении пинов 1 и 2 были неправильно введены текущие пины... https://www.cyberforum.ru/ arm/ thread2276606.html
ARM, Cortex, STM32 Nucleo перестал выводить инфу через UART2 в PuTTY Я правильно понимаю, что UART2 встроен в Virtual COM ? У меня Nucleo-L152RE board. Я задал для UART2 baudrate 9600 в Кубе. И больше ничего не менял. Пробую выводить текст на терминал. Вот отрывок кода. PuTTY показывает только пустое окно. Что я делаю не так ? sprintf(str1,"%4d", Level); sprintf(str2,"%.6f", Voltage); HAL_UART_Transmit( &huart2, "The ADC level is ", 18, 100);... https://www.cyberforum.ru/ arm/ thread2276238.html ARM, Cortex, STM32 STM32F401RE+EthernetW5100=SNMP monitoring
STM32F401RE + EthernetW5100. Обладая таким комплектом и датчиком температуры захотелось научиться мониторить температуру по SNMP протоколу (для опроса я буду использовать MIB Browser) попутно узнавая, что еще полезного можно сделать для себя и для дома не тратя лишние деньги. Эта тема мне показалась актуальной, так как конкретной инфы в интернете по поводу SNMP мониторинга для любителей STM нет....
ARM, Cortex, STM32 Где найти уроки по программированию STM32F407VG? https://www.cyberforum.ru/ arm/ thread2275263.html
Настал вопрос о изучении данного вида микроконтроллера. Но документации в инете не особо много (для начинающего), кто что может порекомендовать?
ARM, Cortex, STM32 Отладка платы STM32F103C8T6 (Blue Pill) через st-link/v2 https://www.cyberforum.ru/ arm/ thread2275067.html
Здравствуйте! Подскажите как отлаживать STM32F103C8T6 используя оригинальный программатор st-link/v2? До этого всегда пользовался отладочными платами типа nucleo и discovery, но тут заказал себе простенький STM32F103C8T6 одолжив при этом программатор. Собственно как прошивать плату разобрался, для этого использую SWD (4 провода), но постоянно приходится перед прошивкой перекидывать джампер...
ARM, Cortex, STM32 Не выводит изо дисплей
Привет всем. Ребята нужна помощь по проекту. Есть плата собрана по заказу китайцами на чипе stm32 схему прилагаю по ссылке https://yadi.sk/d/UwbDMc4C3Z78ea Эта часть кода отвязана от STM32. Если сможете - прошу помочь разобраться в организации вывода изображения на экран - насколько всё правильно организовано (в соответствии с документацией), все ли необходимые библиотеки и функции...
ARM, Cortex, STM32 Приведение типов переменных Здравствуйте. Вопрос от чайника. Хочу настроить тактирование от HSE, включаю HSE. RCC->CR |= RCC_CR_HSEON; Но в сети можно встретить вариант с явным приведением типа. RCC->CR |= ((uint32_t)RCC_CR_HSEON); Зачем его тут используют и нужно ли это? Как правил
0 / 0 / 1
Регистрация: 05.04.2017
Сообщений: 64
0

АЦП и таймер STM32F103 - ARM, Cortex, STM32 микроконтроллер - ARM, Cortex, STM32 - Ответ 12565772

27.07.2018, 14:14. Показов 5143. Ответов 13
Метки (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, уважаемые форумчане. Ковыряюсь я с ацп и хочу запускать его по таймеру с частотой 1 КГц. Оцифрованные данные передаю по юсарт. Я не знаю как проверить реальную скорость всего этого, так как когда я подключался по программе terminal v1.9 и сохранял все в лог файл, то скорости и близкой к килогерцу нет. Я конечно не совсем правильно настроил ацп. я по таймеру запускаю преобразование программно, а вроде как можно аппаратно сделать. Вот я не понял как. Да и вообще, товарищи - специалисты, посмотрите пожалуйста на код и направьте в нужное русло.

C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_tim.h"
#include "stm32f10x_usart.h"
#include "misc.h"
 
uint8_t flag = 0;
uint16_t adc_value = 0;
char buffer[2] = {'\0'};
 
 
void adc_init(void)
{
    RCC_APB2PeriphClockCmd(RCC_APB2ENR_ADC1EN, ENABLE); //Включаем тактирование АЦП
    ADC1->CR2 |= ADC_CR2_CAL; //Запуск калибровки АЦП
    while (!(ADC1->CR2 & ADC_CR2_CAL)); //Ожидаем окончания калибровки
    ADC1->SQR1 | ADC_SQR1_L_0; //выбираем количество каналов оцифровки - 1 канал
    ADC1->SQR3 |= ADC_SQR3_SQ1_1;//выбырается нужный канал(здесь выбран первый)
    ADC1->SMPR2 |= (ADC_SMPR2_SMP1_2 | ADC_SMPR2_SMP1_1 | ADC_SMPR2_SMP1_0); //Задаем длительность выборки
    ADC1->CR2 |= ADC_CR2_EXTSEL; //Преобразование регулярной группы запустится установкой бита SWSTART
    ADC1->CR2 |= ADC_CR2_EXTTRIG; //Разрешаем внешний запуск регулярной группы
    ADC1->CR2 |= ADC_CR2_ADON;
}
 
void usart_init(void)
{
    /* Enable USORT1 and GPIOA clock */
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USORT1 | RCC_APB2Periph_GPIOA, ENABLE);
 
    /* NVIC Configuration */
    NVIC_InitTypeDef NVIC_InitStructure;
    /* Enable the USORTx Interrupt */
    NVIC_InitStructure.NVIC_IRQChannel = USORT1_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
 
    /* Configure the GPIOs */
    //GPIO_Configuration();
    GPIO_InitTypeDef GPIO_InitStructure;
 
    /* Configure USORT1 Tx (PA.09) as alternate function push-pull */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
 
    /* Configure USORT1 Rx (PA.10) as input floating */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
    GPIO_Init(GPIOA, &GPIO_InitStructure);
 
    /* Configure the USORT1 */
    //USORT_Configuration();
    USORT_InitTypeDef USORT_InitStructure;
    USORT_InitStructure.USORT_BaudRate = 115200;
    USORT_InitStructure.USORT_WordLength = USORT_WordLength_8b;
    USORT_InitStructure.USORT_StopBits = USORT_StopBits_1;
    USORT_InitStructure.USORT_Parity = USORT_Parity_No;
    USORT_InitStructure.USORT_HardwareFlowControl = USORT_HardwareFlowControl_None;
    USORT_InitStructure.USORT_Mode = USORT_Mode_Rx | USORT_Mode_Tx;
 
    USORT_Init(USORT1, &USORT_InitStructure);
 
    /* Enable USORT1 */
    USORT_Cmd(USORT1, ENABLE);
}
 
void USORTSend(const unsigned char *pucBuffer, unsigned long ulCount)
{
    while(ulCount--)
    {
        USORT_SendData(USORT1, *pucBuffer++);// Last Version USORT_SendData(USORT1,(uint16_t) *pucBuffer++);
        /* Loop until the end of transmission */
        while(USORT_GetFlagStatus(USORT1, USORT_FLAG_TC) == RESET)
        {
        }
    }
}
 
 
void init_timer(void)
{
    // TIMER4
 
    RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);
 
    TIM_TimeBaseInitTypeDef TIMER_InitStructure;
    TIM_TimeBaseStructInit(&TIMER_InitStructure);
    TIMER_InitStructure.TIM_CounterMode = TIM_CounterMode_Up;
    TIMER_InitStructure.TIM_Prescaler = 8000;
    TIMER_InitStructure.TIM_Period = 10;
    TIM_TimeBaseInit(TIM3, &TIMER_InitStructure);
    TIM_ITConfig(TIM3, TIM_IT_Update, ENABLE);
    TIM_Cmd(TIM3, ENABLE);
    /* NVIC Configuration */
    /* Enable the TIM4_IRQn Interrupt */
    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
}
 
void TIM3_IRQHandler(void)
{
        if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET)
        {
            // Обязательно сбрасываем флаг
            TIM_ClearITPendingBit(TIM3, TIM_IT_Update);
            ADC1->CR2 |= ADC_CR2_SWSTART; //запускаем преобразование ацп
            flag = 1;
        }
}
 
 
 
int main(void)
{
    adc_init();
    usart_init();
    init_timer();
 
    while(1)
    {
        if(flag == 1)
        {
            while (!(ADC1->SR & ADC_SR_EOC));
            adc_value = ADC1->DR;
            buffer[1] = adc_value & 0xFF; // получаем младший разр¤д числа
            buffer[0] = adc_value >> 8;// получаем старший разр¤д числа
            USORTSend(buffer, sizeof(buffer));
        }
        flag = 0;
    }
}
Добавлено через 9 минут
Кстати речь идет о STM32F103CBT6

Вернуться к обсуждению:
АЦП и таймер STM32F103 - ARM, Cortex, STM32 микроконтроллер ARM, Cortex, STM32
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.07.2018, 14:14
Готовые ответы и решения:

Внешние прерывания EXTI STM32F303VC - ARM, Cortex, STM32 микроконтроллер
Добрый день. Возникла проблема, пытаюсь заставить мигать светодиоды в 2 режимах меняющихся по...

Микроконтроллер ARM с 5В АЦП
А существует ли микроконтроллер архитектуры ARM с 5В АЦП. Питанием 5 вольт. и производительностью...

Проект для стенда на базе ARM Cortex STM32
Нужна помощь! Нужно разработать проект для Стенда с периферией на основе STM32F102C6. Но мой...

Сравнение "Qualcomm MSM8909 Snapdragon 210 ARM Cortex A7" и MT6737H Cortex-A53"
Сравниваю Сравнение "Qualcomm MSM8909 Snapdragon 210 ARM Cortex A7" и "MT6737H Cortex-A53" и не...

Алгоритм работы с ацп АЦП STM32F103
Здравствуйте, уважаемые форумчане. Подскажите пожалуйста алгоритм работы с ацп. Допустим мне надо...

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

ARM cortex A9 и L2
Здравствуйте! У меня приложение без ОС с линейной памятью. Для максимальной производительности...

Обсуждение ARM и Cortex
Пояснение было для того что бы люди поняли как работает компилятор. Хотите поговорить о скорости...

Программист С++ (Cortex/ARM)
Мы в поисках разработчика С/С++ в наш офис в Великом Новгороде, готовы рассмотреть кандидата в...

Инструкция DSP в ARM Cortex M4
Здравствуйте товарищи. У меня такой вопрос: Если я правильно понимаю инструкция DSP реализована в...

ARM cortex в т.ч. nvidia tegra
Выбираю себе девайс, носимый, и заметил странную особенность: планшетники с AMD процессорами...

ПРОГРАММИСТ для ARM Cortex
НУЖЕН ПРОГРАММИСТ ДЛЯ НАПИСАНИЯ ПРОГРАММ ДЛЯ ARM Cortex и ему подобных icq 665999716 скайп...

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