Перейти к содержанию
    

Denis_N

Участник
  • Постов

    6
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

  1. Orange PI 3 LTS UART

    Есть задача обмена с разными устройствами по UART. Кто-нибудь сталкивался с настройкой UART на Orange?
  2. Большое спасибо. Можно закрывать.
  3. Снаружи. char increment(char t) { t = t + 1; return t; } inc = increment(5); Так вот inc = 6. нет проблем...зачем городить указатели?
  4. Может кто-то найти время и доступным языком написать что такое указатели в С? Логично, что сначала надо идти в гугл читать. Но есть куча статей, что это такое. Ну как бы понятно, указатель на переменную, на ее адрес бла бла. А зачем ?? Когда можно просто изменить переменную и она изменится ВЕЗДЕ. https://medium.com/nuances-of-programming/для-чего-нужен-указатель-в-язык-си-4e048cac4755 Вот статья, пишут : // Эта функция не будет работать, так как в Си функция передаётся по значению. // Внесённые изменения не действительны за пределами функции. void increment(int i) { i = i + 1; } функция не будет работать. Вставляю в проект, запускаю дебаг. Все работает. Переменная меняется. Помогите. Если можно с примером.
  5. ADC DMA HAL STM32F103C8T6

    Сразу прошу в топике не вопить на тему хал-говно и прочее. Проблема такая: нужно по DMA читать 4 канала АЦП. Код пишу в CUbeIDe. Если в debugger ставлю режим сброса CORE RESET, то все работает нормально. Смотрю переменные в STM Studio. Если ставлю режим Software Reset, то только первое преобразование срабатывает по 1 каналу и все. Может кто сталкивался. int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_ADC1_Init(); MX_TIM1_Init(); MX_TIM3_Init(); MX_TIM4_Init(); MX_DMA_Init(); MX_TIM2_Init(); /* USER CODE BEGIN 2 */ //настройка DMA для АЦП HAL_ADC_Start_DMA(&hadc1,(uint32_t*) &ADC_Conv,4); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ } static void MX_ADC1_Init(void) { /* USER CODE BEGIN ADC1_Init 0 */ /* USER CODE END ADC1_Init 0 */ ADC_ChannelConfTypeDef sConfig = {0}; /* USER CODE BEGIN ADC1_Init 1 */ /* USER CODE END ADC1_Init 1 */ /** Common config */ hadc1.Instance = ADC1; hadc1.Init.ScanConvMode = ADC_SCAN_ENABLE; hadc1.Init.ContinuousConvMode = ENABLE; hadc1.Init.DiscontinuousConvMode = DISABLE; hadc1.Init.ExternalTrigConv = ADC_SOFTWARE_START; hadc1.Init.DataAlign = ADC_DATAALIGN_RIGHT; hadc1.Init.NbrOfConversion = 4; if (HAL_ADC_Init(&hadc1) != HAL_OK) { Error_Handler(); } /** Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_6; sConfig.Rank = ADC_REGULAR_RANK_1; sConfig.SamplingTime = ADC_SAMPLETIME_239CYCLES_5; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { Error_Handler(); } /** Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_7; sConfig.Rank = ADC_REGULAR_RANK_2; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { Error_Handler(); } /** Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_8; sConfig.Rank = ADC_REGULAR_RANK_3; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { Error_Handler(); } /** Configure Regular Channel */ sConfig.Channel = ADC_CHANNEL_9; sConfig.Rank = ADC_REGULAR_RANK_4; if (HAL_ADC_ConfigChannel(&hadc1, &sConfig) != HAL_OK) { Error_Handler(); } /* USER CODE BEGIN ADC1_Init 2 */ /* USER CODE END ADC1_Init 2 */ } static void MX_DMA_Init(void) { /* DMA controller clock enable */ __HAL_RCC_DMA1_CLK_ENABLE(); /* DMA interrupt init */ /* DMA1_Channel1_IRQn interrupt configuration */ HAL_NVIC_SetPriority(DMA1_Channel1_IRQn, 0, 0); HAL_NVIC_EnableIRQ(DMA1_Channel1_IRQn); }
  6. Добрый день. Собственно может у кого есть примеры работы с данной микросхемой. Показания в режиме Normal удается читать. Также читаю угол в режиме Control - но они не совпадают. Не удалось считать регистр 0x92. Шлю 0х92 0х92, в ответ приходит 0х12 0х89. Шляпа какая-то. Ну и записать свою конфигурацию тоже не удаестся. Пишу так: 0х92 0х7Е. Ожидая что в регистр 92 запишется инфа 7Е, но ничего не происходит. Так же интересует, можно ли как-то менять сектор от 0 до максимума? На моем вращающемся трансе это 90 градусов.
×
×
  • Создать...